
算法
锦鲤儿
这个作者很懒,什么都没留下…
展开
-
攻克十大经典排序算法【代码详细注释】
前言最近在学习算法知识,算法是必须要掌握的东西,而排序算法是最经典的算法知识,重要性就不必多说啦~还在学习中,对学到的知识进行简单的记录,如果有什么问题欢迎大佬指正。一、冒泡排序冒泡排序是最出名的算法之一,从序列的一端开始往另一端冒泡,依次比较相邻两个元素的大小。//冒泡排序,从小到大public void bubblesort(int[] arr) { //外层for循环表示比较的轮次 for(int i=0;i<arr.length-1;i++) { //从第一个元素开始,依次原创 2022-02-12 20:28:21 · 941 阅读 · 0 评论 -
二叉树的遍历Java-前序、中序、后序、层次遍历
一、二叉树的前序遍历题目:给你二叉树的根节点 root ,返回它节点值的前序遍历。https://leetcode-cn.com/problems/binary-tree-preorder-traversal/示例1:输入:root = [1,null,2,3]输出:[1,2,3]示例2:输入:root = []输出:[] public class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(原创 2022-01-24 20:37:07 · 725 阅读 · 0 评论 -
557-反转字符串中的单词(Java)
题目:给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。示例1:输入:“Let’s take LeetCode contest”输出:“s’teL ekat edoCteeL tsetnoc”提示:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。class Solution { public String reverseWords(String s) { //开辟一个新字符 StringBuffer str原创 2022-01-22 10:20:01 · 483 阅读 · 0 评论 -
二叉树-合并二叉树
题目:给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。示例1:注意:合并必须从两个树的根节点开始。解题思路:从两个树的根节点开始合并,对根节点合并之后还有对根节点的左右子树进行合并,很显然,可以使用递归来解决。public class demo { public class TreeNode {原创 2022-01-20 21:15:29 · 285 阅读 · 0 评论 -
链表-链表的中间节点
题目:给定一个头结点为 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。示例1:输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。注意,我们返回了一个 ListNode 类型的对象 ans,这样:ans.val = 3, ans.next.val = 4, ans.next.next.val = 5, 以及 ans.next.next.next = N原创 2022-01-17 09:58:09 · 196 阅读 · 1 评论 -
前缀和算法-和为k的子数组
题目:给定一个整数数组和一个整数 k ,请找到该数组中和为 k 的连续子数组的个数。示例1:输入:nums = [1,1,1], k = 2输出: 2分析:首先想到的滑动窗口算法来解决,但是这里存在负数,指针移动存在多种可能,所以滑动窗口算法不适合该题。可以使用前缀和算法解决。前缀和:顾名思义,就是一个数组的某项下标及某项下标之前的元素的和。解题思路:因为每次计算需要获取前几次的结果进行对比,所以可以使用哈希表的方式进行存储结果。1、初始化一个哈希表、计算前缀和的变量sum、计算满足条件原创 2022-01-15 17:15:13 · 382 阅读 · 1 评论 -
滑动窗口算法-和大于等于 target 的最短子数组
题目:给定一个含有 n 个正整数的数组和一个正整数 target 。找出该数组中满足其和 ≥ target 的长度最小的连续子数组 [numsl, numsl+1, …, numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。https://leetcode-cn.com/problems/2VG8Kg/解题思路:1、设置两个指针,两个指针构成一个窗口,初始时左右指针都指向数组的起始位置;2、声明一个变量统计两指针之间的数字的和;声明一个变量用来保存最小窗口个数;原创 2022-01-14 20:46:19 · 275 阅读 · 1 评论 -
二分查找-给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。
二分查找:给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。示例1:输入:nums = [-1,0,3,5,9,12],target = 9输出:4示例2:输入:nums = [-1,0,3,5,9,12],target = 2输出:-1class Solution { public int search(int[] nums, int target) {原创 2022-01-10 19:29:08 · 704 阅读 · 0 评论