0
点赞
收藏
分享

微信扫一扫

剑指offer个人笔记

言午栩 2022-02-07 阅读 54

本文部分方法图片来源于互联网上他人,这里纯属个人总结学习用。

动态规划

剑指 Offer 48. 最长不含重复字符的子字符串

  • 定义一个哈希表来完成此任务
  • 一个长度为N的字符串,其子字符串长度为(1+N)N/2
  • 遍历输入字符串s
class Solution 
{
    public int lengthOfLongestSubstring(String s) 
    {        
         Map<Character,Integer> map = new HashMap<>();
         int res = 0,tmp = 0;
         for(int j = 0;j<s.length();j++)
         {
             int i =  map.getOrDefault(s.charAt(j),-1);//获取索引i 如果该key值在map中,返回其位置,否则返回-1
             map.put(s.charAt(j),j);//更新哈希表
             tmp = tmp<j-i?tmp+1:j-i;
             res = Math.max(res,tmp);
         }
         return res;
    }
}

第16天 排序(简单)

剑指 Offer 45. 把数组排成最小的数

  • 对数组arr进行排序
  • 将结果保存数组res中
class Solution {
    public int[] getLeastNumbers(int[] arr, int k) {
        int [] res = new int[k];
        //java自带排序算法
        Arrays.sort(arr);
        for(int i = 0;i<k;i++)
        {
            res[i] = arr[i];
        }
        return res;
    }
}
举报

相关推荐

0 条评论