自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

92377

Far from being a good programmer

  • 博客(39)
  • 资源 (1)
  • 收藏
  • 关注

原创 归并排序-数组

二路归并代码//二路归并class Solution{public: //归并排序(递归) void mergeSort(vector<int> nums, int left, int right){ if(left>=right){ return; } int mid = left + (right-left)>>1; mergeSort(nums,left,mid)

2020-07-31 23:52:27 120

原创 leetcode160. 相交链表

题目描述编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:在节点 c1 开始相交。示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Reference of the node with value = 8输入解释:相交节点的值为 8 (注意,如果两个链表相交则不能为 0)。从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为

2020-07-31 05:51:38 119

原创 leetcode141. 环形链表

题目描述给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。示例 1:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。示例 2:输入:head = [1,2], pos = 0输出:true解释:链表中有一个环,其尾部连接到第一个节点。示例 3:输入:head = [1], pos =

2020-07-31 01:52:57 399

原创 leetcode148. 排序链表

题目描述在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。示例 1:输入: 4->2->1->3输出: 1->2->3->4示例 2:输入: -1->5->3->4->0输出: -1->0->3->4->5code/** * Definition for singly-linked list. * struct ListNode { * int val; *

2020-07-30 23:24:24 159

原创 leetcode2. 两数相加

题目描述给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8code直接版/** * Definition for singly-linked l

2020-07-29 23:46:43 109

原创 剑指 Offer 24. 反转链表

题目描述定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL限制:0 <= 节点个数 <= 5000code利用数组/** * Definition for singly-linked list. * struct ListNode { * int val; * List

2020-07-29 23:10:57 103

原创 剑指 Offer 25. 合并两个排序的链表

题目描述输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。示例1:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4限制:0 <= 链表长度 <= 1000code迭代写法/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *nex

2020-07-26 02:30:31 77

原创 leetcode692. 前K个高频单词

题目描述给一非空的单词列表,返回前 k 个出现次数最多的单词。返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率,按字母顺序排序。示例 1:输入: ["i", "love", "leetcode", "i", "love", "coding"], k = 2输出: ["i", "love"]解析: “i” 和 “love” 为出现次数最多的两个单词,均为2次。注意,按字母顺序 “i” 在 “love” 之前。示例 2:输入: ["the", "day", "is",

2020-07-23 21:18:56 117

原创 leetcode347. 前 K 个高频元素

题目描述给定一个非空的整数数组,返回其中出现频率前 k 高的元素。示例 1:输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]示例 2:输入: nums = [1], k = 1输出: [1]提示:你可以假设给定的 k 总是合理的,且 1 ≤ k ≤ 数组中不相同的元素的个数。你的算法的时间复杂度必须优于 O(n log n) , n 是数组的大小。题目数据保证答案唯一,换句话说,数组中前 k 个高频元素的集合是唯一的。你可以按任意顺序返回答案。

2020-07-23 06:50:13 101

原创 leetcode704. 二分查找

题目描述给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。示例 1:输入: nums = [-1,0,3,5,9,12], target = 9输出: 4解释: 9 出现在 nums 中并且下标为 4示例 2:输入: nums = [-1,0,3,5,9,12], target = 2输出: -1解释: 2 不存在 nums 中因此返回 -1提示:你可以假设 n

2020-07-23 00:10:08 84

原创 leetcode796. 旋转字符串

题目描述给定两个字符串, A 和 B。A 的旋转操作就是将 A 最左边的字符移动到最右边。 例如, 若 A = ‘abcde’,在移动一次之后结果就是’bcdea’ 。如果在若干次旋转操作之后,A 能变成B,那么返回True。示例 1:输入: A = 'abcde', B = 'cdeab'输出: true示例 2:输入: A = 'abcde', B = 'abced'输出: falsecodesubstrclass Solution {public: bool r

2020-07-23 00:01:04 168

原创 剑指 Offer 58 - II. 左旋转字符串

题目描述字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。示例 1:输入: s = "abcdefg", k = 2输出: "cdefgab"示例 2:输入: s = "lrloseumgh", k = 6输出: "umghlrlose"限制:1 <= k < s.length <= 10000code复习一下

2020-07-22 23:10:47 95

原创 leetcode169. 多数元素

题目描述给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例 1:输入: [3,2,3]输出: 3示例 2:输入: [2,2,1,1,1,2,2]输出: 2codeC++库函数sort()使用的排序方法是快排,时间复杂度o(n*logn)beat25%class Solution {public: int majorityElement(vector&l

2020-07-22 22:57:23 84

原创 leetcode885. 螺旋矩阵 III

题目描述在 R 行 C 列的矩阵上,我们从 (r0, c0) 面朝东面开始这里,网格的西北角位于第一行第一列,网格的东南角位于最后一行最后一列。现在,我们以顺时针按螺旋状行走,访问此网格中的每个位置。每当我们移动到网格的边界之外时,我们会继续在网格之外行走(但稍后可能会返回到网格边界)。最终,我们到过网格的所有 R * C 个空间。按照访问顺序返回表示网格位置的坐标列表。示例 1:输入:R = 1, C = 4, r0 = 0, c0 = 0输出:[[0,0],[0,1],[0,2],[0

2020-07-22 20:12:31 141

原创 leetcode59. 螺旋矩阵 II

题目描述给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。示例:输入: 3输出:[ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ]]code同leetcode54. 螺旋矩阵class Solution {public: vector<vector<int> > generateMatrix(int n) { vector<vector<in

2020-07-22 00:07:23 93

原创 leetcode54. 螺旋矩阵

题目描述给定一个包含 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,8,12,11,10,9,5,6,7]codeclass Solution {p

2020-07-21 23:50:32 110

原创 leetcode28. 实现 strStr()

题目描述实现 strStr() 函数。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。示例 1:输入: haystack = "hello", needle = "ll"输出: 2示例 2:输入: haystack = "aaaaa", needle = "bba"输出: -1说明:当 needle 是空字符串时,我们应当返回什么值呢?这是一个在面试中很

2020-07-21 22:17:53 75

原创 leetcode387. 字符串中的第一个唯一字符

题目描述给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。示例:s = "leetcode"返回 0s = "loveleetcode"返回 2code利用mapvector存储所有只出现一次的数class Solution {public: int firstUniqChar(string s) { if(s=="") return -1; map<char,int> mp;

2020-07-19 23:52:34 63

原创 leetcode125. 验证回文串

题目描述给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: "A man, a plan, a canal: Panama"输出: true示例 2:输入: "race a car"输出: falsecodeclass Solution {public: bool judgeEqual(char a,char b){ if(a==b) ret

2020-07-19 03:59:10 102

原创 剑指 Offer 42. 连续子数组的最大和

题目描述输入一个整型数组,数组里有正数也有负数。数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。示例1:输入: nums = [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。提示:1 <= arr.length <= 10^5-100 <= arr[i] <= 100code动态规划class Solution {public:

2020-07-19 03:13:37 70

原创 167. 两数之和 II - 输入有序数组

题目描述给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。说明:返回的下标值(index1 和 index2)不是从零开始的。你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。示例:输入: numbers = [2, 7, 11, 15], target = 9输出: [1,2]解释: 2 与 7 之和等于目标数 9 。因此 index1 =

2020-07-19 02:50:06 74

原创 leetcode1201. 丑数 III

题目描述请你帮忙设计一个程序,用来找出第 n 个丑数。丑数是可以被 a 或 b 或 c 整除的 正整数。示例 1:输入:n = 3, a = 2, b = 3, c = 5输出:4解释:丑数序列为 2, 3, 4, 5, 6, 8, 9, 10… 其中第 3 个是 4。示例 2:输入:n = 4, a = 2, b = 3, c = 4输出:6解释:丑数序列为 2, 3, 4, 6, 8, 9, 10, 12… 其中第 4 个是 6。示例 3:输入:n = 5, a = 2, b

2020-07-19 02:07:41 202

原创 leetcode367. 有效的完全平方数

题目描述给定一个正整数 num,编写一个函数,如果 num 是一个完全平方数,则返回 True,否则返回 False。说明:不要使用任何内置的库函数,如 sqrt。示例 1:输入:16输出:True示例 2:输入:14输出:Falsecode直接遍历:过测试用例10/70超时class Solution {public: bool isPerfectSquare(int num) { if(num==1) return tr

2020-07-18 22:31:36 62

原创 剑指 Offer 53 - I. 在排序数组中查找数字 I

题目描述统计一个数字在排序数组中出现的次数。示例 1:输入: nums = [5,7,7,8,8,10], target = 8输出: 2示例 2:输入: nums = [5,7,7,8,8,10], target = 6输出: 0限制:0 <= 数组长度 <= 50000code顺序查找20msclass Solution {public: int search(vector<int>& nums, int target) {

2020-07-18 21:52:22 181

原创 剑指offer-旋转数组的最小值II

题目描述假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。请找出其中最小的元素。注意数组中可能存在重复的元素。示例 1:输入: [1,3,5]输出: 1示例 2:输入: [2,2,2,0,1]输出: 0code二分法同:剑指offer-旋转数组的最小值Iclass Solution {public: int findMin(vector<int>&amp

2020-07-18 21:07:35 101

原创 剑指offer-旋转数组的最小值

题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。示例 1:输入:[3,4,5,1,2]输出:1示例 2:输入:[2,2,2,0,1]输出:0code顺序查找:8msclass Solution {public: int minArray(vector<int>& numbe

2020-07-18 20:58:42 90

原创 剑指 Offer~n-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]输出: 8限制:1 <= 数组长度 <= 10000code已知当缺少某一个值时,该值前面的位置都是正确的,即nums[i]==i,则只需找到满足nums[i]!=i的第一个位置即可顺序查找:40m

2020-07-18 06:27:49 192

原创 leetcode35-搜索插入位置

题目描述给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例 2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4示例 4:输入: [1,3,5,6], 0输出: 0code查找第一个大于或等于target的数的位置不知道为什么没有超时也过了…class Solut

2020-07-18 02:16:33 65

原创 剑指offer-变态跳台阶

题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。code找规律得:f(n)=f(n-1)+f(n-2)+…+f(1)+1class Solution {public: int f[50]={0};//注意初始化 int jumpFloorII(int number) { //f(n)=f(n-1)+f(n-2)+...+f(1)+1 f[1]=1; f[2]=2

2020-07-17 23:16:58 70

原创 剑指offer-斐波那契数列

题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1)。n<=39code斐波那契同类题:矩形覆盖跳台阶class Solution {public: int f[40]; int Fibonacci(int number) { f[0]=0; f[1]=1; for(int i=2;i<=number;i++) f

2020-07-17 22:57:58 75

原创 剑指offer-跳台阶

题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。code递归形式为斐波那契,同矩形覆盖class Solution {public: int f[1000]; int jumpFloor(int number) { f[1]=1; f[2]=2; for(int i=3;i<=number;i++) f[i]=f[i-1]+

2020-07-17 22:53:54 68

原创 剑指offer-矩形覆盖

题目描述我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?比如n=3时,2*3的矩形块有3种覆盖方法:code强推几个发现递归形式为斐波那契注意直接用递归栈会超内存,使用递推class Solution {public: int f[1000]; int rectCover(int number) { //f(n)=f(n-1)+f(n-2) f[1]=1;

2020-07-17 22:48:46 71

原创 剑指offer-把字符串转换成整数

题目描述将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0输入描述:输入一个字符串,包括数字字母符号,可以为空输出描述:如果是合法的数值表达则返回该数字,否则返回0输入:+21474836471a33输出:21474836470code这题判断合法数字直接借用了上一题(表示数值的字符串),实际上远没有这么复杂哈数据没有我想的复杂,并没有溢出,也没有e/E应该是可以在判断完符号之后直接用atoi()函数的cla

2020-07-17 00:55:40 98

原创 剑指offer-表示数值的字符串

题目描述请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100",“5e2”,"-123",“3.1416"和”-1E-16"都表示数值。 但是"12e",“1a3.14”,“1.2.3”,"±5"和"12e+4.3"都不是。code合法的种类太多,因此从判断不合法入手找规律,提炼要求:只能存在+/-/e/E/./数字,存在其他字母则不是数字小数点只能有一个+/-号只能存在于第一个位置或者e/E后边,+/-号后边只能跟数字或者小数点(或者说不能为空也不能是其他字

2020-07-17 00:08:38 65

原创 剑指offer-替换空格

题目描述请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。codeclass Solution {public: void replaceSpace(char *str,int length) { //先计算修改后的字符串长度 int space=0; char* p1=str; while(*p1!='\0'){ if(*p1

2020-07-16 23:17:26 94

原创 左旋转字符串

题目描述汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!codeclass Solution {public: string LeftRotateString(string str, int n) { if(str=="")//字符串为空

2020-07-16 19:14:50 78

原创 第一个只出现一次的字符

题目描述在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).(从0开始计数)code先确定所有元素的出现次数按输入顺序查找第一个仅出现一次的字母class Solution {public: map<char,int> mp; int FirstNotRepeatingChar(string str) { for(int i=0;i<

2020-07-16 18:45:25 96

原创 剑指offer-字符流中第一个不重复的字符

题目描述请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。输出描述:如果当前字符流没有存在出现一次的字符,返回#字符。codeAC代码使用了map和vector使用了vector查找函数find和删除函数erase(利用迭代器)class Solution{public: map<char,int> mp

2020-07-16 18:27:37 68

原创 剑指offer-字符串的排列

题目描述输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。输入描述:输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。code使用C++全排列next_permutation//ACclass Solution {public: vector<string> Permutation(string str) { //

2020-07-16 17:28:37 65

Tomcar ROOT文件夹(包含全部内容)

在安装tomcat免安装版时,遇到Tomcat正常启动了,访问的页面却是空白页,即使修改了端口号也还是空白页,这很有可能是tomcat的webapps目录下没有ROOT文件或者ROOT文件里的内容不全。 解决办法:下载ROOT文件并粘贴或覆盖到webapps目录下

2020-06-05

空空如也

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

TA关注的人

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