模式识别
- 移动左右两头的问题可以考虑双指针
题目
- 给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。
进阶:
尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。
你可以使用空间复杂度为 O(1) 的 原地 算法解决这个问题吗?
最易懂的逻辑 将最后一个元素删掉 并插入到数组第一个位置 但是由于splice方法从根本上来说是将后边所有元素都向后推一个位置 所以时间复杂度比较高 代码如下
1 | var rotate = function(nums, k) { |
- 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
说明:
你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?
1 | /** |
什么是异或?
定义:
1 | 1 ⊕ 1 = 0 |
根据定义我们很容易获得异或两个特性:
恒等律:X ⊕ 0 = X 归零律:X ⊕ X = 0
动态规划可解问题需同时满足以下三个特点:
- 存在最优子结构。
- 存在重复子问题。
- 无后效性。
- 本文作者: Littleki
- 本文链接: https:/littleki.gitee.io/2021/05/26/leetcode/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!