坚持学做算法题

leetcode350:给定两个数组求其交集

进阶1:如果给定数组是排好顺序的,怎样优化你的解法呢

进阶2:如果其中一个数组的长度远远小于另一个数组,使用哪个解法更好

进阶3:,,,

1:求交集可以看成是一个映射题,采用map的方式记录长度更小的数组的信息,《元素key:出现的次数value》

学会使用一个map的新方法:getOrDefault(Object key, Object default) 输入一个key,如果存在则返回value,否则给该key值一个默认value

学会从一个更长的数组中提取出需要的部分,Arrays.copyOfRange(数组,int from, int to)

2:对两个排好序的数组,找相同值时,可以使用双指针移动法

学会利用递归法取到传入两个数组中的min和max长度,无需创建新数组占用空间

int[] sendTwoArrays(int[] nums1, int[] nums2) {

  if(nums1.length > nums2.length) {

    return sendTwoArrays(int[] nums2, int[] nums1)

  }

}

这样就保证了传入的一定是nums1长度最小。

code14 求字符串数组最长公共前缀

注意传入值的校验,避免多余的循环比较。

code122 买卖股票的最佳时机2

 

code06 Z字形变换(传一个字符串和一个要求变换的行数)

注意:

1、行数为1时,直接返回原字符串就行了

2、因为初始化字符串数组时,默认值为null,如果不使用Arrays.fill(arr, “”)填充数组值的话,要注意盘空,否则后面用append拼接的时候,会混入null

2.1、判空两个地方

  a、每个下标第一次赋值时:

if (StringUtils.isEmpty(strs[cur])) {
         strs[cur] = String.valueOf(s.charAt(i));
     } else {
          strs[cur] += s.charAt(i);
      }

  b、append时str为null就判断过滤掉不进入

posted @ 2020-08-30 17:27  gywfight  阅读(121)  评论(0编辑  收藏  举报