发现了中文版的leetCode,网址在https://leetcode-cn.com
70. 爬楼梯
题目地址:https://leetcode-cn.com/problems/climbing-stairs/submissions/
解题思路:最简单的动态规划题目,状态方程与斐波那契数列相同。
public int climbStairs(int n) {
if(n < 2) return n;
int s1 = 1,s2 = 2;
for(int i =2;i < n;i++){
int cur = s1 + s2;
s1 = s2;
s2 = cur;
}
return s2;
}
167. 两数之和 II - 输入有序数组
题目地址:https://leetcode-cn.com/problems/two-sum-ii-input-array-is-sorted/submissions/
解题思路:双指针法
public int[] twoSum(int[] numbers, int target) {
int len = numbers.length;
int[] res = new int[2];
if(len <=1) return res;
int l = 0;
int r = len -1;
while(l < r){
if(numbers[l] + numbers[r] == target){
res[0] = l+1;
res[1] = r+1;
return res;
}else if(numbers[l] + numbers[r] > target){
r--;
}else{
l++;
}
}
return res;
}
202. 快乐数
class Solution {
public boolean isHappy(int n) {
if(n==7 || n==1) return true;
if(n<10) return false;
int sum = 0;
while(n>=1){
int d = n%10;
sum+= d*d;
n/=10;
}
return isHappy(sum);
}
}
455.分发饼干
题目地址:https://leetcode-cn.com/problems/assign-cookies/submissions/
解题思路:贪心算法,从小的孩子,用小的饼干满足。
public int findContentChildren(int[] g, int[] s) {
Arrays.sort(g);
Arrays.sort(s);
int si = 0;
int gi = 0;
while(gi<g.length && si<s.length){
if(g[gi]<=s[si]){
gi++;
}
si++;
}
return gi;
}
680.验证回文字符串 Ⅱ
题目地址:https://leetcode-cn.com/problems/valid-palindrome-ii/
解题思路:正常验证回文串,如果错误,给一次复活的机会。
public boolean validPalindrome(String s) {
int start = 0;
int end = s.length() - 1;
while(start<end){
if(s.charAt(start)!=s.charAt(end)){
return isPalindrome(s,start+1,end)||isPalindrome(s,start,end-1);
}
start++;
end--;
}
return true;
}
public boolean isPalindrome(String s,int start,int end){
while(start < end){
if(s.charAt(start++)!=s.charAt(end--)){
return false;
}
}
return true;
}