LeetCode——日常刷题
Posted 龍弟-idea
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode——日常刷题相关的知识,希望对你有一定的参考价值。
目录
第一题:118. 杨辉三角
代码实现
class Solution
public List<List<Integer>> generate(int numRows)
//结果
List<List<Integer>> res=new ArrayList<>();
//层数
for(int i=0;i<numRows;i++)
//定义行
List<Integer> row=new ArrayList<Integer>();
//每行的元素数
for(int j=0;j<=i;j++)
//首尾为0
if(j==0||i==j)
row.add(1);
else//取出上一层数据并计算
row.add(res.get(i-1).get(j-1)+res.get(i-1).get(j));
res.add(row);
return res;
其他题解:
class Solution
public List<List<Integer>> generate(int numRows)
//当没有行数时
if(numRows==0)
return null;
//顺序表
List<List<Integer>> res = new ArrayList<>();
//处理第一行
List<Integer> firstRow = new ArrayList<>();
firstRow.add(1);
res.add(firstRow);
//从第二行开始处理
for(int i=1 ; i<numRows ; i++)
//获取上一行prevRow
List<Integer> prevRow = res.get(i-1);
//创建行对象
List<Integer> curRow = new ArrayList<>();
curRow.add(1);//处理每一行第一个元素,为1
//处理每一行中间的元素,杨辉三角里当前元素值等于左上角+右上角
for(int j=1 ; j< i ; j++)
int val = prevRow.get(j) + prevRow.get(j-1);
curRow.add(val);
//处理每一行的结尾,也都是1
curRow.add(1);
res.add(curRow);
return res;
第二题:33. 搜索旋转排序数组
代码实现
class Solution
public int search(int[] nums, int target)
for(int i=0;i<nums.length;i++)
if(nums[i]==target)
return i;
return -1;
第三题:81. 搜索旋转排序数组 II
代码实现
class Solution
public boolean search(int[] nums, int target)
return exit(nums,target);
public boolean exit(int[] nums,int target)
for(int i=0;i<nums.length;i++)
if(nums[i]==target)
return true;
return false;
第四题:153. 寻找旋转排序数组中的最小值
代码实现
class Solution
public int findMin(int[] nums)
int min=Integer.MAX_VALUE;
for(int i=0;i<nums.length;i++)
if(min>nums[i])
min=nums[i];
return min;
第五题:70. 爬楼梯
代码实现
//动态规划
class Solution
public int climbStairs(int n)
int[] dp=new int[n+1];
dp[0]=1;
dp[1]=1;
for(int i=2;i<=n;i++)
dp[i]=dp[i-1]+dp[i-2];
return dp[n];
第六题:509. 斐波那契数
代码实现
//递归
class Solution
public int fib(int n)
if(n==0)
return 0;
else if(n==1)
return 1;
else
return fib(n-1)+fib(n-2);
//动态规划
class Solution
public int fib(int n)
if(n==0)
return 0;
int[] dp=new int[n+1];
dp[0]=0;
dp[1]=1;
for(int i=2;i<=n;i++)
dp[i]=dp[i-1]+dp[i-2];
return dp[n];
第七题:1137. 第 N 个泰波那契数
代码实现
//动态规划
class Solution
public static int tribonacci(int n)
if(n==0) return 0;
if(n==1) return 1;
int[] dp=new int[n+1];
dp[0]=0;
dp[1]=1;
dp[2]=1;
for(int i=3;i<=n;i++)
dp[i]=dp[i-3]+dp[i-2]+dp[i-1];
return dp[n];
第八题:2006. 差的绝对值为 K 的数对数目
代码实现
class Solution
public int countKDifference(int[] nums, int k)
int count=0;
for(int i=0;i<nums.length-1;i++)
for(int j=i+1;j<nums.length;j++)
if(Math.abs(nums[i]-nums[j])==k)
count++;
return count;
第九题:LCP 01. 猜数字
代码实现
class Solution
public int game(int[] guess, int[] answer)
int count=0;
for(int i=0;i<guess.length;i++)
if(guess[i]==answer[i])
count++;
return count;
第十题:LCP 06. 拿硬币
代码实现
class Solution
public int minCount(int[] coins)
int count=0;
for(int i=0;i<coins.length;i++)
if(coins[i]%2==0)
count+=coins[i]/2;
else
count+=coins[i]/2+1;
return count;
class Solution
public int minCount(int[] coins)
int count=0;
for(int i:coins)
if(i%2==0)
count+=i/2;
else
count+=i/2+1;
return count;
以上是关于LeetCode——日常刷题的主要内容,如果未能解决你的问题,请参考以下文章
Leetcode刷题Python LeetCode 2038. 如果相邻两个颜色均相同则删除当前颜色