2021-03-27

leetcode 刷题周总结

  1. #55 跳跃游戏 中判断当前数组元素能够到达的最大位置:i + nums[i]

  2. #118 杨辉三角 List(这是一个接口)集合中有一个取元素的方法经常用到:E get(int index)---返回此list中指定位置的元素

    Object[] toArray()---将一个list集合转换为一个数组

  3. #191 位1的个数 n = n & (n - 1);这个式子可以依次从后往前将整数 n 的二进制表示形式中 1 置换为 0

    1111 & 1110 = 1110  
    A = 0011 1100
    B = 0000 1101
    
    • 位运算:& 、| 、^ 、~(非) 、<< 、>> 、>>>
      • &:两个整数二进制形式对应位都为 1,则结果为 1,其他情况为 0 A & B 得到12,即0000 1100
      • |:两个整数二进制形式对应位只要有一个为 1,则结果为 1,都为 0,则结果为 0 A | B 得到61,即 0011 1101
      • ^:两个整数二进制形式对应位相异(一个为 0,一个为 1)的情况,则结果为 1,其他情况为 0(两个都为 1或者两个都为 0的情况)A ^ B 得到49,即 0011 0001
      • ~:单目运算符,对一个整数的二进制位的每一位取反,该位为 0 ,则变为 1,该位为 1,则变为 0 〜A 得到-61,即1100 0011
      • <<:按位左移运算符。左操作数按位左移右操作数指定的位数 A << 2得到240,即 1111 0000
      • >>: 按位右移运算符。左操作数按位右移右操作数指定的位数 A >> 2得到15即 1111
      • >>>: 按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充 A>>>2得到15即0000 1111
  4. #55 合并区间 中给区间排序,使用Lambda表达式的方式简化程序 :

    Arrays.sort(intervals, new Comparator<int[]>() {
        public int compare(int[] interval1, int[] interval2) {
            return interval1[0] - interval2[0];
        }
    });
    
    //Lambda表达式版本
    // 先按照区间起始位置排序
    Arrays.sort(intervals, (v1, v2) -> v1[0] - v2[0]);
    
  5. #341 扁平化嵌套列表迭代器] 中利用到了Stack,总结一下栈的常用方法:

    boolean empty();		//判断栈是否为空,空则返回true
    E peek();				//获取栈顶元素,但不将其删除
    E pop();				//获取栈顶元素,并将其从栈顶部移除
    E push(E item);			//将一个元素加入到栈中
    int search(Object o);	//返回一个对象元素在栈中的位置,最上面的元素距离为1,依次往下类推
    

    此外,Stack是Vector的直接子类,还从Vector中继承了很多方法也可以使用,单数要注意一些细节:eg:Vector中有的boolean add(E e)方法和Stack中的 E push(E item)方法作用一样,返回值不一样,具体是用时得看看java的帮助文档

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值