随笔分类 - 算法
摘要:给定一个字符串 s ,请你找出其中不含有重复字符的最长子串的长度。 注意:containsKey class Solution { public int lengthOfLongestSubstring(String s) { Map<Character, Integer> map = new Ha
阅读全文
摘要:运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制 。实现 LRUCache 类: LRUCache(int capacity) 以正整数作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则
阅读全文
摘要:给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 注意:List里面的list记得转型【父类引用指向子类对象】 class Solution { public List<List<Integer>> permute(int[] nums) { Lis
阅读全文
摘要:【某下标处进行了旋转】整数数组 nums 按升序排列,数组中的值 互不相同 。 在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k+1], ..., nums[n-1], nums[0], nu
阅读全文
摘要:n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。 给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案。 每一种解法包含一个不同的 n 皇后问题 的棋子放置方案,该方案中 'Q' 和 '.' 分别代表了皇后和空位。 来源:力扣(LeetCod
阅读全文
摘要:给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。 来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/rever
阅读全文
摘要:〇、目录 一、套路 二、题型 (一)爬楼梯 1、爬楼梯 class Solution { public int climbStairs(int n) { } } 五部曲:确定数组、确定递推公式、dp数组初始化、确定遍历顺序、举例推导 方法1: 循环/递归 class Solution { publi
阅读全文
摘要:// 计算从起点 start 到终点 target 的最近距离 int BFS(Node start, Node target) { Queue<Node> q; // 核心数据结构 Set<Node> visited; // 避免走回头路 q.offer(start); // 将起点加入队列 vi
阅读全文
摘要:一、目录 反转字符串 反转字符串Ⅱ 替换空格 翻转字符串里的单词 左旋转字符串 实现strStr()/indexOf()字符串位置寻找 重复的子串 反转字符串 NC17 最长回文子串 NC1 大数加法 NC55 最长公共前缀 NC52 括号序列 NC149 kmp算法 NC28 最小覆盖子串 NC4
阅读全文
摘要:1、NC117 合并二叉树 public TreeNode mergeTrees (TreeNode t1, TreeNode t2) public class Solution { /** * * @param t1 TreeNode类 * @param t2 TreeNode类 * @retur
阅读全文
摘要:动态规划解题套路框架 学习计划: 最长回文子序列 〇、必读文章 1、数据结构和算法学习指南(学习算法和刷题的框架思维) 了解数据结构的操作和遍历(迭代or递归) 从树刷起,结合框架思维,有利于理解(回溯、动态规划、分治等) 2、动态规划详解(动态规划解题套路框架) 过程:递归的暴力解法 -> 带备忘
阅读全文
摘要:1、最长无重复子数组--返回数组长度 public int maxLength (int[] arr) 解法1:set import java.util.*; public class Solution { /** * * @param arr int整型一维数组 the array * @retu
阅读全文
摘要:零、目录 一、步骤 贪心算法一般分为如下四步: 将问题分解为若干个子问题找出适合的贪心策略求解每一个子问题的最优解将局部最优解堆叠成全局最优解 二、题目 1、455. 分发饼干 思路1:优先考虑胃口,先喂饱大胃口 import java.util.*; class Solution { public
阅读全文
摘要:〇、算法介绍 1、三要素:路径、选择列表、结束条件 递归前做选择,递归后撤销选择 2、常见题型 组合问题 排序问题(全排列) 子集问题 棋盘问题(n皇后、数独) 字符串切割问题 3、代码提取 void backtracking(){ if(终止条件) { 记录结果; return; } for(集合
阅读全文