随笔分类 - java版算法
力扣
差分数组
摘要:差分数组的主要适用场景是频繁对原始数组的某个区间的元素进行增减。 比如说,我给你输入一个数组 nums,然后又要求给区间 nums[2..6] 全部加 1,再给 nums[3..9] 全部减 3,再给 nums[0..4] 全部加 2,再给... 一通操作猛如虎,然后问你,最后 nums 数组的值是
阅读全文
完整的合并有序链表(包括节点定义 生成链表 合并)
摘要:1.定义节点 public class ListNode { int val; ListNode next; public ListNode() { } public ListNode(int val) { this.val = val; } public ListNode(int val, Lis
阅读全文
动态规划理解
摘要:1.卡尔算法讲解 2.B站背包讲解 1.案例 2.动态过程 3.归纳 4.代码 public class CodeBag { public static void main(String[] args) { int[] weight = {1, 3, 4}; int[] value = {15, 2
阅读全文
滑动窗口
摘要:https://leetcode.cn/problems/find-all-anagrams-in-a-string/solution/hua-dong-chuang-kou-tong-yong-si-xiang-jie-jue-zi-/
阅读全文
归并求小和
摘要:public class SmallSum { public static int sum=0; public static void main(String[] args) { //int[] arr={1,3,4,2,5}; int[] arr={1,3}; process(arr,0,arr.
阅读全文
递归求最值
摘要:public class RecSort { public static void main(String[] args) { int[] arr={3,1,5,2,4,-1}; int rec = rec(arr, 0, arr.length - 1); System.out.println(re
阅读全文
归并排序
摘要:public static void main(String[] args) { int[] arr={3,1,5,2,4,-1}; rec(arr,0,arr.length-1); for (int i : arr) { System.out.println(i); } } public stat
阅读全文
反转链表
摘要:https://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca?tpId=13&tqId=23286&ru=%2Fpractice%2Ff9f78ca89ad643c99701a7142bd59f5d&qru=%2Fta%2Fco
阅读全文
删除链表的节点
摘要:https://www.nowcoder.com/practice/f9f78ca89ad643c99701a7142bd59f5d?tpId=13&tqId=2273171&ru=%2Fpractice%2F75e878df47f24fdc9dc3e400ec6058ca&qru=%2Fta%2F
阅读全文
剑指offer算法题刷题总结
摘要:1.题型(找出数组中重复的数字) 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 来源:力扣(LeetCode)链接:https://leetcode-cn.c
阅读全文
回溯算法解题模板
摘要:1,回溯算法解决字符串的排列其实就是排列组合,我们可以把它想象成为一棵n叉树(n是s的长度),然后每一个节点都要从字符串中选择一个字符,但注意不能选择重复的,比如在一个节点选择了a,那么他的子孙节点都不能再选择a了 作者:sdwwld链接:https://leetcode-cn.com/proble
阅读全文
平衡二叉树
摘要:输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。 示例 1: 给定二叉树 [3,9,20,null,null,15,7] 返回 true 。 示例 2: 给定二叉树 [1,2,2,3,3,null,null,4,4] 返
阅读全文
连续子数组的最大和
摘要:输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。 要求时间复杂度为O(n)。 示例: 输入: nums = [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。 动态规划 class Solutio
阅读全文
两个链表的第一个公共节点
摘要:输入两个链表,找出它们的第一个公共节点。 如下面的两个链表: 在节点 c1 开始相交。 解法1 /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListN
阅读全文
最小的k个数
摘要:输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。 1.常规解法 class Solution { public int[] getLeastNumbers(int[] arr, int k) { Arrays.s
阅读全文
顺时针打印矩阵
摘要:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。 示例 1: 输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]示例 2: 输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]输
阅读全文
对称的二叉树
摘要:请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。 例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 /** * Definition for a binary tree node. * public class TreeNode { * int
阅读全文