本文部分方法图片来源于互联网上他人,这里纯属个人总结学习用。
动态规划
剑指 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;
}
}