旋转数组
- 给你一个数组,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。
- 解法1 使用临时数组
1 | class Solution://使用临时数组 python实现 |
- 解法2 多次反转
1 | class Solution {//多次反转 |
- 解法3 环形旋转
1 | //环形旋转 把数组看作是环形的,每一个都向后移动k位 |
数组去重
- 给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 ,返回 true ;如果数组中每个元素互不相同,返回 false 。
- 解法1 set集合
1 | public boolean containsDuplicate1(int[] nums) { |
解法2 sort排序
1
2
3
4
5
6
7
8
9
10
11
12public boolean containsDuplicate2(int[] nums) {
//先用sort排序,查找重复元素
Arrays.sort(nums);
for(int i=1;i<nums.length;i++){
if(nums[i-1]==nums[i]){
return true;
}
}
return false;
} //时间复杂度:O(NlogN),其中 N为数组的长度。
//空间复杂度:O(logN),其中 N为数组的长度。
}只出现一次的数字
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
说明:算法具有线性时间复杂度。不使用额外空间来实现
1 | public int singleNumber(int[] nums) { |
```