![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
进击的Coder*
这个作者很懒,什么都没留下…
展开
-
排序算法:冒泡、选择、插入、希尔、快速、归并 -- Java版
冒泡排序 /** 冒泡排序,从小到大 进阶版可添加标志,判断是否已然有序 */ public static void bubbleSort(int[] nums) { int temp; for(int i=0;i<nums.length;i++) { for(int j=i+1;j<nums.length;j++) { if(nums[j]<nums[i]) { temp = nums[i];原创 2021-09-07 18:09:19 · 111 阅读 · 0 评论 -
经典实用算法:回溯算法(含例题)
回溯算法思想回溯算法究其思想而言,十分简单。大部分情况下,可以用于解决类似于搜索的问题。通过枚举所有的解空间,获取满足条件的解。搜索解空间时,如果当前路径满足条件,则继续向下搜索。如果当前路径已不再满足解的条件,可通过剪枝操作去除当前路径,从而避免无效的枚举。0-1背包、8皇后、图着色、全排列等问题,均可用回溯算法来解决。全排列问题给定一个不含重复数字的数组nums,返回其所有可能的全排列。你可以按任意顺序返回答案。题目来源:leetCode输入:nums = [1,...原创 2021-09-07 10:57:07 · 1065 阅读 · 0 评论 -
如何利用部分有序的特性进行二分查找
题目如下:整数数组 nums 按升序排列,数组中的值 互不相同 。在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k+1], ..., nums[n-1], nums[0], nums[1], ..., nums[k-1]](下标 从 0 开始 计数)。例如, [0,1,2,4,5,6,7] 在下标 3 处经旋转后可能变为[4,5,6,7,0,1,2] 。给你 旋转后 的数组.原创 2021-09-06 11:41:08 · 132 阅读 · 0 评论 -
LeetCode:删除链表倒数第N个节点,一趟扫描,2种解法
题目来源:leetcode题目描述:给你一个链表,删除链表的倒数第n个结点,并且返回链表的头结点。进阶:你能尝试使用一趟扫描实现吗?这里,仅给出一趟扫描的两种解法 :缓存、双指针解法1:通过缓存,实现一趟扫描 public ListNode removeNthFromEnd(ListNode head, int n) { Map<Integer, ListNode> map = new HashMap(); int coun..原创 2021-09-03 13:52:27 · 207 阅读 · 0 评论 -
LeetCode:链表系列
题1:删除排序链表中的重复元素 II存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除链表中所有存在数字重复情况的节点,只保留原始链表中没有重复出现的数字。返回同样按升序排列的结果链表。链接:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list-ii解法:思路写在注释里class Solution { public ListNode deleteDuplicates(Li..原创 2021-05-12 10:17:49 · 103 阅读 · 0 评论 -
leetcode:二叉树中的最大路径和
题目来源:leetcode路径 被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。路径和 是路径中各节点值的总和。给你一个二叉树的根节点 root ,返回其 最大路径和 。https://leetcode-cn.com/problems/binary-tree-maximum-path-sum解法:递归,还是要好好理解下递归啊class Solution {..原创 2021-05-11 22:33:56 · 222 阅读 · 0 评论 -
LeetCode:链表是否有环
题目来源:LeetCode给定一个链表,判断链表中是否有环。https://leetcode-cn.com/problems/linked-list-cycle/下面分别给出空间复杂度O(n)的解法和O(1)的解法。解法1:利用Hash表 public boolean hasCycle(ListNode head) { if(head==null || head.next==null) return false; ListNode slow,原创 2021-05-04 10:25:01 · 155 阅读 · 0 评论 -
LeetCode:树的子结构
输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)B是A的子结构, 即 A中有出现和B相同的结构和节点值。来自:leetcode网站剑指offer第26题 树的子结构下面给出两种解法,首先是自己的非递归解法,然后是leetcode一大佬的递归解法。非递归解法:public boolean isSubStructure(TreeNode A, TreeNode B) { if(A==null || B==null) return fal..原创 2021-05-01 23:46:51 · 265 阅读 · 0 评论 -
动态规划实战:算法解析+最优解+路径数+是否可行
题目来源都是LeetCode。题1:在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物?输入: [ [1,3,1], [1,5,1], [4,2,1]]输出: 12解释: 路径 1→3→5→2→1 可以拿到最多价值的礼物动态规划解法如下:class Solution {原创 2021-04-26 15:46:08 · 866 阅读 · 0 评论