自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(47)
  • 收藏
  • 关注

原创 LeetCode每日刷题:101. 对称二叉树

可以新写一个函数,从root开始,root的left的头结点将记为lefttree(左子树),root的lright的头结点将记为righttree(右子树),,第一种左子树与右子树都为空,第二种左子树或者右子树为空,第三种lefttree与righttree的值不一样,第四种则是左子树与右子树对称。然后递归左子树的root.left与右子树的root.right,左子树的root.right与右子树的root.left进行比较,

2024-02-22 22:06:47 563

原创 LeetCode刷题:100.相同的树

1.首先要判断根节点的情况,(1)首先是p为空,q不为空,或者p不为空,q为空则要返回false(2)p和q都为空则返回true,2.然后判断根节点的值是否相等3.然后进行递归,同时判断左树右树是否相等。

2024-02-01 20:05:19 562

原创 LeetCode刷题:142. 环形链表 II

否,参考了解题思路解决问题,思考了用快慢指针,栈,统计链表数量定位尾巴节点(因为是环形链表所以是死循环,链表数量用while循环统计不出来)都没解决。

2024-01-13 22:34:56 649

原创 LeetCode刷题:141. 环形链表

利用循环与哈希表存储每一个节点,如果发现添加不进去说明,存在环,正常来说循环遍历完应该是执行到null,但是他有环,最后一个节点地址会指向前面的地址。

2024-01-12 22:44:10 596

原创 LeetCode刷题:面试题 02.04. 分割链表

否,完全没有思路,在参考解题思路后,仍然没有解决出来,以后刷题过程没有思路可以参考别人的解题思路,但是出现问题一定要。既然题目要求比目标值小的数要排在前面,比目标值大的数不动,那么直接分为。

2024-01-07 18:40:29 396

原创 LeetCode刷题:面试题 02.01. 移除重复节点

定义快慢节点,双层嵌套循环,如果值一样则剔除,但是时间复杂度为O(n²)会超标。算是,但是使用自己的办法时间复杂度会超标。利用set接口的特点,不能存储重复的值。

2024-01-07 17:01:09 409

原创 LeetCoed刷题:21. 合并两个有序链表

创建一个节点作为头结点,然后同时通过while循环遍历两个数组,用if语句判断出最小的那一个list,则用pre指向他,然后被指向的那个list向后移一位。在结束循环之后,两个链表的长度可能并不是一样的,所以要把长的那一端直接添加到新链表最后面,返回头结点的下一个即可。指定哪个链表为头结点(最开始想通过if语句在while循环的时候判断一下),后面通过看题解知道,可以提前创建一个。怎么遍历两个数组,嵌套两个while循环不能实现(后面通过看题解知道。,就是最开始没有看懂。

2024-01-04 20:07:14 390

原创 LeetCode刷题:面试题 02.02. 返回倒数第 k 个节点

来做,快慢指针都指向头结点,然后让快指针先走k步,然后让快指针与慢指针同时走,如果快指针为空则结束循环。有关所以我们只需要,利用计数器遍历链表记录链表里面数据的个数,然后再写个函数实现就行了。这题和昨天的876.链表的中间节点很像,观察完题目发现返回k下标其实和。通过学习别人的解题思路了解到还可以用到。

2024-01-04 15:35:01 428

原创 LeetCode刷题:876. 链表的中间结点

看到题目关于奇偶数的题,首先想到了用计数器把链表遍历一遍,然后将计算出的数据个数。/2的下标作为头结点便可以遍历出来结果。

2024-01-03 23:13:54 469 1

原创 Leecode刷题:024反转单项链表

因此需要在while循环之中提前存储cur下一个节点的位置,再进行移动。节点,所以到第四行的时候想将cur节点往后移动会跑到pre节点形成。Found cycle in the ListNode,链表成环。因为while循环中第一行的。

2024-01-03 20:43:18 397

原创 LeetCode每日刷题:移动零

题目:给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。解题思路:1.定义变量j=0;2.遍历数组,判断如果元素nums[i]不等于0,则把nums[i]的元素放在元素j的位置,j接着往后加一位3.直到数组遍历完,将不为0的元素排列在前面,元素0则放在后面代码实现:class Solution { public void moveZeroes(int[] nums) { int j = 0 ; .

2022-01-11 11:37:55 316

原创 LeetCode每日刷题:丢失的数字

题目:给定一个包含 [0, n] 中 n 个数的数组 nums ,找出 [0, n] 这个范围内没有出现在数组中的那个数。解题思路:首先通过Arrays。sort的方法排序,然后遍历数组如果元素与下标不相等则返回下标,如果都相等就返回数组长度。代码实现:class Solution { public int missingNumber(int[] nums) { Arrays.sort(nums); int n = nums..

2022-01-11 11:04:48 415

原创 LeetCode每日刷题:丑数

题目:给你一个整数 n ,请你判断 n 是否为 丑数 。如果是,返回 true ;否则,返回 false 。丑数 就是只包含质因数 2、3 和/或 5 的正整数。:解题思路:利用递归的思路,如果该数被2或3或5取余之后等于0则把该数除以2或3或5 ,利用除以2或3或5的值重新去通过2,3,5取余直到最后的值为0或者1:代码实现:class Solution { public boolean isUgly(int n) { if(n==0)r.

2022-01-10 21:54:00 3113

原创 LeetCode每日刷题:赎金信

题目:给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。如果可以,返回 true ;否则返回 false 。magazine 中的每个字符只能在 ransomNote 中使用一次解题思路:这道题的解题思路与有效的字母异位词一模一样1.如果两个字符串长度不相等,返回false2.创建一个长度为26的数组,以便于存储26个字母的个数3.首先遍历字符串s,通过每个字符减去‘a’得到的数字则为数.

2022-01-08 15:10:45 516

原创 LeetCode每日刷题:有效的字母异位

题目:给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词解题思路:方法一:数组模拟Hash表1.如果两个字符串长度不相等,返回false2.创建一个长度为26的数组,以便于存储26个字母的个数3.首先遍历字符串s,通过每个字符减去‘a’得到的数字则为数组的下标存储每个字符出现的次数4.遍历字符串t,出现过的字符则在遍历字符串s中的个数减去1,最后判断如果剩下的t

2022-01-08 15:02:01 385

原创 LeetCode每日刷题:字符串中的第一个唯一字符

题目:给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1解题思路:利用Hashmap,遍历字符串之后,将每个字符的出现次数记录下来,当循环走完之后把所有的字符串记录完毕再去判断。再通过第二次建立循环判断map中key值对应的value值是否为1;如果在第一次循环里面直接返回的话,因为只记录了第一个按照题目要求map里面存放的就是1,之后不管你提供什么字符串他都会返回下标0;代码实现:class Solution { public int

2022-01-08 11:47:44 454

原创 LeetCode每日刷题:两个数组的交集

题目:给你两个整数数组 nums1 和 nums2 ,请你以数组形式返回两数组的交集。返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一致(如果出现次数不一致,则考虑取较小值)。可以不考虑输出结果的顺序解题思路:双指针+排序:先将数组利用sort方法进行排序,然后分别定义下标index1和index2分别遍历数组1和数组2,与此同时建立一个新数组(数组长度为两个数组之间较短的那一个数组长度),如果nums1和nums2的值相等,那么index1和index2 同时往后移一位,如果不

2022-01-07 21:27:23 409

原创 LeetCode每日刷题:各位相加

题目:给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。解题思路:判断条件>9,如果小于9 就没有必要往下走,定义next记录每一位的数字之和,当num不为0的时候,对num求模取余,通过next记录并且相加,将next将各位相加的结果赋值给num。代码实现:class Solution { public int addDigits(int num) { while (num>9){ int next =0;.

2022-01-05 21:48:39 415

原创 LeetCode每日刷题:存在重复的元素II

题目:给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和 j 的差的 绝对值 至多为 k。解题思路:这道题有三种解法:暴力,滑动窗口,Set。暴力解法:循环遍历数组,判断是否nums[i]==nums[j],根据题目意思还得加个判断条件i下标减去j下标的绝对值要小于等于给定的k。但是提交上去的话会超出时间限制,但是把第二个条件加在第二个for循环里面就不会超出时间限制。滑动窗口:分别设置left和rig

2022-01-05 20:55:41 3322

原创 (Java)LeetCode每日刷题:两数相加

题目:给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。解题思路:创建一个节点以便于返回整个链表,然后定义一个节点遍历整个链表。利用while循环遍历l1和l2,并且要考虑如果加到10之后要往前进一位,所以我们定义一个offset代表要进位的数字。之后再定义一个sum将每次遍历的l1和l2中的数字.

2022-01-04 15:49:27 172

原创 LeetCode每日刷题:移除链表元素

题目:给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点解题思路:首先,得设置一个新节点便于返回整个链表的值。然后将新节点的next与head连接起来。如果节点的next不为空,则开始判断下一个节点的值是否与目标值相等,如果相等则跳过下一节点。如果不相等,则节点向下移一位,继续判断。代码实现:class Solution { public ListNode removeElem.

2022-01-03 19:56:13 251

原创 LeetCode每日刷题:多数元素

题目:给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素解题思路:通过Hashmap的方法来解答,通过Hashmap来统计每个元素的个数,如果有元素的个数大于数组长度的一半那么则返回该元素,否则返回0。代码实现:class Solution { public int majorityElement(int[] nums) { HashMap<I

2022-01-01 19:26:33 1870

原创 leetCode每日刷题:两数之和II-输入有序数组

题目:给定一个已按照 非递减顺序排列 的整数数组 numbers ,请你从数组中找出两个数满足相加之和等于目标数 target 。函数应该以长度为 2 的整数数组的形式返回这两个数的下标值。numbers 的下标 从 1 开始计数 ,所以答案数组应当满足 1 <= answer[0] < answer[1] <= numbers.length 。你可以假设每个输入 只对应唯一的答案 ,而且你 不可以 重复使用相同的元素。解题思路:这道题我感觉和两数之和没有什么区.

2022-01-01 18:07:27 420

原创 LeetCode每日刷题:环形链表

题目:给你一个链表的头节点 head ,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。如果链表中存在环,则返回 true 。 否则,返回 false 。解题思路:利用快慢指针来解决问题,分别定义变量fast和slow两个节

2022-01-01 17:44:17 143

原创 LeetCode每日刷题:只出现一次的数字

题目:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?解题思路:这道题有三种解决方法:1.利用hashmap,出现一次就记录一次,然后返回只出现了一次的数字2.利用hasset的方法,出现的第一次为true的特性,出现第二次就返回false3.利用位运算的方法,异或,如果两个数相等,异或之后为0,如果0和一个数异或,那么就会等于不为0的数(我们这里用位运

2022-01-01 12:21:22 2639

原创 LeetCode每日刷题:股票

题目:给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。解题思路:动态规划来解决问题,如果股票小于2,返回0,不用计算,只有一只股票。定义一个变量benifit和price(等于第一个元素)。遍历数组,通过Math方法的max函数将beni

2021-12-31 21:45:31 315

原创 LeetCode每日刷题:平衡二叉树

题目:给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。解题思路:1.如果树为空,返回true。2.如果不为空,则定义一个方法可以计算出左树和右树的深度。然后用Math方法中的abs(绝对值)函数,计算左树减去右树的值,如果大于1,则与题目不符合,返回false。如果小于1,则该节点是平衡的继续遍历下一个节点(左树或者右树)。代码实现:class Solution { .

2021-12-31 19:08:26 116

原创 LeetCode每日刷题:判断字符是否唯一

题目:实现一个算法,确定一个字符串 s 的所有字符是否全都不同。解题思路:利用双层循环遍历,将字符串里面的元素一一比对。代码实现:class Solution { public boolean isUnique(String astr) { for (int i = 0; i <astr.length() ; i++) { for (int j = i+1; j <astr.length() ; j++) {

2021-12-30 23:32:30 262

原创 LeetCode每日刷题:最大子数组和

题目:给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组 是数组中的一个连续部分。解题思路:该题我了解到的一共有四种方法:暴力解决,动态规划,贪心算法,分治法。这里我主要用的贪心算法,大致讲解一下动态规划和贪心算法的解题思路。动态规划:动态规划的方法简而言之就是先判断该数是否大于0,如果大于0则和下一个元素相加,如果小于0,则跳过,形成一个完整的数组之后,从新数组中选择出最大的那个数。贪心算法:贪心算法和动态规划有点相似,

2021-12-29 14:31:03 226

原创 LeetCode每日刷题:存在重复的元素

题目:给定一个整数数组,判断是否存在重复元素。如果存在一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。解题思路:先将数组排序,然后通过比较前一哥元素是否和后面一个相等,如果相等返回true不相等返回false。然后需要限制i+1的范围,不然可能会数组越界。做题时的心路历程:我开始以为这题和两数之和一样用for循环嵌套就可以实现,但是实现的时候提示超时了,时间复杂度可能不符合题目,所以大家一定要注意这方面的问题。直接排序就好了。代码实现

2021-12-29 11:52:40 700

原创 LeetCode每日刷题:二叉树的最小深度

题目:给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明:叶子节点是指没有子节点的节点。解题思路:一共有四种情况:1.根节点为空,返回0;2.根节点不为空,根节点的左树和右树为空,返回1:3.根节点不为空,根节点的左树或右树为空,因为不确定左树还是右树为空所以把左树和右树加起来再加上根节点:4.根节点不为空,根节点的左树和右树也不为空,利用Math函数的Min方法,找到将左树和右树做比较,找到比较小的那棵树加上根节点。代码实现:

2021-12-29 11:22:38 82

原创 LeetCode每日刷题:对称二叉树

题目:给定一个二叉树,检查它是否是镜像对称的解题思路:仅仅只用题目给的一个方法写起来可能比较麻烦,所以我写了另外一个函数专门来比较左树和右树,代码与题目:相同的树(可以参考:Leetcode每日刷题:相同的树_一般般的每日刷题的博客-优快云博客)大致相同,不一样的地方在于,一棵树对称的话那么p.left与q.right要相等。代码实现:class Solution { public boolean isSymimetricChilde(TreeNode p,Tre

2021-12-28 17:50:52 494

原创 LeetCode每日刷题:相同的树

题目:给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。解题思路:首先有几种情况1.判断两棵树是否都为空 ,如果是,返回true2.如果一棵树为空,另外一棵树不为空,则返回false3,接下来判断节点值是否相等,如果不相等返回false.否则,就遍历两棵树的左树和右树代码实现:class Solution { public boolean isSameTree(Tr.

2021-12-28 17:20:22 307

原创 LeetCode每日刷题:二叉树的中序遍历

题目:给定一个二叉树的根节点 root ,返回它的 中序遍历。解题思路:中序遍历就是左中右的顺序排序,但是用list方法和遍历略有不同,利用add()和addAll()的方法代码实现:class Solution { public List<Integer> inorderTraversal(TreeNode root) { List<Integer>list =new ArrayList<>(); ...

2021-12-28 11:47:18 257

原创 LeetCode每日刷题:合并两个有序数组

题目:给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。解题思路:本题有多种解法,你可.

2021-12-27 13:35:01 311 2

原创 LeetCode每日刷题:删除排序链表中的重复元素

题目:存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除所有重复的元素,使每个元素 只出现一次 。返回同样按升序排列的结果链表。解题思路:如果当前节点的值等于下一个节点的值,只需要将当前节点的next等于下一个节点的next即可。笔者建议:这道题虽然很简单,但是如果长时间不接触,容易忘记一些详细步骤,所以笔者建议在写该题时先复习复习链表的基本操作。还有题目中给的class ListNode自己默写一遍看能不能写出来,如果题目中需要自己编写,是否可以写出来。代..

2021-12-27 11:18:56 260

原创 LeetCode每日刷题:爬楼梯

题目:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数解题思路:可以用递归的方法解决但是光用递归时间复杂度会超过题目要求的条件,所以可以通过map把重复的阶梯数存起来,精简时间复杂度代码实现:class Solution { HashMap<Integer,Integer> map = new HashMap(); public int climbSta.

2021-12-25 22:56:39 223

原创 LeetCode每日刷题:加一

题目:给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。解题思路:一定一定一定要注意题目的第三句话(重要的事情说三遍),写题时不注意只写了三行代码运行之后碰到了这个提示,如下图:整数只要到九加一就会变成[1,0],所以我们这么写,数组最后一位正常加一,通过取余返回数组,如果有9加一后取余会变成0,给数组长度+1,并且将数组的第一位数字改成1。..

2021-12-23 21:11:56 1105

原创 LeetCode每日刷题:最后一个单词的长度

题目:给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中最后一个单词的长度。单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。解题思路:因为要计算最后一个字符串的长度,所以从后往前遍历。遍历之前可以使用trim()函数将字符串头尾的空格符去掉(一定记好trim(),我开始以为是把所有的空格都去掉)。代码实现:classSolution{publicintlengthOfLastWord(Strings){i...

2021-12-23 20:35:11 434

原创 LeetCode每天刷题:搜索插入位置

题目:给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为 O(log n) 的算法。解题思路:遍历数组如果相等就把他的下标返回,如果target比数组中的某一个数小就返回nums[i]的下表数,如果目标数比数组的最后一个数还大,就返回数组长度。代码实现:classSolution{publicintsearchInsert(int[]nums,inttarget)...

2021-12-23 16:26:46 296

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除