- 博客(72)
- 收藏
- 关注
原创 LeetCode 热题 HOT 100之单词拆分
LeetCode 热题 HOT 100之单词拆分题目139:给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请你判断是否可以利用字典中出现的单词拼接出 s 。注意:不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。方案:使用动态规划方法,dp[i]=dp[j] && check(s[j,i-j],wordDict)class Solution {public: bool wordBreak(string s, vector<string
2022-01-10 11:18:42
431
原创 LeetCode 热题 HOT 100之最长连续序列
LeetCode 热题 HOT 100之最长连续序列题目128:给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。请你设计并实现时间复杂度为 O(n) 的算法解决此问题。方案:用集合来去除数组中的重复值,然后用两个变量分别存储局部的最长连续值和全局的最长连续值。class Solution {public: int longestConsecutive(vector<int>& nums) { unord
2022-01-10 10:18:47
496
原创 LeetCode 热题 HOT 100之二叉树展开为链表
LeetCode 热题 HOT 100之二叉树展开为链表题目114:给你二叉树的根结点 root ,请你将它展开为一个单链表:展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。展开后的单链表应该与二叉树 先序遍历 顺序相同。方案:先得到二叉树的前序遍历,将前序遍历结果存入到一个数组中,再对二叉树进行修改。得到前序遍历的方法包括深度优先搜索(dfs)和广度优先搜索(bfs)。深度优先:/** * Definition for
2022-01-10 09:49:05
497
原创 LeetCode 热题 HOT 100之从前序和中序遍历序列构造二叉树
LeetCode 热题 HOT 100之从前序和中序遍历序列构造二叉树题目105:给定一棵树的前序遍历 preorder 与中序遍历 inorder。请构造二叉树并返回其根节点。方案:使用递归法,发现中序遍历的特点是第一个值为根节点,用哈希表记录先序遍历中节点的索引位置,然后可以判断出哪些值属于左子树,哪些属于右子树。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNo
2022-01-07 10:40:20
622
原创 LeetCode 热题 HOT 100之二叉树的层次遍历
LeetCode 热题 HOT 100之二叉树的层次遍历题目102:给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。方案:使用广度优先搜索,用队列存入每一层的节点,计算每一层节点的个数,将每层元素存入到单个数组中,最后再存入到结果数组中。class Solution: def levelOrder(self, root: TreeNode) -> List[List[int]]: ans = [] if not
2022-01-07 09:53:45
454
原创 LeetCode 热题 HOT 100之验证二叉搜索树
LeetCode 热题 HOT 100之验证二叉搜索树题目98:给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。有效 二叉搜索树定义如下:节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。方案:使用递归方法,如果该二叉树的左子树不为空,则左子树上所有节点的值均小于它的根节点的值; 若它的右子树不空,则右子树上所有节点的值均大于它的根节点的值;它的左右子树也为二叉搜索树。/** * Definitio
2022-01-07 09:38:34
131
原创 LeetCode 热题 HOT 100之不同的二叉搜索树
LeetCode 热题 HOT 100之不同的二叉搜索树题目96:给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。方案:发现规律,当i作为父节点时,f(i)=f(i-1)*f(n-i),想得到最终结果,只需要把1到n做父节点的情况累加,使用递归方法。第二种方法是动态规划,建立一数组维护从0个数到n个数的所有结果。//递归class Solution {public: int numTrees(int n)
2022-01-07 09:14:08
313
原创 LeetCode 热题 HOT 100之单词搜索
LeetCode 热题 HOT 100之单词搜索题目79:给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。方案:对每一个位置进行回溯搜索,检查第(i,j)位置和word的第k个值是否相同,如果不相同返回false,如果相同继续对比下一个word值,遍历搜索当前
2022-01-06 13:32:30
94
原创 LeetCode 热题 HOT 100之子集
LeetCode 热题 HOT 100之子集题目78:给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。方案:使用递归法枚举所有子集。class Solution {public: void dfs(vector<int>& nums,vector<vector<int>>& ans,vector<int>tmp,int lent
2022-01-06 11:00:14
199
原创 LeetCode 热题 HOT 100之颜色分类
LeetCode 热题 HOT 100之颜色分类题目75:给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。方案:使用双指针,p0 和p1代表数字0和数字1的位置,遍历数组遇到0时,与p0指向位置进行交换,两个指针后移,遇到1时1,与p1指针位置交换,p1后移。class Solution {public: void sortColors(vec
2022-01-06 10:38:59
172
原创 LeetCode 热题 HOT 100之最小路径和
LeetCode 热题 HOT 100之最小路径和题目64:给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。方案:使用动态规划法,动态数组计算出到每一个位置的最小路径和,发现在第一行和第一列路径和是唯一的,都是左边值或者上边的值累加的结果,而其他位置的最小路径和等于上边值和左边值的较小值+当前位置。class Solution {public: int minPathSum(vector
2022-01-06 10:19:53
114
原创 LeetCode 热题 HOT 100之不同路径
class Solution {public: int uniquePaths(int m, int n) { vector<vector<int>> ans(m, vector<int>(n)); for(int i=0;i<m;i++){ ans[i][0]=1; } for(int j=0;j<n;j++){ ans[0][j]=1;
2022-01-06 09:55:01
86
原创 LeetCode 热题 HOT 100之合并区间
LeetCode 热题 HOT 100之合并区间题目56:以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。方案:模拟这个合并的过程,当合并数组的末尾的第二个值大于等于intervals中下一个数组第一个值时,表示两者有共同区间,则修改合并数组末尾值,如果没有,直接添加intervals中下一个数组。class Solution {pub
2022-01-06 09:07:48
427
原创 State Estimation and Localization for Self-Driving Cars-W1_递归最小二乘法估计
IntroductionGiven your experience with batch least squares (where all measurements are processed at once), you now decide convert your batch solution to a recursive one for added flexibility. Recall that you have the following data:Current (A)Volta
2022-01-05 14:16:44
843
原创 LeetCode 热题 HOT 100之跳跃游戏
LeetCode 热题 HOT 100之跳跃游戏题目55:给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标。方案:按顺序计算看能达到的最右边位置。class Solution {public: bool canJump(vector<int>& nums) { int k=0; int n=nums.size(); for(
2022-01-05 11:52:11
2200
原创 LeetCode 热题 HOT 100之字母异位词分组
LeetCode 热题 HOT 100之字母异位词分组题目49:给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。字母异位词 是由重新排列源单词的字母得到的一个新单词,所有源单词中的字母通常恰好只用一次。方案:可以使用排序来判断两个字符串是否属于字母异位词,使用哈希表来记录不同异位词对应的组合。class Solution {public: vector<vector<string>> groupAnagrams(vector
2022-01-05 11:16:15
175
原创 LeetCode 热题 HOT 100之旋转图像
LeetCode 热题 HOT 100之旋转图像题目48:给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。方案:不能使用辅助数组,考虑发现旋转中数组的变化规律,尝试手写几个数组旋转后的位置变化关系,发现row行col列数值最重要的变化规律,nums[col][n-row-1]=nums[row][col]然后对换到位置进行关系的扩展,发现最终回到的是row
2022-01-05 10:46:57
397
原创 LeetCode 热题 HOT 100之全排列
LeetCode 热题 HOT 100之全排列题目46:给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。方案:使用回溯法,通过探索所有可能的解来找到所有的解,最先想到的方法是使用一个访问数组visited来表示当前数值是否已经被访问,这里需要注意,当临时路径tmp的长度等于数组长度时,代表一次组合产生,变量 tmp 所指向的列表 在深度优先遍历的过程中只有一份 ,深度优先遍历完成以后,回到了根结点,成为空列表,因此需要值传递tmp[:]。class S
2022-01-05 10:14:51
278
原创 LeetCode 热题 HOT 100之组合总和
LeetCode 热题 HOT 100之组合总和题目39:给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。candidates 中的 同一个 数字可以 无限制重复被选取 。如果至少一个数字的被选数量不同,则两种组合是不同的。对于给定的输入,保证和为 target 的不同组合数少于 150 个。方案:使用简单回溯法会发生重复,
2022-01-05 09:25:02
141
原创 LeetCode 热题 HOT 100之在排序数组中查找元素的第一个和最后一个位置
LeetCode 热题 HOT 100之在排序数组中查找元素的第一个和最后一个位置题目34:给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。方案:在升序排列中可能存在重复数组,这样对二分查找方法进行改进,当发现目标值时,向左右两端扩展来找到相同值的左位置和右位置。class Solution {public: vector<int> searchRan
2022-01-04 11:29:29
404
原创 LeetCode 热题 HOT 100之搜索旋转数组
LeetCode 热题 HOT 100之搜索旋转数组题目33:整数数组 nums 按升序排列,数组中的值互不相同 。在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k+1], …, nums[n-1], nums[0], nums[1], …, nums[k-1]](下标 从 0 开始 计数)。例如, [0,1,2,4,5,6,7] 在下标 3 处经旋转后可能变为 [4,5,6,7,0,
2022-01-04 10:49:38
78
原创 LeetCode 热题 HOT 100之下一个排列
LeetCode 热题 HOT 100之下一个排列题目31:实现获取 下一个排列 的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列(即,组合出下一个更大的整数)。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须 原地 修改,只允许使用额外常数空间。方案:找到降序数组,替换降序数组前的一个值和降序数组中比这个值大的值,然后对降序数组变成升序数组。class Solution {public: void nextPermutation(vector
2022-01-04 10:05:41
168
原创 LeetCode 热题 HOT 100之括号生成
LeetCode 热题 HOT 100之括号生成题目22:数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。方案:用回溯法,结果为字符串的集合,回溯条件中,当字符串长度为2n时存入到结果数组中,两个指针表示单个字符串中左右括号的数量,只有左指针小于n时才可以添加左括号,当右指针小于左指针时加入有括号,否则不是有效括号组合。class Solution: def generateParenthesis(self, n: int) -> List[
2022-01-04 09:36:20
179
原创 LeetCode 热题 HOT 100之删除链表的倒数第 N 个结点
LeetCode 热题 HOT 100之删除链表的倒数第 N 个结点题目:给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。方案:使用两个指针同时对链表进行遍历,并且第二个节点比第一个节点靠后n+1个节点,这样第二个节点到最后位置时,第一个节点在倒数n+1位置。class Solution: def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode: prehead = ListNode(
2022-01-04 09:11:12
216
原创 好诗分享_《我想和你一起生活 》
《我想和你一起生活 》作者:茨维塔耶娃我想和你一起生活,在某个小镇,共享无尽的黄昏和绵绵不绝的钟声。在这个小镇的旅店里——古老时钟敲出的微弱响声像时间轻轻滴落有时候,在黄昏,自顶楼某个房间传来笛声吹笛者倚著窗牖,而窗口大朵郁金香此刻你若不爱我,我也不会在意在房间中央,一个磁砖砌成的炉子,每一块磁砖上画著一幅画:一颗心,一艘帆船,一朵玫瑰。而自我们唯一的窗户张望,雪,雪,雪你会躺成我喜欢的姿势:慵懒,淡然,冷漠一两回点燃火柴的刺耳声。你香烟的火苗由旺转弱,烟的末梢颤抖著,颤抖著
2021-12-31 15:49:11
207
原创 State Estimation and Localization for Self-Driving Cars-W1_最小二乘法估计电阻
State Estimation and Localization for Self-Driving Cars-W1_最小二乘法估计电阻最小二乘法练习介绍开始估计斜率参数绘制结果最小二乘法来到Coursera自动驾驶系列课程第二部分《State Estimation and Localization for Self-Driving Cars》,介绍一个简单的利用最小二乘来估计电阻的例子,假设对电阻做了四次测量,分别得到四个电阻值,那么如何估计出真实的电阻值。假设x是一个未知的常数,y表示电阻的测量
2021-12-31 15:39:46
1274
原创 Introduction to Self-Driving Cars Final Project-W7_PID纵向控制+纯跟踪横向控制
Introduction to Self-Driving Cars Final Project-W7_PID+纯跟踪实现车辆横向和纵向控制Pure Pursuit简介Final项目中纯跟踪横向控制器contorller2d.py本文是《Introduction to Self-Driving Cars Final Project-W7_PID实现车辆横向和纵向控制》的延续,旨在将车辆横向控制器改为纯跟踪(Pure pursuit)模式。(是Coursera自动驾驶系列课程第一部分的最后一个项目作业)Pu
2021-12-30 14:37:27
1476
原创 LeetCode 热题 HOT 100之电话号码组合
LeetCode 热题 HOT 100之电话号码组合题目17:给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。方案:回溯法,字符串达到digits长度时,添加到结果中,没有达到长度则继续添加对应的字母。class Solution: def dfs(self, digits, phonemap, combinations, combination, n):
2021-12-30 11:29:30
126
原创 LeetCode 热题 HOT 100之三数之和
LeetCode 热题 HOT 100之三数之和题目15:给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。方案:排序加双指针,先对数组进行排序,对每个位置i,找到符合条件的另两个位置,为了保证结果中不发生重复,需要加一些判断条件。class Solution: def threeSum(self, nums: List[int]) -&g
2021-12-30 11:00:18
132
原创 LeetCode 热题 HOT 100之盛最多水的容器
LeetCode 热题 HOT 100之盛最多水的容器题目11:给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器。方案:双指针法,先将两个指针放到最外侧,然后短板对应的指针向内移动。class Solution: def maxArea(self, height: List[
2021-12-30 10:39:10
547
原创 LeetCode 热题 HOT 100之最长回文子串
LeetCode 热题 HOT 100之最长回文子串题目5:给你一个字符串 s,找到 s 中最长的回文子串。方案:中心拓展算法,代码是对算法的实现,看到这个问题后应该尽可能找到最佳的算法,发现回文子串的特点要么是以一个字符为中心拓展,要么是以两个相同字符为中心扩展,考虑这两种情况,将代码实现。class Solution: def longestPalindrome(self, s: str) -> str: left, right = 0, 0 def
2021-12-30 10:19:28
474
原创 LeetCode 热题 HOT 100之无重复字符的最长子串
LeetCode 热题 HOT 100之无重复字符的最长子串题目:给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。方案:维护一个集合,依次访问每个i位置的字符s[i],当字符没有出现在数组中时存入集合,当出现在集合中,此位置之前的即为以i位置开始的最长字符串。对所有位置的最长字符串检查后得到最长的子字符串。class Solution: def lengthOfLongestSubstring(self, s: str) -> int: rk = 0
2021-12-30 10:01:37
353
原创 LeetCode 热题 HOT 100之两数相加
LeetCode 热题 HOT 100之两数相加题目2:给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。方案:模拟人类做加法的过程,让相同位上两个数相加再加上进位,mol10后是当前位的值,整除10后的值作为进位。# Definition for singly-linked list.# class ListNode
2021-12-30 09:10:29
170
原创 数据分析与展示-Pandas入门
数据分析与展示-Pandas入门1 Pandas引入2 Series类型Series类型创建索引和切片in.get()对齐元素修改3 DataFrame类型DataFrame类型创建4 Pandas数据操作重新索引索引类型删除特定列5 Pandas数据运算算数运算比较运算1 Pandas引入Pandas是Python第三方库,提供高性能易用数据类型和分析工具。Pandas基于NumPy实现,常与NumPy和Matplotlib一同使用。pandas的导入:import pandas as pdP
2021-12-29 17:02:03
962
原创 Python数据分析与展示-Matplotlib绘图函数
Python数据分析与展示-Matplotlib绘图函数Pyplot基础图表函数饼图直方图极坐标图散点图Pyplot基础图表函数函数含义plt.plot(x,y,fmt,…)绘制坐标图plt.boxplot(data,notch,position)绘制箱形图plt.bar(left,height,width,bottom)绘制条形图plt.barh(width,bottom,left,height)绘制横向条形图plt.polar(theta, r)
2021-12-28 16:51:43
360
原创 Introduction to Self-Driving Cars Final Project-W7_PID实现车辆横向和纵向控制
Introduction to Self-Driving Cars Final Project-W7_PID实现车辆横向和纵向控制1 项目介绍2 操作过程准备工作(1-2)实现并运行(3-5)结果处理与延伸3 最终实现pid的主要公式pid各参数对控制效果的影响1 项目介绍该项目是Coursera中自动驾驶系列课程第一部分最后的综合项目。考察的是车辆横纵向控制器的实现。官方项目使用的是CARLA 模拟器,总体需求是编写实现一个控制器,能够通过导航预设的航路点来控制车辆沿着路径行驶。车辆需要以特定的期望
2021-12-28 16:04:30
1896
原创 Leetcode学习计划-算法入门第14天
Leetcode学习计划-算法入门第14天主题:位运算题目190:颠倒给定的 32 位无符号整数的二进制位。class Solution {public: uint32_t reverseBits(uint32_t n) { uint32_t res = 0; for(int i=0;i<32;i++){ res = (res << 1)|(n & 1); n >>= 1;
2021-12-28 11:22:21
285
原创 Leetcode学习计划-算法入门第13天
Leetcode学习计划-算法入门第13天主题:位运算题目231:给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false 。如果存在一个整数 x 使得 n == 2x ,则认为 n 是 2 的幂次方。方案:使用位运算,如果 n 是正整数并且n & (n - 1) = 0,那么 n就是 2 的幂。class Solution {public: bool isPowerOfTwo(int n) { return n>
2021-12-28 10:50:47
159
原创 Leetcode学习计划-算法入门第12天
Leetcode学习计划-算法入门第12天主题:动态规划题目70:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。方案:发现规律,第 xx 级台阶的方案数是爬到第 x - 1台阶的方案数和爬到第 x - 2 级台阶的方案数的和。用动态规划法,先得出转移方程公式:f(n)=f(n-1)+f(n-2),然后是边界条件 f(0)=f(1)=1。class Solution: def climbSt
2021-12-28 10:16:32
164
原创 Python数据分析与展示-Matplotlib入门
Python数据分析与展示-Matplotlib入门介绍plot函数中文显示文本显示绘图区域介绍Matplotlib库是Python优秀的数据可视化第三方库,它由各种可视化类构成,内部结构复杂,这个库的开发受Matlab启发较多。matplotlib.pyplot是绘制各类可视化图形的命令子库,相当于快捷方式。导入方法:import matplotlib.pyplot as pltplt.savefig()将输出图形存储为文件,默认PNG格式,可以通过dpi修改输出质量plot函数plt.
2021-12-27 17:06:25
553
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人