
2021秋招刷题指南
leetcode,剑指offer
努力努力再努力F_
这个作者很懒,什么都没留下…
展开
-
Leetcode刷题指南-剑指 Offer 53 - II. 0~n-1中缺失的数字
文章目录1)题目一维数组的动态和要求:样例:2)思路3)代码朴素解法高效解法-二分法1)题目一维数组的动态和要求:一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。样例:示例 1:输入: [0,1,3]输出: 2示例 2:输入: [0,1,2,3,4,5,6,7,9]输出: 82)思路思路1:遍历数组,如果每一位i都等于i,则返回i+1;否则返回i;思路2:原创 2020-06-23 14:51:13 · 313 阅读 · 0 评论 -
Leetcode刷题指南-1480一维数组的动态和
文章目录1)题目一维数组的动态和要求:样例:2)思路3)代码朴素解法高效解法1)题目一维数组的动态和要求:给你一个数组 nums 。数组「动态和」的计算公式为:runningSum[i] = sum(nums[0]…nums[i]) 。请返回 nums 的动态和。样例:示例 1:输入:nums = [1,2,3,4]输出:[1,3,6,10]解释:动态和计算过程为 [1, 1+2, 1+2+3, 1+2+3+4] 。示例 2:输入:nums = [1,1,1,1,1]输出:[1原创 2020-06-23 08:59:45 · 459 阅读 · 0 评论 -
Leetcode刷题指南-1051高度检查器
文章目录1)题目高度检查器要求:样例:2)思路3)代码冒泡排序解法1)题目高度检查器要求:学校在拍年度纪念照时,一般要求学生按照 非递减 的高度顺序排列。请你返回能让所有学生以 非递减 高度排列的最小必要移动人数。注意,当一组学生被选中时,他们之间可以以任何可能的方式重新排序,而未被选中的学生应该保持不动。样例:输入:heights = [1,1,4,2,1,3]输出:3 解释:当前数组:[1,1,4,2,1,3]目标数组:[1,1,1,2,3,4]在下标 2 处(从 0 开始计数原创 2020-06-22 14:53:08 · 358 阅读 · 0 评论 -
Leetcode刷题指南
本人从2019.10.22开始刷数据结构与算法,刷题参照以下教程;程序员必须掌握的核心算法有哪些?参考书籍:c++primer;数据结构与算法分析–c语言描述;剑指offer在线刷题网站:lintcode...原创 2019-10-24 16:48:58 · 590 阅读 · 0 评论 -
Leetcode刷题指南-爬楼梯70
文章目录1)题目搜索插入位置要求:样例:2)思路3)代码斐波那契数列优化解法斐波那契数列递归解法1)题目搜索插入位置要求:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。样例:示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1 阶 + 1 阶2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1 阶 + 1 阶 + 1 阶1 阶 + 2原创 2020-06-20 09:58:59 · 330 阅读 · 0 评论 -
Leetcode刷题指南-x 的平方根69
文章目录1)题目搜索插入位置要求:样例:2)思路3)代码二分查找:1)题目搜索插入位置要求:实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。样例:示例 1:输入: 4输出: 2示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842…,由于返回类型是整数,小数部分将被舍去。2)思路二分法 找mid,计算mid的平方与x的大小,然后判断,不断缩小范围,若没找到正原创 2020-06-19 09:25:31 · 243 阅读 · 0 评论 -
leetcode题目出现频率
原创 2020-06-18 08:39:07 · 1383 阅读 · 0 评论 -
Leetcode刷题指南-67二进制求和
文章目录1)题目二进制求和要求:样例:2)思路3)代码1)题目二进制求和要求:给你两个二进制字符串,返回它们的和(用二进制表示)。输入为 非空 字符串且只包含数字 1 和 0。样例:示例 1:输入: a = “11”, b = “1”输出: “100”示例 2:输入: a = “1010”, b = “1011”输出: “10101”2)思路二进制求和,满二进一首先让两个字符串等长,若不等长,在短的字符串前补零,否则之后的操作会超出索引。然后从后到前遍历所有的位数,同位相加,原创 2020-06-17 17:18:03 · 360 阅读 · 0 评论 -
Leetcode刷题指南-加一66
文章目录1)题目加一要求:样例:2)思路3)代码1)题目加一要求:给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。样例:示例 1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例 2:输入: [4,3,2,1]输出: [4,3,2,2]解释: 输入数组表示数字 4321。2)思路只需在原数组中操作。将数组从个位原创 2020-06-16 09:55:05 · 175 阅读 · 0 评论 -
Leetcode刷题指南-最后一个单词的长度-58
文章目录1)题目最后一个单词的长度要求:样例:2)思路3)代码1)题目最后一个单词的长度要求:给定一个仅包含大小写字母和空格 ’ ’ 的字符串 s,返回其最后一个单词的长度。如果字符串从左向右滚动显示,那么最后一个单词就是最后出现的单词。如果不存在最后一个单词,请返回 0 。说明:一个单词是指仅由字母组成、不包含任何空格字符的 最大子字符串。样例:示例:输入: “Hello World”输出: 52)思路从前往后计数,计数非0的字符存在res里,遇到空格就清空res,直到遇到\0字符原创 2020-06-15 10:07:55 · 166 阅读 · 0 评论 -
Leetcode刷题指南-回文数-9
文章目录1)题目最长公共前缀要求:样例:2)思路3)代码1)题目最长公共前缀要求:判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。样例:示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。2)思路第一种思路:若小于原创 2020-06-11 20:40:25 · 238 阅读 · 0 评论 -
Leetcode刷题指南-移除元素-27
文章目录1)题目最长公共前缀要求:样例:2)思路3)代码1)题目最长公共前缀要求:给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。样例:示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考原创 2020-06-11 16:13:42 · 302 阅读 · 0 评论 -
Leetcode刷题指南-有效的括号-20
文章目录1)题目最长公共前缀要求:样例:2)思路3)代码1)题目最长公共前缀要求:给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。样例:示例 1:输入: “()”输出: true示例 2:输入: “()[]{}”输出: true示例 3:输入: “(]”输出: false示例 4:输入: “([)]”输出:原创 2020-06-10 20:26:47 · 426 阅读 · 0 评论 -
Leetcode刷题指南-最长公共前缀-14
文章目录1)题目最长公共前缀要求:样例:2)思路3)代码1)题目最长公共前缀要求:编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。样例:示例 1:输入: [“flower”,“flow”,“flight”]输出: “fl”示例 2:输入: [“dog”,“racecar”,“car”]输出: “”解释: 输入不存在公共前缀。2)思路若有公共前缀,则数组中第一个字符串一定也有部分字符为公共前缀(比如公共前缀为fl,则第一个字符一定也含fl);原创 2020-06-10 15:47:27 · 327 阅读 · 0 评论 -
Leetcode刷题指南-罗马数字转整数-13
文章目录1)题目罗马数字转整数要求:样例:2)思路3)代码1)题目罗马数字转整数要求:罗马数字转整数样例:输入: “III”输出: 32)思路记录每个标识符的个数,并计数3)代码#pragma once#include<String>using namespace std;class Solution {public: int romanToInt(string s) { int count_IV = 0; int count_IX = 0; in原创 2020-06-10 09:34:07 · 157 阅读 · 0 评论 -
Leetcode刷题指南-反转一个32位有符号整数-7
文章目录1)题目反转一个32位有符号整数要求:样例:2)思路3)代码1)题目反转一个32位有符号整数要求:反转一个32位有符号整数样例:输入: number = 123输出: 3212)思路3)代码class Solution {public: int reverse(int x) { if(x/10 == 0) return x; //平凡情况:若x∈[-9,9],则直接返回其本身 int y = 0; while(x) {原创 2020-06-09 21:15:23 · 390 阅读 · 1 评论 -
剑指Offer精选编程面试题16-整值的整数次方
文章目录1)题目整值的整数次方要求:2)思路3)代码与测试1)题目整值的整数次方要求:2)思路总体来分两种思路一: 直接循环求解,需要考虑exponent为0和负数的情况思路二: 快速幂3)代码与测试(1)快速幂代码class Solution {public: double myPow(double base, int n) { double res = 1.0; int exp = n; while(exp){原创 2020-06-08 15:38:26 · 92 阅读 · 0 评论 -
剑指Offer精选编程面试题14-剪绳子
文章目录1)题目剪绳子要求:2)思路3)补充知识4)代码与测试1)题目剪绳子要求:给你一根长度为n的绳子,请把绳子剪成m段(m,n都是整数,n > 1 并且m > 1),每段绳子的长度记为k[0], k[1], …k[m]。请问k[0] x k[1] x … x k[m]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积...原创 2020-01-10 09:08:25 · 350 阅读 · 0 评论 -
剑指Offer精选编程面试题15-二进制中1的个数
文章目录1)题目二进制中1的个数要求:2)思路3)代码与测试1)题目二进制中1的个数要求:输入一个整数,输出该数二进制表示中1的个数。如输入9,则输出2。2)思路总体来分三种思路一: 将整数与1做位与运算,若为1,则1的个数加1,然后将整数减去1继续操作(此操作相当于不断右移整数,然后把判断整数最后一位是否为1)思路一弊端:此操作输入负数的时候容易引发死循环,因为负数移位的时候...原创 2020-01-09 08:58:54 · 212 阅读 · 0 评论 -
剑指Offer精选编程面试题11-旋转数组的最小数字
文章目录1)题目旋转数组的最小数字要求:2)思路3)代码1)题目旋转数组的最小数字要求:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。2)思路总体来分三种思路一: 直接遍历数组,找最小值,但这样的时间复杂度为O(n)O(n)O(n)。思路二:使用二分法查找,将旋转之后的数组划分为两个排序的子...原创 2019-12-31 10:28:58 · 240 阅读 · 0 评论 -
剑指Offer精选编程面试题10-斐波那契数列求解
文章目录1)题目斐波那契数列求解要求:2)思路3)代码1)题目斐波那契数列求解要求:写一个函数,输入n,求解斐波那契数列的第n项,斐波那契数列的定义如下2)思路结合时间复杂度考虑,有以下几种解法(1)可以使用递归来实现,但n过大的时候,存在调用栈溢出的问题(因为求解过程中存在很多重复求解的子问题),时间复杂度O(2n)O(2^n)O(2n)。(2)可以用自下而上的方法循环解决问题...原创 2019-12-26 09:19:48 · 306 阅读 · 0 评论 -
剑指Offer精选编程面试题9-用两个栈实现队列(相关题目:用两个队列实现栈)
文章目录1)题目用两个栈实现队列(相关题目:用两个队列实现栈)要求:2)思路3)代码(1)用两个栈来实现一个队列,完成队列的Push和Pop操作(2)用两个队列来实现一个栈,完成栈的Push和Pop操作1)题目用两个栈实现队列(相关题目:用两个队列实现栈)要求:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。用两个队列来实现一个栈,完成栈的Push和...原创 2019-12-25 21:10:52 · 274 阅读 · 0 评论 -
剑指Offer精选编程面试题6-从尾到头打印链表
文章目录1)题目从尾到头打印链表要求:2)思路3)代码1)题目从尾到头打印链表要求:输入一个链表,返回一个反序的链表。2)思路首先需要确认的是是否可以改变原有链表的结构。(1)在不改变链表结构的这种情况下,我们不希望修改原链表的结构。返回一个反序的链表,这就是经典的“后进先出”,我们可以使用栈实现这种顺序。每经过一个结点的时候,把该结点放到一个栈中。当遍历完整个链表后,再从栈顶开始逐...原创 2019-12-23 17:22:03 · 228 阅读 · 0 评论 -
剑指Offer精选编程面试题3-数组中重复的数字
文章目录1)题目数组中重复的数字要求:样例2)思路3)小结4)代码1)题目数组中重复的数字要求:题目:在一个长度为n的数组里的所有数字都在0到n-1的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。样例例如,如果输入长度为7的数组{2, 3, 1, 0, 2, 5, 3},那么对应的输出是重复的数字2或者3。2)思...原创 2019-12-05 10:10:06 · 250 阅读 · 0 评论 -
剑指Offer精选编程面试题4-二维数组中的查找
文章目录1)题目二维数组中的查找要求:样例2)思路3)小结4)代码1)题目二维数组中的查找要求:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。样例2)思路注意题目说的数组,无论是列还是行,都是递增的,所有这个矩阵,是个有序矩阵,则可以根据这个矩阵的特点进行查找。矩...原创 2019-12-05 09:23:48 · 242 阅读 · 2 评论 -
剑指Offer精选编程面试题5-替换空格
文章目录1)题目替换空格要求:样例2)思路3)代码1)题目替换空格要求:请实现一个函数,把字符串中的每个空格替换成"%20"。样例输入:“We are happy.”输出:“We%20are%20happy.”2)思路从后往前替换,这样每个字符只需要移动一次,时间复杂度为O(n),第一,将原字符串扩充到替换后字符串长度;第二,设置两个指针P1,P2,使得P1指向原字符串末尾,P2...原创 2019-11-12 08:43:25 · 284 阅读 · 0 评论 -
Leetcode刷题指南-子数组的最小值之和1734)不太懂
文章目录1)题目子数组的最小值之和要求:样例2)思路3)代码1)题目子数组的最小值之和要求:给定一个整数数组 A,找到 min(B) 的总和,其中 B 的范围为 A 的每个(连续)子数组。样例输入:[3,1,2,4]输出:17解释:子数组为 [3],[1],[2],[4],[3,1],[1,2],[2,4],[3,1,2],[1,2,4],[3,1,2,4]。最小值为 3,1,...原创 2019-11-29 08:35:37 · 360 阅读 · 0 评论 -
Leetcode-栈相关题目刷题总结
文章目录前言前言栈在c++中常用vector,一般数组,链表来表示,所以vector一些常用操作都要熟悉,可参考C++ vector容器总结栈的数据结构一般有一个指示符,指示符为栈的大小,则栈满,指示符为0,则栈空栈用vector实现,个人觉得更简单一点,出栈可以弹出vector的最后一个元素,pop_back操作,入栈则为push_back操作,栈满则判断vector的size是否等...原创 2020-06-22 08:37:50 · 262 阅读 · 0 评论 -
Leetcode刷题指南-带最小值操作的栈(12)
文章目录1)题目带最小值操作的栈要求:样例2)思路3)代码1)题目带最小值操作的栈要求:实现一个栈, 支持以下操作:push(val) 将 val 压入栈pop() 将栈顶元素弹出, 并返回这个弹出的元素min() 返回栈中元素的最小值要求 O(1) 开销.样例输入:push(1)min()push(2)min()push(3)min()输出:1112)思...原创 2019-11-27 09:24:16 · 378 阅读 · 0 评论 -
Leetcode刷题指南-下一个更大的数(1206)
文章目录1)题目下一个更大的数要求:样例2)思路3)代码1)题目下一个更大的数要求:你有两个数组 nums1和nums2(互不重复),其中nums1是nums2的子集。 在nums2的相应位置找到nums1所有元素的下一个更大数字。nums1中的数字x的下一个更大数字是nums2中x右边第一个更大的数字。 如果它不存在,则为此数字输出-1。样例输入: nums1 = [4,1,2],...原创 2019-11-26 09:22:31 · 538 阅读 · 0 评论 -
Leetcode刷题指南-实现栈(495)
文章目录1)题目实现栈要求:样例2)思路3)代码1)题目实现栈要求:实现一个栈,可以使用除了栈之外的数据结构样例push(1)pop()push(2)top() // return 2pop()isEmpty() // return truepush(3)isEmpty() // return false2)思路用vector实现栈3)代码//头文件#prag...原创 2019-11-23 10:55:22 · 309 阅读 · 0 评论 -
Leetcode刷题指南-链表的中间结点(1609)
文章目录1)题目链表两数相乘要求:样例2)思路3)代码两种方法:1)题目链表两数相乘要求:输出链表的中间结点,给定一个带有头节点head的非空单链表,返回链表的中间节点。如果有两个中间节点,则返回第二个中间节样例Example 1:Input: 1->2->3->4->5->nullOutput: 3->4->5->nullExa...原创 2019-11-08 21:23:41 · 263 阅读 · 0 评论 -
Leetcode刷题指南- 链表节点计数(466)
文章目录1)题目链表节点计数要求:样例:2)思路3)代码普通方法:1)题目链表节点计数要求:计算链表中有多少个节点。样例:样例 1:输入: 1->3->5->null输出: 3样例解释: 返回链表中结点个数,也就是链表的长度.样例 2:输入: null输出: 0样例解释: 空链表长度为02)思路从头节点开始遍历,不为空,计数加13)代...原创 2019-12-26 21:00:21 · 303 阅读 · 0 评论 -
Leetcode刷题指南- 链表两数相乘(756)
文章目录1)题目链表节点计数要求:样例:2)思路3)代码普通方法:1)题目链表节点计数要求:计算链表中有多少个节点。样例:样例 1:输入: 1->3->5->null输出: 3样例解释: 返回链表中结点个数,也就是链表的长度.样例 2:输入: null输出: 0样例解释: 空链表长度为02)思路从头节点开始遍历,不为空,计数加13)代...原创 2019-11-08 08:25:18 · 942 阅读 · 0 评论 -
Leetcode刷题指南- 删除排序链表中的重复元素(112)
文章目录1)题目删除排序链表中的重复元素要求:样例:2)思路3)代码普通方法:1)题目删除排序链表中的重复元素要求:给定一个排序链表,删除所有重复的元素每个元素只留下一个。样例:样例 1:输入: null输出: null样例 2:输入: 1->1->2->null输出: 1->2->null样例 3:输入: 1->1->2-&g...原创 2019-11-07 10:31:29 · 297 阅读 · 0 评论 -
Leetcode刷题指南- 翻转链表(35)
文章目录1)题目翻转一个链表要求:样例:2)思路3)代码普通方法:1)题目翻转一个链表要求:翻转一个链表样例:输入: 1->2->3->null输出: 3->2->1->null2)思路将链表从前往后遍历,判断是否为空,不为空,就将链表连接到前置节点,然后当前节点置为前置节点,继续往后遍历。3)代码普通方法:/** * Definiti...原创 2019-11-06 08:54:07 · 118 阅读 · 0 评论 -
Leetcode刷题指南- 字符串查找(13)
文章目录1)题目字符串查找要求:样例2)思路**A、暴力匹配具体思路:****B、KMP字符串查找算法**KMP伪代码求前缀后缀最长公共元素长度以及next数组3)代码(1)暴力匹配(2)KMP字符串查找算法1)题目字符串查找要求:对于一个给定的 source 字符串和一个 target 字符串,你应该在 source 字符串中找出 target 字符串出现的第一个位置(从0开始)。如果不...原创 2019-11-12 10:39:58 · 1124 阅读 · 0 评论 -
Leetcode刷题指南- 将字符串翻转到单调递增(1716)
文章目录1)题目将字符串翻转到单调递增要求:样例2)思路3)代码自己方法(不太对)1)题目将字符串翻转到单调递增要求:如果一个由 ‘0’ 和 ‘1’ 组成的字符串,是以一些 ‘0’(可能没有 ‘0’)后面跟着一些 ‘1’(也可能没有 ‘1’)的形式组成的,那么该字符串是单调递增的。我们给出一个由字符 ‘0’ 和 ‘1’ 组成的字符串 S,我们可以将任何 ‘0’ 翻转为 ‘1’ 或者将 ‘...原创 2019-11-11 20:04:42 · 377 阅读 · 0 评论 -
Leetcode刷题指南- 反转字符串(1283)
文章目录1)题目反转字符串要求:样例2)思路3)代码两种方法:1)题目反转字符串要求:写一个方法,接受给定字符串作为输入,返回将这个字符串逐个字符翻转后的新字符串。样例输入:“hello”输出:“olleh”样例 2:输入:“hello world”输出:“dlrow olleh”2)思路从后往前遍历字符串,将每一个字符串起来3)代码两种方法://头文件class ...原创 2019-11-11 15:49:33 · 441 阅读 · 0 评论 -
Leetcode-数组相关题目刷题总结
文章目录前言前言数组在c++中常用vector表示,所以vector一些常用操作都要熟悉,可参考C++ vector容器总结迭代器类型也要关注要善于利用二分查找来找数组中的值,减少时间复杂度与空间复杂度,可参考查找算法之二分查找的C++实现,二分查找 C/C++实现,二分查找第一次出现的元素可以利用两个指针对数组进行操作,可参考双指针技巧最大子数组可以用分治算法来做,参考最大子数组...原创 2019-10-30 20:51:21 · 297 阅读 · 0 评论