伴你如风、护你如影|

xzh-yyds

园龄:3年8个月粉丝:0关注:2

随笔分类 -  leetcode

leetcode394-字符串解码
摘要:字符串解码 递归 class Solution { public String decodeString(String s) { StringBuilder sb = new StringBuilder(); int i = 0, n = s.length(); while(i < n){ if(s
16
0
0
leetcode706-设计哈希映射
摘要:设计哈希映射 哈希+链表 class MyHashMap { class Pair{ int key; int value; public Pair(int key, int value){ this.key = key; this.value = value; } } LinkedList arr
16
0
0
leetcode143-重排链表
摘要:重排链表 快慢指针+翻转链表 通过快慢指针找到中间节点,然后将后半段进行翻转,然后与前半段进行拼接。 class Solution { public void reorderList(ListNode head) { if(head == null || head.next == null) ret
19
0
0
leetcode440-字典序的第K小数字
摘要:字典序的第K小数字 字典树 对于给定的最大数n和剩余数字k,维护一个当前的字典树前缀cur,先让k减去最小的数字1,然后计算以cur为开头的字典树的容量。计算得出的字典树的容量大于k,说明k无法容纳整棵字典树,那么就仅仅取一个数(即cur10),更新cur = cur10,缩小字典树的范围,继续以c
13
0
0
leetcode226-翻转二叉树
摘要:翻转二叉树 递归 class Solution { public TreeNode invertTree(TreeNode root) { if(root == null) return root; TreeNode l = invertTree(root.left), r = invertTree
50
0
0
leetcode225-用队列实现栈
摘要:用队列实现栈 class MyStack { LinkedList<Integer> list = new LinkedList<>(); public MyStack() { } public void push(int x) { list.add(x); } public int pop() {
13
0
0
leetcode223-矩形面积
摘要:矩形面积 计算重叠面积 重叠面积计算方法如下:重叠部分如果有的话肯定是一个矩形,这个矩形的左边界是两个矩形的左边界取较大值,右边界是两个矩形的右边界取较小值。上下边界同理。这样可以计算出重叠部分的面积,返回结果为总面积减去重叠部分面积即可。 class Solution { public int c
24
0
0
leetcode222-完全二叉树的节点个数
摘要:完全二叉树的节点个数 递归 class Solution { public int countNodes(TreeNode root) { if(root == null) return 0; return countNodes(root.left)+countNodes(root.right)+1
26
0
0
leetcode97-交错字符串
摘要:交错字符串 dp 定义一个二维的dp数组,表示s1选取 i 个字符和s2选取 j 个字符组成s3的前 i+j 个字符能否成立。 dp递归方程: 如果i == 0 && j == 0,表示没有任何字符,true 如果i == 0,那么dp[i][j] = dp[i][j-1] && s2.charAt
28
0
0
leetcode80-删除有序数组中的重复项 II
摘要:删除有序数组中的重复项 II class Solution { public int removeDuplicates(int[] nums) { int cnt = 0, index = 0; for(int i = 0; i < nums.length; i++){ if(i == 0){ cn
15
0
0
leetcode68-文本左右对齐
摘要:文本左右对齐 模拟 先对所有字符串进行一次遍历,保证每个字符串之间有一个空格,然后对字符串分组,确定字符串的位置。 然后对每一组的字符串分配空格:遍历这一组的字符串长度,计算出剩余的空格总数,并根据空格总数分配出固有的空格和多出来的空格数量,依次添加。 注意:最后一行字符之间只能有一个空格,需要单独
12
0
0
leetcode54-螺旋矩阵
摘要:螺旋矩阵 class Solution { public List<Integer> spiralOrder(int[][] matrix) { List<Integer> list = new ArrayList<>(); int m = matrix.length, n = matrix[0].
14
0
0
leetcode48-旋转图像
摘要:旋转图像 原地旋转 将正方形的数组切分成一个个圈,然后对这个圈进行移动 class Solution { public void rotate(int[][] matrix) { int n = matrix.length; for(int i = 0; i < n/2; i++){ rotate(
15
0
0
leetcode37-解数独
摘要:解数独 回溯+哈希 使用哈希表记录行、列和块的状态,然后对所有空缺的位置进行0-9的回溯。 class Solution { boolean line[][] = new boolean[9][9]; boolean column[][] = new boolean[9][9]; boolean b
26
0
0
leetcode43-字符串相乘
摘要:字符串相乘 逐位相乘 class Solution { public String multiply(String num1, String num2) { if(num1.equals("0") || num2.equals("0")) return "0"; int m = num1.lengt
15
0
0
leetcode655-输出二叉树
摘要:输出二叉树 DFS class Solution { List<List<String>> res = new ArrayList<>(); int m, n, height; public List<List<String>> printTree(TreeNode root) { height =
19
0
0
leetcode264-丑数 II
摘要:丑数 II 优先队列 维护一个优先队列。先取出最小的数字,将其乘以2、3、5,如果发现没有重复的话就装入优先队列中,需要用到set进行去重。 class Solution { public int nthUglyNumber(int n) { Set<Long> set = new HashSet<
21
0
0
leetcode1224-最大相等频率
摘要:最大相等频率 记录状态 cnt数组记录单个数字出现的次数,sum数据记录某一种次数出现的总和。 遍历数据,对于某一个元素来说,首先将cnt数组该元素的值加一,然后记录这个元素出现次数,更新sum数据,max用于维护最大次数总和。 接下来判断是否需要更新最大的长度,以下情况需要进行更新: 当max =
21
0
0
leetcode62-不同路径
摘要:不同路径 图dp class Solution { public int uniquePaths(int m, int n) { int dp[][] = new int[m][n]; for(int i = 0; i < m; i++){ for(int j = 0; j < n; j++){ i
14
0
0
leetcode55-跳跃游戏
摘要:跳跃游戏 dp 记录能到达的最大路径,然后进行遍历。 如果发现当前的位置已经超过了能到达的最大值,那么表明此处无法到达,返回false。 如果发现当前位置能跳跃到更远的距离,那么更新最大值 class Solution { public boolean canJump(int[] nums) { i
24
0
0
点击右上角即可分享
微信分享提示
深色
回顶
展开