LeetCode
Double-V
这个作者很懒,什么都没留下…
展开
-
栈的压入、弹出序列
栈的压入和弹出顺序原创 2022-03-14 16:09:53 · 332 阅读 · 0 评论 -
LeetCode--旋转图像(Scanner输入问题)
LeetCode上面没有输入输出练习,但是面试笔试一般需要自己输入输出案例:于是自己写了这个数组输出:import java.util.Scanner;public class Main { public static void main(String[] args) { System.out.println("二维数组的行数:"); Scanner scan=new Scanner(System.in); int r=scan.nextInt原创 2022-03-02 21:50:25 · 368 阅读 · 0 评论 -
LeetCode剑指offer--删除链表的倒数第n个节点
**题目要求:**给定一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。输入:head = [1,2,3,4,5], n = 2输出:[1,2,3,5]示例 2:输入:head = [1], n = 1输出:[]示例 3:输入:head = [1,2], n = 1输出:[1]分析图解流程构建距离遇到倒数第N个节点类型,一般都会想到快慢指针,让快指针先走N步;共同移动此时快指针和慢指针之间相隔N位,然后两个指针同时移动;范围直到快指针的下一位是空删除节原创 2022-01-30 11:08:06 · 532 阅读 · 0 评论 -
LeetCode----剑指offer----数据流中的中位数
题目:[2,3,4] 的中位数是 3[2,3] 的中位数是 (2 + 3) / 2 = 2.5设计一个支持以下两种操作的数据结构:void addNum(int num) - 从数据流中添加一个整数到数据结构中。double findMedian() - 返回目前所有元素的中位数。示例 1:输入:[“MedianFinder”,“addNum”,“addNum”,“findMedian”,“addNum”,“findMedian”][[],[1],[2],[],[3],[]]输出:[nu原创 2021-11-28 20:58:47 · 224 阅读 · 0 评论 -
LeetCode---剑指Offer---把数组排成最小的数
**题目:**输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。示例 1:输入: [10,2]输出: “102”示例 2:输入: [3,30,34,5,9]输出: “3033459”//贪心算法class Solution { public String minNumber(int[] nums) { String[] strs = new String[nums.length];// String数组 fo原创 2021-11-27 20:18:58 · 265 阅读 · 0 评论 -
LeetCode-两个链表的第一个公共节点
**题目:**输入两个链表,找出它们的第一个公共节点。如下面的两个链表:在节点 c1 开始相交。例1 :输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Reference of the node with value = 8输入解释:相交节点的值为 8 (注意,如果两个列表相交则不能为 0)。从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为原创 2021-11-23 21:41:04 · 107 阅读 · 0 评论 -
LeetCode - 数据结构(基础)
题目:给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix。螺旋的按顺序把数字填进去。实例1:输入:n = 3输出:[[1,2,3],[8,9,4],[7,6,5]]示例 2::输入:n = 1输出:[[1]]分析:生成一个 n×n 空矩阵 mat,随后模拟整个向内环绕的填入过程:定义当前左右上下边界 l,r,t,b,初始值 num = 1,迭代终止值 tar = n * n;当 num <= tar原创 2021-11-09 22:01:43 · 261 阅读 · 0 评论 -
LeetCode-只出现一次的数字
题目:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。要求:算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4算法:方法一:使用哈希表class Solution { public int singleNumber(int[] nums) { Set<Integer> set = new Ha原创 2021-11-06 20:24:58 · 92 阅读 · 0 评论 -
LeetCode - 实现strStr()
刷到一个简单题,可以用KMP算法做,KMP核心就是i 和 j的选择。题目:实现 strStr() 函数。给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回 -1 。说明:当 needle 是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。对于本题而言,当 needle 是空字符串时我们应当返回 0 。这与 C 语言的 strstr() 以及 Java 的 ind原创 2021-11-06 15:06:03 · 129 阅读 · 0 评论 -
LeetCode- 求二叉搜索树的最近的祖先
题目:给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]示例 1:输入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 8输出: 6解释: 节点原创 2021-11-05 21:30:23 · 68 阅读 · 0 评论 -
LeetCode每日一题--接雨水(2021-11-3)
题目如下:给你一个 m x n 的矩阵,其中的值均为非负整数,代表二维高度图每个单元的高度,请计算图中形状最多能接多少体积的雨水。输入: heightMap = [[1,4,3,1,3,2],[3,2,1,3,2,4],[2,3,3,2,3,1]]输出: 4解释: 下雨后,雨水将会被上图蓝色的方块中。总的接雨水量为1+2+1=4。分析:本题为经典题目,解题的原理和方法都可以参考「接雨水」,本题主要从一维数组变成了二维数组。首先我们思考一下什么样的方块一定可以接住水:该方块不为最外层的方块;原创 2021-11-04 12:38:57 · 676 阅读 · 0 评论 -
LeetCode-路径总和问题
题目要求:给你二叉树的根节点 root 和一个表示目标和的整数 targetSum ,判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。叶子节点 是指没有子节点的节点。输入:root = [5,4,8,11,null,13,4,7,2,null,null,null,1], targetSum = 22输出:true输入:root = [1,2,3], targetSum = 5输出:false首先分析,假定从根节点到当前节点的值之和为原创 2021-11-03 21:41:04 · 163 阅读 · 0 评论 -
LeetCode 每日一题 2021.11.02---删除链表节点
题目:删除链表节点输入:head = [4,5,1,9], node = 5输出:[4,1,9]解释:指定链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9主要问题是该结点不能自己删除自己,那怎么做呢?分析:这道题中,传入的参数 node 为要被删除的节点,无法定位到该节点的上一个节点。注意到要被删除的节点不是链表的末尾节点,因此node.next 不为空,可以通过对node 和 node.next 进行操作实现删除节点。在给定节点nod原创 2021-11-02 21:47:25 · 256 阅读 · 0 评论 -
LeetCode-每日一题-分糖果
题目:Alice 有 n 枚糖,其中第 i 枚糖的类型为 candies[i] 。Alice 注意到她的体重正在增长,所以前去拜访了一位医生。医生建议 Alice 要少摄入糖分,只吃掉她所有糖的 n / 2 即可(n 是一个偶数)。Alice 非常喜欢这些糖,她想要在遵循医生建议的情况下,尽可能吃到最多不同种类的糖。给你一个长度为 n 的整数数组 candies ,返回: Alice 在仅吃掉 n / 2 枚糖的情况下,可以吃到糖的最多种类数。分析:我们可以对给定的 candies数组进行排序,并原创 2021-11-01 21:05:38 · 233 阅读 · 0 评论 -
LeetCode-每日一题-键盘行
题目:给你一个字符串数组 words ,只返回可以使用在 美式键盘 同一行的字母打印出来的单词。键盘如下图所示。美式键盘 中:第一行由字符 “qwertyuiop” 组成。第二行由字符 “asdfghjkl” 组成。第三行由字符 “zxcvbnm” 组成。示例 1:输入:words = [“Hello”,“Alaska”,“Dad”,“Peace”]输出:[“Alaska”,“Dad”](就是把字符串中的属于一行的字母输出)class Solution { public Stri原创 2021-10-31 17:11:18 · 3382 阅读 · 0 评论 -
LeetCode ---Fizz和Buzz
题目要求:给你一个整数 n ,找出从 1 到 n 各个整数的 Fizz Buzz 表示,并用字符串数组 answer(下标从 1 开始)返回结果,其中:answer[i] == “FizzBuzz” 如果 i 同时是 3 和 5 的倍数。answer[i] == “Fizz” 如果 i 是 3 的倍数。answer[i] == “Buzz” 如果 i 是 5 的倍数。answer[i] == i 如果上述条件全不满足。实例:输入:n = 3输出:[“1”,“2”,“Fizz”]输入:n =原创 2021-10-30 20:55:31 · 3678 阅读 · 0 评论 -
LeetCode-每日一题(10月29号)
路径交叉题题目: X-Y 平面上的点 (0,0) 开始,先向北移动 distance[0] 米,然后向西移动 distance[1] 米,向南移动 distance[2] 米,向东移动 distance[3] 米,持续移动。也就是说,每次移动后你的方位会发生逆时针变化。判断你所经过的路径是否相交。如果相交,返回 true ;否则,返回 false 。由图片可知,想要围成圈可以分为以下三种情况:第一种情况:这种路径交叉需满足以下条件:第 i-1次移动距离小于等于第 i-3次移动距离。第 i原创 2021-10-30 15:03:23 · 3797 阅读 · 0 评论 -
LeetCode - 打乱数组
题目要求:给你一个整数数组 nums ,设计算法来打乱一个没有重复元素的数组。解释:Solution(int[] nums) 使用整数数组 nums 初始化对象int[] reset() 重设数组到它的初始状态并返回int[] shuffle() 返回数组随机打乱后的结果本道题可以使用洗牌算法(Knuth shuffle算法):对于有n个元素的数组来说,为了保证洗牌的公平性,应该要能够等概率的洗出n!种结果。代码如下:class Solution { private int[] nu原创 2021-10-28 21:06:34 · 124 阅读 · 0 评论 -
LeetCode- 打家劫舍
题目要求如下:如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,在不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。(就是在一个数组中在相邻两个数不能加的情况下,求最大和)解题思路如下:偷窃第 k 间房屋,那么就不能偷窃第 k−1 间房屋,偷窃总金额为前 k-2 间房屋的最高总金额与第 k 间房屋的金额之和。不偷窃第 k 间房屋,偷窃总金额为前 k-1 间房屋的最高总金额。设立边界条件dp[0] = nums[0];只有一件房屋dp[原创 2021-10-27 20:38:55 · 114 阅读 · 0 评论 -
leetCode - 矩阵置零
问题:给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地算法(原地算法就是不准新建一个数组)要求如图所示:输入:matrix = [[1,1,1],[1,0,1],[1,1,1]]输出:[[1,0,1],[0,0,0],[1,0,1]]思路:用两个标记数组分别记录每一行和每一列是否有零出现。具体地,我们首先遍历该数组一次,如果某个元素为 00,那么就将该元素所在的行和列所对应标记数组的位置置为true。最后再次遍历该数组,用标记数组更新原数原创 2021-10-27 10:33:23 · 144 阅读 · 0 评论 -
leetcode二叉树系列之二叉树最大深度
根据树的结构,最大深度一定是最大左子树或者最大右子树的个数加一,直接递归class Solution { public int maxDepth(TreeNode root) { if(root == null){ return 0; } return 1+Math.max(maxDepth(root.right),maxDepth(root.left)); }}...原创 2021-10-23 20:03:05 · 56 阅读 · 0 评论 -
二叉树的前序遍历、中序遍历和后序遍历
二叉树前序遍历class Solution { public List<Integer> preorderTraversal(TreeNode root) { List<Integer> res = new ArrayList<Integer>(); preorderTraversal(root,res); return res; } public void preorderTraversa原创 2021-10-23 12:19:11 · 104 阅读 · 0 评论 -
LeetCode每日一题-10.21-数组加一
这一题第一遍没看懂啥意思,后来自己做提交了好多次才通过。。输入:digits = [1,2,3]输出:[1,2,4]解释:输入数组表示数字 123。输入:digits = [4,3,2,1]输出:[4,3,2,2]解释:输入数组表示数字 4321。输入:digits = [0]输出:[1]大概意思就是数组最后一位小于9直接加一,而正好是9,加一后满10进一位,这时分两种情况第一种:数组除了最后一位,剩下的位数上数字不超过9,这时数组的长度不需要改变第二组:数组位数上都是9,这时数组的长原创 2021-10-22 09:58:44 · 128 阅读 · 0 评论