一、预知识点
1、二分查找
2、dp
二、题目
1、33. 搜索旋转排序数组
题目
class Solution {
public:
int search(vector<int>& nums, int target) {
int n=nums.size()-1;
for(int i=0;i<=n;i++){
if(nums[i]==target){
return i;
}
if(nums[n-i]==target){
return n-i;
}
}
return -1;
}
};
2、81. 搜索旋转排序数组 II
题目
class Solution {
public:
int search(vector<int>& nums, int target) {
int n=nums.size()-1;
for(int i=0;i<=n;i++){
if(nums[i]==target||nums[n-i]==target) return true;
}
return false;
}
};
3、153. 寻找旋转排序数组中的最小值
题目
class Solution {
public:
int findMin(vector<int>& nums) {
for(int i=0;i<nums.size()-1;i++){
if(nums[i+1]-nums[i]<0) return nums[i+1];
}
return nums[0];
}
};
4、70. 爬楼梯
题目
class Solution {
public:
int climbStairs(int n) {
if(n<=2) return n;
int a=1,b=2,c;
while(n-->2){
c=a+b;
a=b;
b=c;
}
return c;
}
};
5、509. 斐波那契数
题目
class Solution {
public:
int fib(int n) {
if(n<2) return n;
return fib(n-1)+fib(n-2);
}
};
6、1137. 第 N 个泰波那契数
题目
class Solution {
public:
int tribonacci(int n) {
if(n<2) return n;
if(n==2) return 1;
int a=0,b=1,c=1,d;
while(n-->2){
d=a+b+c;
a=b;
b=c;
c=d;
}
return d;
}
};
7、2006. 差的绝对值为 K 的数对数目
题目
class Solution {
public:
int countKDifference(vector<int>& nums, int k) {
unordered_map<int,int> mp;
int ans=0;
for(auto n:nums){
mp[n]++;
ans+=mp[n+k]+mp[n-k];
}
return ans;
}
};
8、LCP 01. 猜数字
题目
class Solution {
public:
int game(vector<int>& guess, vector<int>& answer) {
return (guess[0]==answer[0])+(guess[1]==answer[1])+(guess[2]==answer[2]);
}
};
9、LCP 06. 拿硬币
题目
class Solution {
public:
int minCount(vector<int>& coins) {
int ans=0;
for(auto i:coins){
ans+=(i+1)/2;
}
return ans;
}
};
10、剑指 Offer II 069. 山峰数组的顶部
题目
class Solution {
public:
int peakIndexInMountainArray(vector<int>& arr) {
int i=-1;
int j=arr.size();
while(i++<j--){
if(arr[i+1]<arr[i]) return i;
if(arr[j-1]<arr[j]) return j;
}
return -1;
}
};
三、收获
四、参考
|