剑指 Offer 03. 数组中重复的数字
数组下表对应元素记录个数即可
class Solution {
public:
int findRepeatNumber(vector<int>& nums) {
int leng=nums.size();
int a[leng];
for(int i=0;i<leng;i++){
a[i]=0;
}
int ans=0;
for(int i=0;i<leng;i++){
if(a[nums[i]]==0) a[nums[i]]++;
else {ans=nums[i];break;}
}
return ans;
}
};
剑指 Offer 53 - I. 在排序数组中查找数字 I
二分找到元素位置,然后向前后遍历即可
class Solution {
public:
int search(vector<int>& nums, int target) {
if(nums.size()==0) return 0;
int ans=0;
int l=0;
int r=nums.size();
r--;
int mid;
while(l<r){
mid=(l+r)/2;
if(nums[mid]<target) l=mid+1;
else if(nums[mid]==target) {l=mid;break;}
else r=mid;
}
for(int i=l;i>=0;i--){
if(nums[i]==target) l=i;
else break;
}
for(int i=l;i<nums.size();i++){
if(nums[i]==target) ans++;
else break;
}
return ans;
}
};
剑指 Offer 53 - II. 0~n-1中缺失的数字
直接遍历判断即可
class Solution {
public:
int missingNumber(vector<int>& nums) {
int ans=nums.size();
for(int i=0;i<ans;i++){
if(nums[i]!=i){ans=i;break;}
}
return ans;
}
};