![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
leetcode
进击的Coder*
这个作者很懒,什么都没留下…
展开
-
经典实用算法:回溯算法(含例题)
回溯算法思想回溯算法究其思想而言,十分简单。大部分情况下,可以用于解决类似于搜索的问题。通过枚举所有的解空间,获取满足条件的解。搜索解空间时,如果当前路径满足条件,则继续向下搜索。如果当前路径已不再满足解的条件,可通过剪枝操作去除当前路径,从而避免无效的枚举。0-1背包、8皇后、图着色、全排列等问题,均可用回溯算法来解决。全排列问题给定一个不含重复数字的数组nums,返回其所有可能的全排列。你可以按任意顺序返回答案。题目来源:leetCode输入:nums = [1,...原创 2021-09-07 10:57:07 · 1087 阅读 · 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 · 141 阅读 · 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 · 214 阅读 · 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 · 112 阅读 · 0 评论 -
leetcode:二叉树中的最大路径和
题目来源:leetcode路径 被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。路径和 是路径中各节点值的总和。给你一个二叉树的根节点 root ,返回其 最大路径和 。https://leetcode-cn.com/problems/binary-tree-maximum-path-sum解法:递归,还是要好好理解下递归啊class Solution {..原创 2021-05-11 22:33:56 · 226 阅读 · 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 · 167 阅读 · 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 · 274 阅读 · 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 · 931 阅读 · 0 评论 -
利用前序、中序建立二叉树
二叉树前序遍历特点:1. 遍历根节点;2. 递归遍历根节点左子树;3. 递归遍历根节点右子树;二叉树中序遍历特点:1. 递归遍历根节点左子树;2. 遍历根节点;3. 递归遍历根节点右子树;依据前序、中序遍历结果建立二叉树代码如下:class Solution { // 为了降低在中序遍历结果集中搜索当前根节点的时间 Map<Integer, Integer> map = new HashMap<Integer, Integer原创 2021-04-26 11:46:44 · 803 阅读 · 0 评论 -
搞定面试~LeetCode:栈相关题目,持续更新~
Stack:一个先进后出的数据结构。(下面是对leetcode上的一些栈相关题目的汇总,持续更新~)题目1:《剑指 Offer 31. 栈的压入、弹出序列》输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列,但 {4,3,5,1,2} 就不可能是该压栈序列的弹出序列。输入:pushed = [1,2,3,4,5], p原创 2021-04-22 14:57:04 · 186 阅读 · 1 评论 -
LeetCode--回溯算法系列:持续更新
题目1:给你一个整数数组nums,数组中的元素互不相同。返回该数组所有可能的子集(幂集)。解集不能包含重复的子集。你可以按任意顺序返回解集。输入:nums = [1,2,3]输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]class Solution { List<List<Integer>> lists = new ArrayList<List<Integer>>();...原创 2021-04-22 00:10:29 · 115 阅读 · 0 评论