Leetcode
文章平均质量分 69
--believe
这个作者很懒,什么都没留下…
展开
-
剑指 Offer 62. 圆圈中最后剩下的数字思路推导(约瑟夫环、DP、递归)
一、题目剑指 Offer 62. 圆圈中最后剩下的数字(约瑟夫环、DP、递归)题目描述0,1,···,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字(删除后从下一个数字开始计数)。求出这个圆圈里剩下的最后一个数字。示例1:输入: n = 5, m = 3输出: 3示例2:输入: n = 10, m = 17输出: 2二、分析这是一道典型的约瑟夫环问题。n个数字,每次删除第m个数字,求最后剩下的一个数字是多少。我们用动态规划的思想去做这道题。首先假设 f原创 2022-01-02 21:12:44 · 340 阅读 · 0 评论 -
剑指 Offer 68 - I. 二叉搜索树的最近公共祖先(二叉搜索树性质、迭代、递归)
一、题目剑指 Offer 68 - I. 二叉搜索树的最近公共祖先题目描述给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。示例1:输入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 8输出: 6 示例2:输入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 4输出: 2二、分析这道题是一道leetcode简单题。但是一拿到题的时候有点蒙圈。题目条件限定二叉搜索树,原创 2021-12-25 13:46:14 · 412 阅读 · 0 评论 -
剑指 Offer 64. 求1+2+…+n(递归+短路运算)
一、题目剑指 Offer 64. 求1+2+…+n题目描述求 1+2+...+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。示例1:输入: n = 3输出: 6示例2:输入: n = 9输出: 45二、分析递归+短路运算这道题本来很简单,但是限制很多,就变得困难。这道题不能用乘除法,意味着$ 1+2+3+…n=(1+n)*n/2 $不能用到这道题中。再考虑用递归的思想,我们很容易写出递归代码int原创 2021-12-25 11:00:31 · 296 阅读 · 0 评论 -
C++字符串和数字相互转换(刷题必备)
C++数字和字符串相互转换C++数字和字符串相互转换,此文详细介绍了两者互相转换的方法。通过内置函数和字符串流(对象)来实现转换。数字转字符串方法1:to_string()函数#include<iostream>#include<string>using namespace std;int main() { int num = 12345; string num_s = to_string(num);//转换 cout << num_s.at(0);原创 2021-12-23 19:54:07 · 1139 阅读 · 0 评论 -
剑指 Offer 43. 1~n 整数中 1 出现的次数(纵向求解、组合思想、找规律)
一、题目剑指 Offer 43. 1~n 整数中 1 出现的次数题目描述输入一个整数 n ,求1~n这n个整数的十进制表示中1出现的次数。例如,输入12,1~12这些整数中包含1 的数字有1、10、11和12,1一共出现了5次。示例1:输入:n = 12输出:5示例2:输入:n = 13输出:6二、分析方法1 暴力(横向求法)暴力遍历小于等于n的所有数,针对每一个数字,求其所有位数上1的个数(对每个数字进行横向计数)。但是此方法时间复杂度随着n的增大会变大。时间复杂度过高,导致原创 2021-12-22 17:48:07 · 394 阅读 · 0 评论 -
剑指 Offer 14- I. 剪绳子(C++暴力+动态规划、贪心解)
一、题目剑指 Offer 14- I. 剪绳子题目描述给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]…k[m-1] 。请问 k[0]k[1]…*k[m-1] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。示例1:输入: 2输出: 1解释: 2 = 1 + 1, 1 × 1 = 1示例2:输入: 10输出: 36解释:原创 2021-12-21 20:03:06 · 670 阅读 · 0 评论 -
剑指 Offer 65. 不用加减乘除做加法(位运算、递归、迭代)
一、题目剑指 Offer 65. 不用加减乘除做加法题目描述写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。示例1:输入: a = 1, b = 1输出: 2示例2:输入: a = -1, b = -1输出: -2二、分析这道题不能用加减乘除来做,那么只能用位运算了。我们先考虑a和b为一位二进制数,通过查看a+b来找规律,表格如下:absumcarry0000011010原创 2021-12-18 16:37:39 · 449 阅读 · 0 评论 -
剑指 Offer 56 - II. 数组中数字出现的次数 II(二进制求和模运算)
一、题目剑指 Offer 56 - II. 数组中数字出现的次数 II(位运算的妙用)题目描述在一个数组 nums 中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。示例1:输入:nums = [3,4,3,3]输出:4示例2:输入:nums = [9,1,7,9,7,9,7]输出:1二、分析方法1:hashMap统计个数,遍历返回比较常规的思路就是通过hashMap统计个数,然后遍历返回即可。思路简单,但这种方法显示没有充分利用题中的条件其他原创 2021-12-16 12:57:44 · 847 阅读 · 0 评论 -
汉诺塔的非递归实现(借助堆栈模拟递归)
汉诺塔的非递归实现借助堆栈以非递归(循环)方式求解汉诺塔的问题(n,a,b,c)。即将n个盘子从起始柱(标记为“a”)通过借助柱(标记为“b”)移动到目标杜(标记为“c”),并保证每个移动符合汉诺塔问题的要求。思路分析汉诺塔问题求解的基本思路是,不断将n个盘的汉诺塔问题转换为2个n-1盘的汉诺塔问题,因此用递归实现是很自然的方法。当把n盘问题转换为n-1 盘问题时,问题的起始柱子和目标柱子也发生了变化。设n盘问题为(n,a,b,c),其中参数如实验内容中所定义,则问题的求解可转换为对(n-1,a,c,原创 2021-12-14 19:52:40 · 4462 阅读 · 2 评论 -
剑指 Offer 56 - I. 数组中数字出现的次数(位运算)-真是妙蛙种子吃着妙脆角秒进米奇妙妙屋秒到家了
一、题目剑指 Offer 56 - I. 数组中数字出现的次数(位运算的妙用)题目描述一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。示例1:输入: [4,1,4,6]输出: [1,6]或者[6,1]示例2:输入: [1,2,10,4,1,4,3,3]输出: [2,10] 或 [10,2]二、分析1.方法1:排序后,暴力遍历这种方法思路简单,但是时间复杂度较高。排序消耗原创 2021-12-12 15:35:27 · 650 阅读 · 0 评论 -
剑指 Offer 52. 两个链表的第一个公共节点(浪漫相遇法+多解)
一、题目剑指 Offer 52. 两个链表的第一个公共节点题目描述输入两个链表,找出它们的第一个公共节点。示例1:输入: A=[4,1,8,4,5] B=[5,0,1,8,4,5]输出: 8示例2:输入: A=[4,1,8] B=[5,0,1]输出: NULL二、分析1.方法1:消除差距法两个链表相交之后,后面都是一样的,需要找第一个公共节点。但是他们的第一个公共节点在哪儿呢。我们通过两个链表的长度之差,定位到长链表的遍历起始地方。此举消除了起始位置差,保证了两个链原创 2021-12-11 17:20:07 · 630 阅读 · 1 评论 -
剑指offer45把数组排成最小的数(排序)
一、题目剑指 Offer 45. 把数组排成最小的数题目描述输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。示例1:输入: [10,2]输出: "102"示例2:输入: [3,30,34,5,9]输出: "3033459"二、分析1.方法1:暴力组合法我们可能下意识会想到用DFS求组合的方法,将所有情况暴力枚举出来。然后再比较得到最小的组合方法。时间复杂度:组合O(n!)+ 比较O(n)空间复杂度:O(n)时间复杂度太高,此方原创 2021-12-11 16:40:36 · 541 阅读 · 0 评论 -
剑指 Offer 41 数据流中的中位数-图解优先队列求中位数(优先队列、堆排序)
文章目录一、题目剑指 Offer 41 数据流中的中位数题目详细描述二、分析详细分析传统方法堆堆求中位数方法数据结构准备如何添加元素如何获取中位数总结方法:三、代码一、题目剑指 Offer 41 数据流中的中位数题目详细描述如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。例如,[2,3,4] 的中位数是 3[2,3] 的中位数是 (2 + 3) / 2 =原创 2021-11-23 16:36:49 · 1454 阅读 · 0 评论