赞
踩
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
说明:
你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?
示例 :
输入: [2,2,1]
输出: 1
先排个序,然后直接从头遍历找只出现了一次的。
class Solution { public: int singleNumber(vector<int>& nums) { sort(nums.begin(), nums.end()); vector<int>::iterator iter = nums.begin(); for (; iter != nums.end(); ) { if (iter+1 == nums.end()) { break; } else if (*iter==*(iter+1)) { iter+=2; } else { break; } } return *iter; } };
用异或,相同的数字异或得到0.而落单的数字与0异或则是自己。
class Solution {
public int singleNumber(int[] nums) {
int num = 0;
for(int i = 0; i < nums.length; i++){
num = num ^ nums[i];
}
return num;
}
}
参考 https://blog.csdn.net/baidu_40931662/article/details/83892506
给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。
你可以假设数组是非空的,并且给定的数组总是存在众数。
示例 1:
输入: [3,2,3]
输出: 3
排个序,然后从头至尾遍历,找到出现次数>n/2的。
class Solution { public: int majorityElement(vector<int>& nums) { sort(nums.begin(), nums.end()); vector<int>::iterator iter = nums.begin(); int result; for (; iter != nums.end(); ) { int num = 0; int temp = *iter; while (iter != nums.end() && *iter == temp) { num++; iter++; } if (num > nums.size()/2) { result = temp; } } return result; } };
摩尔投票法,这种方法是因为题目中说众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。所以设置一个计数器,选定第一个值作为起始值,然后后面的值如果是这个值那么计数加一,如果不等,那么计数减一,当计数器的值为零时,选取当前值作为新值继续计数。因为众数肯定大于1/2所以最后计数器不为零的数肯定是众数。
class Solution { public int majorityElement(int[] nums) { int count = 0; int num = nums[0]; for(int i = 0; i < nums.length; i++){ if(num == nums[i]){ count++; }else{ count--; if(count == 0){ num = nums[i]; count++; } } } return num; } }
参考 https://blog.csdn.net/qq_39032310/article/details/87473917
编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target。该矩阵具有以下特性:
从左上角开始的话,往右往下都是比当前值大,不好控制搜索方向,所以从右上角开始搜索,若比当前值小则往左搜寻,若比当前值大则往下搜寻。
class Solution { public: bool searchMatrix(vector<vector<int>>& matrix, int target) { int h = matrix.size(); if (h == 0) { // matrix为空的情况 return false; } int w = matrix[0].size(); int i = 0, j = w-1; for (;i < h && j >= 0;) { if (matrix[i][j] == target) { return true; } else if (target < matrix[i][j]){ j--; } else { i++; } } return false; } };
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。