自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 剑指offer 3.数组中重复的元素

题目找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 1:输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3解法 抽屉原理class Solution {public: int findRepea...

2020-03-08 18:17:25 119

原创 leetcode 69. 求平方根

题目解法 牛顿迭代法/*fx = x^2 - a;fx = fx_0 + (x - x_0)(2 * x_0) = 0 x = (a - x^2) / (2 * x_0) + x_0*/class Solution {public: int mySqrt(int x) { double n = 1; double n1 = (x - n * n)/(2 ...

2020-03-07 17:40:28 104

原创 leetcode 54.螺旋矩阵

题目给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。示例 1:输入:[[ 1, 2, 3 ],[ 4, 5, 6 ],[ 7, 8, 9 ]]输出: [1,2,3,6,9,8,7,4,5]示例 2:输入:[[1, 2, 3, 4],[5, 6, 7, 8],[9,10,11,12]]输出: [1,2,3,4,...

2020-03-07 17:22:21 107

原创 leetcode 51. N皇后问题

题目n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。给定一个整数 n,返回所有不同的 n 皇后问题的解决方案。每一种解法包含一个明确的 n 皇后问题的棋子放置方案,该方案中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。示例:输入: 4输出: [[".Q…", // 解法 1“…Q”,“Q…”,“…Q.”],["…Q.", //...

2020-03-07 17:13:12 154

原创 leetcode 50. Pow(x,n)

题目实现 pow(x, n) ,即计算 x 的 n 次幂函数。解法 快速幂利用二进制运算的性质class Solution {public: double myPow(double x, int n) { long long N = n; //注意溢出 if(N < 0) { N = - N; ...

2020-03-07 16:53:55 53

原创 leetcode 48. 旋转图像

题目给定一个 n × n 的二维矩阵表示一个图像。将图像顺时针旋转 90 度。说明:你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。解法 转置矩阵先专职,然后交换列class Solution {public: void rotate(vector<vector<int>>& matrix) { ...

2020-03-07 16:51:42 60

原创 leetcode 45.跳跃游戏2

题目给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。解法 贪心算法正向遍历class Solution {public: int jump(vector<int>& nums) { int len = nums.size(); ...

2020-03-07 16:38:53 57

原创 leetcode 43.字符串相乘

题目给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。示例 1:输入: num1 = “2”, num2 = “3”输出: “6”示例 2:输入: num1 = “123”, num2 = “456”输出: “56088”解法 竖式运算/*1 2 3 41 2 3 41 11 1*/cla...

2020-03-07 16:38:26 73

原创 leetcode 42. 接雨水

题目给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。示例:输入: [0,1,0,2,1,0,1,3,2,1,2,1]输出: 6解法 双指针法/*利用双指针算法边走变算*/class Solution {public: int trap(vector<int>& height) { if(h...

2020-03-07 16:00:44 76

原创 leetcode 41.缺失的第一个整数

题目给定一个未排序的整数数组,找出其中没有出现的最小的正整数。示例 1:输入: [1,2,0]输出: 3示例 2:输入: [3,4,-1,1]输出: 2示例 3:输入: [7,8,9,11,12]输出: 1解法 抽屉原理class Solution {public: int firstMissingPositive(vector<int>& n...

2020-03-07 15:37:04 65

原创 leetcode 38.外观数列

题目「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。前五项如下:1112112111112211 被读作 “one 1” (“一个一”) , 即 11。11 被读作 “two 1s” (“两个一”), 即 21。21 被读作 “one 2”, “one 1” (“一个二” , “一个一”) , 即 1211...

2020-03-07 14:42:20 204

原创 leetcode 32. 最长有效括号

题目给定一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长的包含有效括号的子串的长度。示例 1:输入: “(()”输出: 2解释: 最长有效括号子串为 “()”示例 2:输入: “)()())”输出: 4解释: 最长有效括号子串为 “()()”解法 动态规划/*优化dpdp代表包含第i个元素的最大括号长度递归规则dp[i] == ')' dp[i - 1] == '('...

2020-03-07 14:21:32 60

原创 leetcode 31.下一个排列

题目实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须原地修改,只允许使用额外常数空间。以下是一些例子,输入位于左侧列,其相应输出位于右侧列。1,2,3 → 1,3,23,2,1 → 1,2,31,1,5 → 1,5,1解法标准的“下一个排列”算法可以描述为:从后向前...

2020-03-07 14:13:38 117

原创 leetcode 29.两数相除

题目给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。返回被除数 dividend 除以除数 divisor 得到的商。解法class Solution {public: int divide(int dividend, int divisor) { if(dividend == 0) return...

2020-03-07 13:33:34 61

原创 leetcode 28.实现strStr()

题目实现 strStr() 函数。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。解法 KMP构建一个状态转换表.next数组太难理解了。采用leetcode上labuladong大佬的思路。用更容易的状态转换表来表示。//KMPclass Soluti...

2020-03-07 12:01:17 68

原创 leetcode 27.移除元素

题目给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。解法/*逆序或者正序都可以做,正序反而稍微简单些*/class Solution {public: int re...

2020-03-07 11:52:22 111

原创 leetcode 26. 删除排序数组中的重复元素

题目给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。解法 双指针class Solution {public: int removeDuplicates(vector<int>& nums) { ...

2020-03-07 11:43:39 236

原创 leetcode 25. K个一组反转链表

题目给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。示例:给你这个链表:1->2->3->4->5当 k = 2 时,应当返回: 2->1->4->3->5当 k = 3 时,应当返回: 3->2-&g...

2020-03-07 11:32:38 105

原创 leetcode 24.两两交换链表的节点

题目给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例:给定 1->2->3->4, 你应该返回 2->1->4->3.解法 递归/** * Definition for singly-linked list. * struct ListNode { * int ...

2020-03-07 11:24:27 121

原创 leetcode 23. 合并K个排序链表

题目合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例:输入:[  1->4->5,  1->3->4,  2->6]输出: 1->1->2->3->4->4->5->6来源:力扣(LeetCode)链接:https://leetc...

2020-03-07 11:18:53 62

原创 leetcode 22.括号生成

题目给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。例如,给出 n = 3,生成结果为:[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”]解法 回溯法class Solution {public: vector<string> generateParenthesis(in...

2020-03-07 11:11:21 52

原创 leetcode 21.合并两个有序链表

题目将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4解法 递归每次确定有序链表的第一个元素。/** * Definition for singly-linked list. * struct ListN...

2020-03-07 11:04:12 50

原创 leetcode 20.有效的括号

题目给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。解法 维护一个栈遇到右括号则依次弹出栈的元素,知道遇到一个左括号。最后栈不为空或者弹出失败则不匹配。class Solution {public: bool i...

2020-03-07 10:47:25 51

原创 leetcode 19. 删除链表的倒数第N个节点

给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.解法 快慢指针/** * Definition for singly-linked list. * struct ListNode { * i...

2020-03-07 10:43:51 44

原创 leetcode 18. 四数之和

题目给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。注意:答案中不可以包含重复的四元组。示例:给定数组 nums = [1, 0, -1, 0, -2, 2],和 target = 0。满足要求的四元组集合为:...

2020-03-07 10:39:47 94

原创 leetcode 17.电话号码的字母组合

题目解法 BFS + hash/*广度遍历,利用队列实现*/class Solution {private: unordered_map<char,string> tel_map; queue <string> re_queue; vector<string> result;public: Solution() ...

2020-03-07 10:37:28 59

原创 leetcode 16.最接近的三数之和

题目给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。例如,给定数组 nums = [-1,2,1,-4], 和 target = 1.与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2).解法 3指针解法大致思路和三数之和类似...

2020-03-07 10:28:47 82

原创 leetcode 15. 三数之和

题目给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。示例:给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[[-1, 0, 1],[-1, -1, 2]]解法 双指针首先将数组按照升序...

2020-02-24 17:03:30 54

原创 leetcode 14.最长公共前缀

题目解法 横向比对class Solution {public: string longestCommonPrefix(vector<string>& strs) { if(strs.size() == 0) return ""; else if(strs.size() == 1) r...

2020-02-23 18:14:21 48

原创 leetcode 13.罗马数字转整数

题目罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1...

2020-02-23 16:51:47 48

原创 leetcode 12.整数转罗马数字

题目罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1...

2020-02-23 16:44:25 45

原创 leetcode 11.盛最多水的容器

题目给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。示例:输入: [1,8,6,2,5,4,8,3,7]输出: 49解法 双指针短板原理一开...

2020-02-23 16:37:25 47

原创 leetcode 9.回文数

题目判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。解法ke...

2020-02-23 16:28:28 56

原创 leetcode 7. 整数反转

##题目给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。解法在不转换成字符串...

2020-02-23 16:19:58 77

原创 leetcode 6. Z字型变换

题目将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 “LEETCODEISHIRING” 行数为 3 时,排列如下:L C I RE T O E S I I GE D H N之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“LCIRETOESIIGEDHN”。请你实现这个将字符串进行指定行数变换的函数:...

2020-02-23 16:15:27 81

原创 leetcode3. 最大回文子串

题目给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: “babad”输出: “bab”注意: “aba” 也是一个有效答案。示例 2:输入: “cbbd”输出: “bb”解法1 暴搜暴力搜索,遍历所有子串需要O(n2)O(n^2)O(n2)复杂度,再检验总共需要O(n3)O(n^3)O(n3)复杂度,这种思路时间代价太大,...

2020-02-23 16:10:07 100

原创 整理 1

整理一下牛客网上的我觉得值得mark的题目,代码都是cpp.1.求最小公倍数本题实际上是求最大公约数。如何求最大公约数? 辗转相除法。maxdif(a,b)={ab=0maxdif(b,a%b)othermaxdif(a,b)= \begin{cases} a & b = 0 \\maxdif(b,a\%b) & other\end{cases}maxdif(a,b...

2020-02-15 14:42:32 160

原创 leetcode 4. 寻找有序数组的中位数

题目给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。示例 1:nums1 = [1, 3]nums2 = [2]则中位数是 2.0示例 2:nums1 = [1, 2]nums2 = [3, 4]则中位数是 (...

2020-02-15 10:30:29 184

原创 leetcode84.柱状图的最大矩形

题目给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。以上是柱状图的示例,其中每个柱子的宽度为 1,给定的高度为 [2,1,5,6,2,3]。图中阴影部分为所能勾勒出的最大矩形面积,其面积为 10 个单位。示例:输入: [2,1,5,6,2,3]输出: 10解法1 暴力遍历暴力遍历即列举出给定...

2020-02-09 21:36:48 112

原创 leetcode 287.寻找重复数

题目《剑指offer》第三题给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。示例 1:输入: [1,3,4,2,2]输出: 2示例 2:输入: [3,1,3,4,2]输出: 3解法1 排序将数组进行任意排序,便可以将重复元素安排在一起。然后通过一次遍历,...

2020-02-06 21:03:08 124

空空如也

空空如也

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

TA关注的人

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