数组的遍历

485. 最大连续1的个数

image.png

题解

  1. class Solution {
  2. public int findMaxConsecutiveOnes(int[] nums) {
  3. int max=0,count=0;
  4. for(int i=0;i<nums.length;i++){
  5. if(nums[i]==1){
  6. count++;
  7. }else{
  8. max=Math.max(count,max);
  9. count=0;
  10. }
  11. }
  12. return Math.max(count,max);
  13. }
  14. }

这题过于简单,就不一一说明,唯一注意的点,就是到最后为一,且数出来的数可能比记录的数大。

495. 提莫攻击

image.png

题解

  1. class Solution {
  2. public int findPoisonedDuration(int[] timeSeries, int duration) {
  3. if(timeSeries.length<1){
  4. return 0;
  5. }
  6. int sum=0;
  7. for(int i=1;i<timeSeries.length;i++){
  8. if(timeSeries[i]-timeSeries[i-1]>=duration){
  9. sum+=duration;
  10. }else{
  11. sum+=timeSeries[i]-timeSeries[i-1];
  12. }
  13. }
  14. return sum+duration;
  15. }
  16. }

二维数组及滚动数组

118、杨辉三角形

image.png
示例:

输入: 5 输出: [ 1 ], [ 1 , 1 ], [ 1 , 2 , 1 ], [ 1 , 3 , 3 , 1 ],

  1. [ 1 , 4 , 6 , 4 , 1]

杨辉三角是刚学C语言的时候就做过的一道题了,这还是挺简单的,网上也有很多的题解,下面是我的题解,就不做过多赘述了。

题解

class Solution {
    public List<List<Integer>> generate(int numRows) {
        List<List<Integer>> res=new ArrayList<>(numRows);
        for(int i=0;i<numRows;i++){
            List<Integer> nums=new ArrayList<Integer>(i+1);
            for(int j=0;j<i+1;j++){
                if(j==0||j==i){
                    nums.add(1);
                }else{
                    List<Integer> num=res.get(i-1);
                    nums.add(num.get(j-1)+num.get(j));
                }
            }
            res.add(nums);
        }
        return res;
    }
}