
【Letcode】每日一题
文章平均质量分 92
学习新思维,学习新方法,多发现不足,多总结归纳,不断进步,不断自我检测,不断复盘,才能登上编程的顶峰。
夏驰和徐策
一个喜欢打游戏的计算机专业学生;这是我的GitHub:https://github.com/XiaChiandXuce
展开
-
Leetcode 509.斐波那契数列
从斐波那契数列的问题中,我们可以学到许多重要的编程和算法概念,以及它们如何应用于解决不同类型的问题。原创 2023-11-20 20:28:50 · 85 阅读 · 0 评论 -
Leetocde 70.爬楼梯
假设你正在爬楼梯。需要n阶你才能到达楼顶。每次你可以爬1或2个台阶。你有多少种不同的方法可以爬到楼顶呢?n = 22有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶n = 33有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶2. 1 阶 + 2 阶3. 2 阶 + 1 阶。原创 2023-11-13 21:38:03 · 240 阅读 · 0 评论 -
Leetcode 81.搜索选择排序数组Ⅱ
已知存在一个按非降序排列的整数数组nums,数组中的值不必互不相同。在传递给函数之前,nums在预先未知的某个下标k)上进行了,使数组变为(下标计数)。例如,在下标5处经旋转后可能变为。给你的数组nums和一个整数target,请你编写一个函数来判断给定的目标值是否存在于数组中。如果nums中存在这个目标值target,则返回true,否则返回false。你必须尽可能减少整个操作步骤。nums = [2truenums = [2falsenumsnums通过次数208.8K提交次数。原创 2023-11-13 20:39:21 · 134 阅读 · 0 评论 -
Leetcode 23.旋转排序数组
从这道题目中,我们可以学到以下几点:1. **二分搜索应用**:- 这道题是二分搜索算法的变体应用,通过判断旋转点在哪一侧来决定搜索的方向。二分搜索是一种非常高效的算法,适用于已排序或部分有序的数据结构,其时间复杂度为 \(O(\log n)\)。2. **条件判断与边界处理**:- 在解决问题时,要精确判断和处理边界条件。例如,判断旋转的分界点,以及在二分搜索过程中更新 left 和 right 指针的位置。原创 2023-10-14 23:50:04 · 784 阅读 · 0 评论 -
Leetcode 1492.n的第k个因子
从这道题目和相应的解答中,我们可以学到多个方面的知识和技巧:1. **因子配对特性**:任何大于 \(\sqrt{n}\) 的因子必定与小于 \(\sqrt{n}\) 的一个因子配对。利用这个特性,我们可以大大减少搜索范围,从而优化算法。2. **完全平方数的处理**:当 \(n\) 是一个完全平方数时,其平方根只能计为一个因子,而不是两个。这是一个细节,但在某些情况下可能会导致错误,因此需要注意。3. **复杂度的重要性**:通过观察问题的数学属性,我们可以设计更高效的算法。原创 2023-10-06 23:38:26 · 264 阅读 · 0 评论 -
Leetcode 231.2的幂
*优点**:1. **结构化**:您按照“信息、分析、步骤、问题出现”的结构进行了思考,这有助于对问题进行系统化分析。2. **明确目标**:您明确了要解决的问题和函数需要实现的功能。3. **多方位思考**:您不仅思考了如何解决问题,还考虑了可能遇到的问题和限制。4. **多个方案**:对于如何判断一个数是否为2的幂,您给出了两种不同的解决方案,这显示了您具备多角度解决问题的能力。原创 2023-10-04 23:13:39 · 272 阅读 · 0 评论 -
Leetcode 2119.反转两次的数字
从这道题目中,我们可以学到几个关键的概念和编程实践:1. **数学思维**:- **充分必要条件**的思考是解题的关键。首先考虑何时两次反转会得到原数,然后思考这些条件是不是必要的,是不是充分的。- **模运算**:通过对10取模来判断一个数的个位数。2. **编程思维**:- 逻辑简化:题目可能看起来复杂,需要多步操作,但有时候通过逻辑推理和数学运算可以极大地简化问题,例如这道题目中,无需实际进行反转操作,通过判断就可以得到结果。- 代码优化:简化逻辑并不总是降低代码的可读性。原创 2023-10-02 00:55:55 · 313 阅读 · 0 评论 -
Leetcode 50.Pow(x,n)
通过这道题目,我们能学到以下几点:### 1. **算法优化的重要性**这道题目展示了相同问题的不同解决方案会有很大的效率差异。对于初学者来说,很容易想到暴力解法,即直接计算x的n次方,但这种方法的时间复杂度是O(n),在n很大时效率很低。而快速幂方法,无论是递归还是迭代,时间复杂度都可以优化到O(logn),大大提高了算法的效率。### 2. **不同解法的优劣**- **递归**:易于理解和实现,但可能有堆栈溢出的风险,且空间复杂度较高。原创 2023-10-01 00:12:06 · 712 阅读 · 0 评论 -
Leetcode 23.两数相除
一、信息给你两个整数,被除数dividend和除数divisor。将两数相除,要求乘法、除法和取余运算。整数除法应该向零截断,也就是截去(truncate)其小数部分。例如,8.345将被截断为8-2.7335将被截断至-2。返回被除数dividend除以除数divisor得到的。假设我们的环境只能存储有符号整数,其数值范围是。本题中,如果商231 − 1,则返回231 − 1;如果商-231,则返回-231。310/3 = 3.33333.. ,向零截断后得到 3。-2。原创 2023-09-30 01:42:32 · 529 阅读 · 0 评论 -
面试题08.05.递归算法
递归乘法。写一个递归函数,不使用 * 运算符, 实现两个正整数的相乘。可以使用加号、减号、位移,但要吝啬一些。:10:12。原创 2023-09-27 01:16:53 · 374 阅读 · 2 评论 -
九日集训 Leetcode 371.两整数之和
给你两个整数a和b运算符和,计算并返回两整数之和。35。原创 2023-09-27 00:02:41 · 196 阅读 · 0 评论 -
Leetcode 1379.找出克隆二叉树中的相同节点
给你两棵二叉树,原始树original和克隆树cloned,以及一个位于原始树original中的目标节点target。其中,克隆树cloned是原始树original的一个。请找出在树cloned中,与target的节点,并返回对该节点的引用(在 C/C++ 等有指针的语言中返回 节点指针,其他语言返回节点本身)。你对两棵二叉树,以及target节点进行更改。返回对克隆树cloned中已有的节点的引用。3上图画出了树 original 和 cloned。原创 2023-09-25 00:08:32 · 307 阅读 · 0 评论 -
Leetcode 2325.解密消息
这道题目是学习和练习基础编程概念、数据结构操作、内存管理和简单加密解密概念的好机会。同时,它也强调了测试、调试和优化的重要性。原创 2023-09-24 00:51:49 · 242 阅读 · 0 评论 -
Leetcode 剑指Offer
从这个题目中,我们可以学习到以下几点:1. **递归的使用和理解**:递归是计算机科学中一个重要的概念。这个题目提供了一个很好的机会来理解和练习如何使用递归来解决问题。2. **条件语句的替代方案**:由于我们不能使用常见的条件语句,我们需要找到其他方法来实现条件检查。这可以帮助我们更好地理解条件语句的工作原理,并学习如何使用逻辑运算符作为条件语句的替代方案。原创 2023-09-13 01:16:47 · 411 阅读 · 0 评论 -
Leetcode 504.七进制数
使用栈存储和Leetcode提供的方法(字符串拼接+反转)在实现上有一些区别。让我们逐一探讨这两种方法的优缺点:### 1. 使用栈存储方法#### 优点:1. **自然的顺序**:栈是一种后进先出(LIFO)的数据结构,它可以自然地按照从高位到低位的顺序存储七进制的数字。2. **无需字符串反转**:由于栈的性质,我们可以按照高位到低位的顺序提取数字,避免了字符串反转这一步骤。原创 2023-09-13 00:13:41 · 420 阅读 · 0 评论 -
Leetcode 1572.矩阵对角线元素之和
从这道题目中,我们可以学到以下几点:1. **数组索引的应用**:该题目教会我们如何利用数组索引来找到主对角线和副对角线的元素。这对于深入理解数组索引和二维数组非常有帮助。2. **循环的优化**:我们可以通过仔细设计循环来减少不必要的计算。例如,方法二比方法一更优,因为它避免了遍历整个数组,而是只关注于对角线元素。3. **条件运算符的使用**:该题目展示了如何使用条件运算符(如`&`用于检测奇偶性)来简化代码和减少计算。原创 2023-09-06 01:01:41 · 1860 阅读 · 2 评论 -
Leetcode 1486.数组异或操作
从这个题目中,我们可以学习以下几个方面:1. **高效算法的设计**:不是所有的问题都需要通过直接的方式解决。在这种情况下,直接计算数组的所有元素的异或将会花费较多的时间(O(n)时间复杂度)。但是通过运用数学技巧,我们可以将时间复杂度降到O(1)。2. **异或运算的性质和应用**:这个题目深刻地展示了异或运算的一些基本性质,如交换律、结合律和自反性。同时,题目也介绍了一个特定的性质,即连续4个整数的异或结果为0。原创 2023-09-05 23:47:29 · 1215 阅读 · 1 评论 -
Leetcode 2431.最小偶倍数
题目“最小偶倍数”主要是要我们找出给定正整数 \( n \) 和数字 2 之间的最小公倍数。以下是从这个问题中我们可以学到的内容和可能犯的错误:### **学习内容**:1. **数学知识的应用**:- 这个问题需要我们知道如何求两个数的最小公倍数。这引导我们回想和应用基础数学知识。2. **编程技巧**:- 简化问题。我们知道2是偶数,所以只有当 \( n \) 是奇数时,它和2的最小公倍数是 \( 2 \times n \)。当 \( n \) 是偶数时,它本身就是最小公倍数。原创 2023-09-04 00:16:03 · 388 阅读 · 0 评论 -
Leetcode 16.07 最大数值
这道题目在初看下似乎很简单,但它隐藏了许多有趣和重要的编程和计算机科学原理。从这个问题中,我们可以学习以下几点:1. **解题的多样性**:即使对于看似简单的问题,也可能有多种解决方法。这强调了在实际工作中对问题进行全面思考的重要性。2. **计算机的底层工作原理**:通过禁止使用常规的比较运算符,问题鼓励我们使用更低级的操作(如位操作)来解决问题。这提醒我们,高级的编程语言和操作(如比较运算符)在底层是如何实现的。原创 2023-09-03 02:23:49 · 291 阅读 · 0 评论 -
Leetcode 面试题 17.01 不用加号的加法
从这个问题中,我们可以学到多方面的知识和技能:1. **基础计算机科学知识**:这道题目介绍了如何使用位操作来模拟基本的算术运算,这反映了计算机在底层如何处理加法。2. **递归和迭代思维**:即使在这样的问题中,递归和迭代的应用也是一个重要的思维模式。我们反复应用相同的逻辑,直到达到预期的结果。3. **处理边界情况**:考虑到整数溢出和32位限制,这提醒我们在解决问题时总是要注意潜在的边界情况和限制。4. **位操作技能**:位操作是许多算法和数据结构问题中的一个关键技能。原创 2023-09-03 01:48:01 · 491 阅读 · 0 评论 -
Leetcode 461.汉明距离
## 步骤总结:1. **输入**:通过C语言的`scanf`函数或C++的`cin`函数进行整数输入。2. **整型数转为二进制**:- **问题**: 如何将10进制整型数转化为2进制?- **我的解答**:1. 使用**辗转相除法**。这种方法通过不断地除以2并记录余数,可以得到整数的二进制表示。但这个方法比较繁琐。2. 利用**异或运算**。异或会直接对整数的二进制表示进行操作。例如,进行`x ^ y`操作,C/C++ 会自动把`x`和`y`转化为二进制后再进行运算。原创 2023-09-01 00:45:42 · 527 阅读 · 0 评论 -
Leetcode 191.位1的个数
1.运算符>>知识点尤其是移位运算不熟悉2.原创 2023-08-28 01:34:25 · 521 阅读 · 0 评论 -
Leetcode 2651.计算列车到站时间
给你一个正整数表示列车正点到站的时间(单位:小时),另给你一个正整数表示列车延误的小时数。返回列车实际到站的时间。注意,该问题中的时间采用 24 小时制。20列车正点到站时间是 15:00 ,延误 5 小时,所以列车实际到站的时间是 15 + 5 = 20(20:00)。0列车正点到站时间是 13:00 ,延误 11 小时,所以列车实际到站的时间是 13 + 11 = 24(在 24 小时制中表示为 00:00 ,所以返回 0)。我的答案:一、信息1.给我正整数arT-表示列车正点到站时间。原创 2023-08-28 00:00:43 · 493 阅读 · 0 评论 -
Leetcode 1812。判断国际象棋棋盘中一个格子的颜色
其实步骤很简单就分为两步,但是实现原理我有两种思路,第一种数学归纳法 就是通过数学规律求出规律然后求解 第二种 模拟 模拟有分两种通过二进制10101010来近似模拟黑白黑白相间的情况,第二种就是通过异或来实现不一样。,它是一个字符串,表示国际象棋棋盘中一个格子的坐标。4.规则:如果所给格子的颜色是白色—true 如果是黑色返回false。如上图棋盘所示,"a1" 坐标的格子是黑色的,所以返回 false。如上图棋盘所示,"h3" 坐标的格子是白色的,所以返回 true。Leetcode题解。原创 2023-08-26 23:43:22 · 834 阅读 · 0 评论 -
Leetcode 2235.两整数相加
我的想法步骤2和步骤3可以分开也可以合并这就有两个思路了,第一种如果分开就用三个或两个变量相加放到其中一个变量中,第二种如果合并直接return不赋给任何变量。num1 是 12,num2 是 5 ,它们的和是 12 + 5 = 17 ,因此返回 17。num1 + num2 = -6 ,因此返回 -6。条件2 告诉我这一次操纵这些数的要实现的目标。条件1 告诉我此次变量的个数为两个。,返回这两个整数的和。原创 2023-08-26 22:55:05 · 692 阅读 · 0 评论 -
Letcode 两数之和
哈希表(Hash Table)是一种基于哈希函数(Hash Function)实现的数据结构,用于支持快速的插入、删除、查找操作。它的核心思想是通过将元素的关键字映射为一个索引(即哈希值),将元素存储在数组中对应索引的位置上,从而实现快速查找的目的。哈希表包括两个基本操作:插入和查找。对于插入操作,我们首先计算出待插入元素的哈希值,然后将元素存储在哈希值对应的位置上;对于查找操作,我们先计算出目标元素的哈希值,然后在哈希表中查找是否存在该元素。原创 2023-04-18 23:09:24 · 452 阅读 · 0 评论