题目OJ链接:136. 只出现一次的数字
【题目分析】这个题我们可以通过异或来求。两个相同的数异或之后为0,让数组中的数全部异或。最后得到的就是单出来的数字。于是我们可以得到以下代码:
class Solution {
public int singleNumber(int[] nums) {
int ret = nums[0];
for(int i = 1;i < nums.length;i++){
ret ^= nums[i];
}
return ret;
}
}
题目OJ链接:75. 颜色分类
【题目分析】这个题我们本来可以用sort直接解决,但是题目不让用[doge].那我们用冒泡排序法:
class Solution {
public void sortColors(int[] nums) {
for(int i = 0;i < nums.length-1;i++){
for(int j = 0;j < nums.length - i - 1;j++){
if(nums[j]>nums[j+1]){
int temp = nums[j];
nums[j] = nums[j+1];
nums[j+1] = temp;
}
}
}
}
}
至于排序,我们后续的学习会遇到。我们将系统学习排序有关的内容。
题目OJ链接:215. 数组中的第K个最大元素
【题目分析】我首先想到的是用冒泡排序法将数组排序,然后在返回第k个值。但是尝试了之后,发现冒泡排序法的时间复杂度过高。只能先用Arrays.sort(nums);(此题也是排序有关的问题,以后学完了排序会返回来重新写这个题。)
class Solution {
public int findKthLargest(int[] nums, int k) {
Arrays.sort(nums);
return nums[nums.length - k];
}
}