| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> LeetCode每日一题10.29-11.9 -> 正文阅读 |
|
[数据结构与算法]LeetCode每日一题10.29-11.9 |
2021.10.29?335. 路径交叉题目描述给你一个整数数组 distance 。 从 X-Y 平面上的点?(0,0)?开始,先向北移动 distance[0] 米,然后向西移动 distance[1] 米,向南移动 distance[2] 米,向东移动 distance[3] 米,持续移动。也就是说,每次移动后你的方位会发生逆时针变化。 判断你所经过的路径是否相交。如果相交,返回 true ;否则,返回 false 。 思路枚举可能产生相交的几种情况 1.d[i] 与 d[i - 3]d[i?3] 发生相交:此时满足 d[i] >= d[i - 2]d[i]>=d[i?2],同时 d[i - 1] <= d[i - 3]d[i?1]<=d[i?3]; 2.d[i] 与 d[i - 4]d[i?4] 发生相交:此时满足 d[i - 1] = d[i - 3]d[i?1]=d[i?3],同时 d[i] + d[i - 4] >= d[i - 2]d[i]+d[i?4]>=d[i?2]; 3.d[i]d[i] 与 d[i - 5]d[i?5] 发生相交:此时满足d[i - 1] <= d[i - 3]d[i?1]<=d[i?3],同时 d[i - 2] > d[i - 4]d[i?2]>d[i?4],同时 d[i] + d[i - 4] >= d[i - 2]d[i]+d[i?4]>=d[i?2],同时 d[i - 1] + d[i - 5] >= d[i - 3]d[i?1]+d[i?5]>=d[i?3]。
2021.10.30?260. 只出现一次的数字 III题目描述给定一个整数数组?nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。你可以按 任意顺序 返回答案。 进阶:你的算法应该具有线性时间复杂度。你能否仅使用常数空间复杂度来实现? 先看一个简单的题136.只出现一次的数字 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?(异或)
思路哈希表、排序等等都不符合线性时间复杂度+空间复杂度O(1) 使用异或 利用除答案以外的元素均出现两次,我们可以先对 numsnums 中的所有元素执行异或操作,得到 sumsum,sumsum 为两答案的异或值(sumsum 必然不为 00)。 然后取 sumsum 二进制表示中为 1 的任意一位 k,sumsum 中的第 k?位为 1?意味着两答案的第 k?位二进制表示不同。 对 numsnums 进行遍历,对第 k 位分别为 0和 1的元素分别求异或和(两答案必然会被分到不同的组),即为答案。
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 9:37:09- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |