leetcode刷题笔记

数组篇

119.杨辉三角||

 解答:

   算法思路:1.建一个二维链表记录总的

                     2.双层循环并建立单链表记录杨辉三角的每一行

                     3.返回目标行

package shuzu_test.getRow;

import java.util.ArrayList;
import java.util.List;
/**119.杨辉三角形||
 * 算法思想:1.循环记录单链表
 *         2.**/
public class Solution {
    public List<Integer> getRow(int rowIndex) {
        List<List<Integer>> list1 = new ArrayList<List<Integer>>();  //记录总的
        for (int i = 0; i <= rowIndex; i++) {
            List<Integer> list2 = new ArrayList<>(); //建立单链表用于记录杨辉三角的每一行
            for (int j = 0; j <= i; j++) {
                if (j == 0 || j == i){
                    list2.add(1);
                }else{
                    list2.add(list1.get(i - 1).get(j-1) + list1.get(i - 1).get(j));//取上一行的左上方和右上方的和
                }
            }
            list1.add(list2);
        }
        return list1.get(rowIndex);
    }
}

小结: 计算目标行中间值为左上方和右上方的和的时候注意list1.get(i-1).get(j-1)的指针位置

485. 最大连续 1 的个数

解法:暴力解

package shuzu_test.findMaxConsecutiveOnes;

public class Solution_test {
    public int findMaxConsecutiveOnes(int[] nums) {
        int max = 0, sum = 0;   //max记录最大连续1的个数
        for(int i = 0; i< nums.length; i++){
            sum = (sum + 1) * nums[i];       //sum 记录连续1的个数
            max = max >= sum ? max : sum;    //max是否大于sum,如果大于就返回max否则返回sum
        }
        return max;
    }
}

 小结:遇见0时,利用sum = (sum+1) * nums[i]归0,重新计数

189. 轮转数组

给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。

示例 1:

输入: nums = [1,2,3,4,5,6,7], k = 3
输出: [5,6,7,1,2,3,4]
解释:
向右轮转 1 步: [7,1,2,3,4,5,6]向右轮转 2 步: [6,7,1,2,3,4,5]
向右轮转 3 步: [5,6,7,1,2,3,4]

解法:调用转换函数,减少时间复杂度

public class Solution {
    public void rotate(int[] nums, int k) {
    
        int n = nums.length;
        k%=n;  /*k=k%n;*/
        reverse(nums,0,n-1);
        reverse(nums,0,k-1);
        reverse(nums,k,n-1);

    }
    private void reverse(int[] nums, int start, int end){
        for(int i = start, j = end; i<j; i++,j--){
            int temp = nums[i];
            nums[i] = nums[j];
            nums[j] = temp;
        }

    }
}

小结:直接暴力轮转,容易造成超时

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值