0 前言
现在写的Leetcode程序大多不符合题目要求,现阶段只是把题目刷过,后面重刷时会严格按照题目要求进行解答,并重写博客,争取创作出更有价值,更能帮助初学者的内容。
1 学习内容 一维数组
数组是一种简单数据结构,下标从0开始。
2 Leetcode 刷题
2.1 搜索数组中的元素
相关题目
以上三道题十分类似,都是遍历搜索数组后,找出符合要求的元素后返回值。
这里只附上第一道题的cpp代码。
class Solution {
public:
int search(vector<int>& nums, int target) {
for(int i = 0; i<nums.size(); ++i){
if(nums[i]==target){
return i;
}
}
return -1;
}
};
2.2 fibonacci 类型题
需要注意的是,爬楼梯问题中,由于每次只能走一阶楼梯或者两阶楼梯,所以到达第n阶楼梯的方法就等于到达第n-1阶楼梯与第n-2阶楼梯的方法数之和,符合f(n) = f(n-1) + f(n-2) 的表达式。因此就巧妙地转化为Fibonacci 数列问题。
附上爬楼梯的cpp源码。
class Solution {
public:
int f[100];
int climbStairs(int n) {
f[0] = f[1] =1;
for(int i = 2; i < n + 1; ++i){
f[i] = f[i-1] + f[i-2];
}
return f[n];
}
};
2.3 其他类型题
相关题目
以上两道题目通过遍历数组中的元素,判断是否满足题设条件后即可做出。
第1题cpp源码:
class Solution {
public:
int countKDifference(vector<int>& nums, int k) {
int counts_num = 0;
for(int i = 0; i < nums.size(); ++i){
for(int j = i + 1; j < nums.size(); ++j){
if(abs(nums[i]-nums[j])==k){
counts_num += 1;
}
}
}
return counts_num;
}
};
第2题cpp源码:
class Solution {
public:
int minCount(vector<int>& coins) {
int nums_to_coins = 0;
for(int i = 0; i < coins.size(); ++i){
nums_to_coins += (coins[i] + 1) / 2;
}
return nums_to_coins;
}
};