- 博客(7)
- 资源 (2)
- 收藏
- 关注
原创 C++ LeetCode 66 加一
给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例 2:输入: [4,3,2,1]输出: [4,3,2,2]解释: 输入数组表示数字 4321。思路其实就是求最后一位之前有多少个9,+1后这些位依次置为0,之前不是9的那位加一,如果全是999…那么在最前面还要插入一个
2020-08-19 20:41:53 140
原创 最长子序列和 C++ 动态规划
思路dp[i]表示以第i位为序列尾部的时候,序列和最大值。#include<iostream>#include<string>#include<vector>#include<algorithm>using namespace std;class Solution {public: int maxSubArray(vector<int>& nums) { if (nums.empty())
2020-08-19 19:32:00 265
原创 C++ 二分查找和插入
#include<iostream>#include<string>#include<vector>#include<algorithm>using namespace std;class Solution {public: int searchInsert(vector<int>& nums, int target) { int left = 0, right = nums.size() - 1;
2020-08-19 15:57:05 486
原创 KMP 字符串匹配原理 算法分析 C++代码详细分析
kmp算法理解核心逻辑是避免字符串匹配时的重复运算,比如{“ABABABCABAB”}中查找{“ABABC”},当字符段ABABA和ABABC不匹配时,移动要查找字符串到A处(加粗)处进行下一次匹配,即ABABABCABAB ABABC而不用在下一个字母B处进行匹配,其实就是利用了字符串ABAB中重复的AB项。前缀和可以用前缀和来表示这个头和尾重复的字符串长度,字符串必须包含首部和尾部:A:0AB:0ABA:1ABAB:2ABA
2020-08-13 15:31:04 265
原创 LeetCode 27 移除元素
给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。示例 2:给定 nums = [0,1,2,2,3,0,4,2]
2020-08-09 21:51:40 70
原创 LeetCode 删除重复项
给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需要考虑数组中超出新长度后面的元素。示例 2:给定 nums = [0,0,1,1,1,2,2,3,3,4],函数应该返回新的长度 5, 并且原数组 nums 的
2020-08-09 21:13:12 151
原创 LeetCode 20 有效的括号对
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: “()”输出: true示例 2:输入: “()[]{}”输出: true示例 3:输入: “(]”输出: false思路用map把括号分为两类,左类和右类,相对应的值互为正负,利用堆栈后进先出的特性,匹配到的括号就移出栈顶,最后判断堆栈是否为空,为空说
2020-08-07 21:02:40 185
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人