- 博客(165)
- 收藏
- 关注
原创 【车辆轨迹处理】python实现轨迹点的聚类(二)—— ST-DBSCAN算法
笔者在之前的研究中,尝试对车辆轨迹数据进行空间聚类,以期望发现车辆在行驶过程中的停留信息。在笔者之前的文章中,笔者使用了DBSCAN算法来做这一件事。然而,对于时序的车辆经纬度数据,DBSCAN有一个很大的问题——没有考虑数据中蕴含的时间信息!时间信息是时间序列数据与其他数据区别的重要特征。举个例子:在使用DBSCAN对车辆的经纬度进行聚类时,它仅仅是把那些空间相近的数据聚成一类,可是同一类中的数据可能相差很大。
2024-07-25 20:01:33
1101
原创 【车辆轨迹处理】python实现轨迹点的聚类(一)——DBSCAN算法
空间聚类是基于一定的相似性度量对空间大数据集进行分组的过程。空间聚类分析是一种无监督形式的机器学习。通过空间聚类可以从空间数据集中发现隐含的信息。作者在科研工作中,需要对某些车辆的轨迹数据进行一些空间聚类分析,以期望发现车辆在行驶过程中发生轨迹点”聚集“的行为。当等时间间隔的轨迹点在某片区域分布过于”密“时,我们往往可以在这片区域发现某些信息,例如车辆在这片区域发生驻留或者低速行驶等。在空间聚类算法中,DBSCAN是一种简单且有效的聚类算法,它有着基于密度不需要预先指定聚类数计算效率高的优点。
2024-07-22 18:52:16
1540
1
原创 【车辆轨迹处理】python实现轨迹数据的经纬度滤波平滑
轨迹数据大多是由GPS设备从原始的嘈杂环境中采样而来,对 GPS 轨迹数据进行平滑滤波处理的主要目的是消除或减少由于信号采集和信号传输的过程中含有的不确定性和波动,从而减少噪声影响和提高精度和可靠性。idlonlat时间车辆标识经度纬度本文提供了两种对时序经纬度的轨迹数据进行平滑滤波的python方法实现。滑动滤波器(Moving Average Filter)是一种常见的信号处理技术,用于平滑时间序列数据或信号。
2024-07-22 15:29:01
1131
原创 力扣刷题 DAY_89 贪心
输入: intervals = [[1,3],[2,6],[8,10],[15,18]]解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6]。解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。输入: intervals = [[1,4],[4,5]]输出: [[1,6],[8,10],[15,18]]给出一个区间的集合,请合并所有重叠的区间。输出: [[1,5]]
2022-09-27 17:41:56
239
1
原创 力扣刷题 DAY_88 贪心
字符串 S 由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。返回一个表示每个字符串片段的长度的列表。
2022-09-14 16:57:03
169
原创 力扣刷题 DAY_87 贪心
注意: 可以认为区间的终点总是大于它的起点。区间 [1,2] 和 [2,3] 的边界相互“接触”,但没有相互重叠。给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠。
2022-09-13 18:22:36
193
原创 力扣刷题 DAY_86 贪心
在坐标 x 处射出一支箭,若有一个气球的直径的开始和结束坐标为 xstart,xend, 且满足 xstart ≤ x ≤ xend,则该气球会被引爆。我们想找到使得所有气球全部被引爆,所需的弓箭的最小数量。对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标。由于它是水平的,所以纵坐标并不重要,因此只要知道开始和结束的横坐标就足够了。开始坐标总是小于结束坐标。给你一个数组 points ,其中 points [i] = [xstart,xend] ,返回引爆所有气球所必须射出的最小弓箭数。..
2022-08-26 14:06:01
126
原创 力扣刷题 DAY_85 贪心
因此 [[5,0],[7,0],[5,2],[6,1],[4,4],[7,1]] 是重新构造后的队列。输入:people = [[7,0],[4,4],[7,1],[5,0],[6,1],[5,2]]输入:people = [[6,0],[5,0],[4,0],[3,2],[2,2],[1,4]]局部最优:优先按身高高的people的k来插入。输出:[[5,0],[7,0],[5,2],[6,1],[4,4],[7,1]]输出:[[4,0],[5,0],[2,2],[3,2],[1,4],[6,0]]...
2022-08-25 20:36:41
123
原创 力扣刷题 DAY_84 贪心
链接:力扣 。题目:在柠檬水摊上,每一杯柠檬水的售价为 5 美元。顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付 5 美元。注意,一开始你手头没有任何零钱。如果你能给每位顾客正确找零,返回 true ,否则返回 false 。...
2022-06-13 11:13:58
96
原创 力扣刷题 DAY_83 贪心
链接:力扣 。题目:老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分。你需要按照以下要求,帮助老师给这些孩子分发糖果:那么这样下来,老师至少需要准备多少颗糖果呢?...
2022-06-12 12:20:15
106
原创 力扣刷题 DAY_82 贪心
链接:力扣 。题目:在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升。你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。如果你可以绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1。......
2022-06-10 14:04:42
97
原创 力扣刷题 DAY_81 贪心
链接:力扣 。题目:给定一个整数数组 A,我们只能用以下方法修改该数组:我们选择某个索引 i 并将 A[i] 替换为 -A[i],然后总共重复这个过程 K 次。(我们可以多次选择同一个索引 i。)以这种方式修改数组后,返回数组可能的最大和。说明: 1 ...
2022-06-09 18:31:05
108
原创 力扣刷题 DAY_80 贪心
Leetcode45链接:力扣。题目:给定一个非负整数数组nums,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。假设你总是可以到达数组的最后一个位置。说明: 1 <= nums.length <= 104 0 <= nums[i] <= 1000示例1:输入:nums = [2,3,1,1,4]输出:2解释:跳到最后一个位置的最小跳跃数是 2...
2022-05-03 11:45:39
147
原创 力扣刷题 DAY_79 贪心
Leetcode55链接:力扣。题目:给定一个非负整数数组nums,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。说明: 1 <= nums.length <= 104 0 <= nums[i] <= 105示例1:输入:nums = [2,3,1,1,4]输出:true解释:我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到达最后一个...
2022-05-01 11:33:22
154
原创 力扣刷题 DAY_78 贪心
Leetcode122链接:力扣。题目:给定一个数组,它的第i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。说明: 1 <= prices.length <= 3 * 104 0 <= prices[i] <= 104示例1:输入:prices = [7,1,5,3,6,4]...
2022-04-29 12:26:54
75
原创 力扣刷题 DAY_77 贪心
Leetcode376链接:力扣。题目:给定一个整数数组 nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。说明:1 <= nums.length <= 105-104 <= nums[i] <= 104示例1:输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:[4,-1,2,1] 是最大和连续子序列,和为6。示例2:输入:nums ...
2022-04-28 11:47:44
121
原创 力扣刷题 DAY_76 贪心
Leetcode376链接:力扣。题目:如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列。第一个差(如果存在的话)可能是正数或负数。少于两个元素的序列也是摆动序列。例如, [1,7,4,9,2,5] 是一个摆动序列,因为差值 (6,-3,5,-7,3) 是正负交替出现的。相反, [1,4,7,2,5] 和 [1,7,4,5,5] 不是摆动序列,第一个序列是因为它的前两个差值都是正数,第二个序列是因为它的最后一个差值为零。给定一个整数序列,返回作为摆动序列的最长.
2022-04-27 12:21:17
100
原创 力扣刷题 DAY_75 贪心
Leetcode455链接:力扣。题目:假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i,都有一个胃口值g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j]。如果 s[j]>= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。说明: 1 <= g.length <= 3 * 10^...
2022-04-26 11:03:18
98
原创 力扣刷题 DAY_74 回溯
Leetcode37链接:力扣。题目:编写一个程序,通过填充空格来解决数独问题。一个数独的解法需遵循如下规则: 数字1-9在每一行只能出现一次。 数字1-9在每一列只能出现一次。 数字1-9在每一个以粗实线分隔的3x3宫内只能出现一次。 空白格用'.'表示。说明: 给定的数独序列只包含数字 1-9 和字符 '.' 。 你可以假设给定的数独只有唯一解。 给定数独永远是 9x9 形式的。例如数独问题:唯一解为:示例:...
2022-04-25 13:32:26
920
原创 力扣刷题 DAY_73 回溯
Leetcode51链接:力扣。题目:n皇后问题 研究的是如何将 n个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案。每一种解法包含一个不同的 n 皇后问题 的棋子放置方案,该方案中 'Q' 和 '.' 分别代表了皇后和空位。示例1:输入:n = 4输出:[[".Q..","...Q","Q...","..Q."],["..Q.","Q...","...Q",".Q.."]]解释:4 皇后...
2022-04-24 11:11:26
80
原创 力扣刷题 DAY_72 回溯
Leetcode332链接:力扣。题目:给定一个机票的字符串二维数组 [from, to],子数组中的两个成员分别表示飞机出发和降落的机场地点,对该行程进行重新规划排序。所有这些机票都属于一个从 JFK(肯尼迪国际机场)出发的先生,所以该行程必须从 JFK 开始。说明:如果存在多种有效的行程,请你按字符自然排序返回最小的行程组合。例如,行程 ["JFK", "LGA"] 与 ["JFK", "LGB"] 相比就更小,排序更靠前 所有的机场都用三个大写字母表示(机场代码)。 假定.
2022-04-23 20:39:00
112
原创 力扣刷题 DAY_71 回溯
Leetcode47链接:力扣。题目:给定一个可包含重复数字的序列 nums ,按任意顺序返回所有不重复的全排列。说明:1 <= nums.length <= 8 -10 <= nums[i] <= 10示例1:输入:nums = [1,1,2]输出:[[1,1,2],[1,2,1],[2,1,1]]示例2:输入:nums = [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,...
2022-04-21 13:09:33
90
原创 力扣刷题 DAY_70 回溯
Leetcode46链接:力扣。题目:给定一个 没有重复数字的序列,返回其所有可能的全排列。一般把N个不同的数字按照某个顺序摆放的结果称为这n个整数的一个排列,全排列是指这N个整数能形成的所有排列。示例1:输入:nums = [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]示例2:输入:nums = [1]输出:[[1]]参考代码:class Solution {public:.
2022-04-20 12:06:25
774
原创 力扣刷题 DAY_70 回溯
Leetcode491链接:力扣。题目:给定一个整型数组, 你的任务是找到所有该数组的递增子序列,递增子序列的长度至少是2。说明:给定数组的长度不会超过15。 数组中的整数范围是[-100,100]。 给定数组中可能包含重复数字,相等的数字应该被视为递增的一种情况。示例1:输入:nums = [4,6,7,7]输出:[[4,6],[4,6,7],[4,6,7,7],[4,7],[4,7,7],[6,7],[6,7,7],[7,7]]示例2:输入:nu..
2022-04-19 13:56:18
67
原创 力扣刷题 DAY_69 回溯
Leetcode60链接:力扣。题目:给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例1:输入:nums = [1,2,2]输出:[[],[1],[1,2],[1,2,2],[2],[2,2]]示例2:输入:nums = [0]输出:[[],[0]]参考代码:class Solution {public: vector<vector<int>> re.
2022-04-18 11:27:58
93
原创 力扣刷题 DAY_68 回溯
Leetcode78链接:力扣。题目:给定一组不含重复元素的整数数组nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例1: 输入:nums = [1,2,3]输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]示例2:输入:nums = [0]输出:[[],[0]]参考代码:class Solution {public: vector<vector<int&...
2022-04-17 11:03:31
85
原创 力扣刷题 DAY_67 回溯
Leetcode93链接:力扣。题目:给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。有效的 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 '.' 分隔。例如:"0.1.2.201" 和 "192.168.1.1" 是 有效的 IP 地址,但是 "0.011.255.245"、"192.168.1.312" 和 "192.168@1.1" 是 无效的 IP 地址。示例1: 输入:s = "2552.
2022-04-15 13:42:45
92
原创 力扣刷题 DAY_66 回溯
Leetcode131链接:力扣。题目:给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。返回 s 所有可能的分割方案。示例1:输入:s = "aab"输出:[["a","a","b"],["aa","b"]]示例2:输入:s = "a"输出:[["a"]]思路:本题涉及两个问题:切割问题,有不同的切割方式 判断回文判断回文很容易。设置一个左指针left指向左边界、右指针right指向右边界,再用for循环依次判断s[left.
2022-04-14 11:04:25
438
原创 力扣刷题 DAY_65 回溯
Leetcode40链接:力扣。题目:给定一个数组candidates和一个目标数target,找出candidates中所有可以使数字和为target的组合。candidates 中的每个数字在每个组合中只能使用一次。说明: 所有数字(包括目标数)都是正整数。 解集不能包含重复的组合。示例1:输入:candidates = [10,1,2,7,6,1,5], target = 8输出:[[1,1,6],[1,2,5],[1,7],[2,6]...
2022-04-13 10:51:00
129
原创 力扣刷题 DAY_64 回溯
Leetcode39链接:力扣。题目:给定一个无重复元素的数组candidates和一个目标数target,找出candidates中所有可以使数字和为target的组合。candidates中的数字可以无限制重复被选取。说明:所有数字(包括target)都是正整数。 解集不能包含重复的组合。示例1:输入:candidates = [2,3,6,7], target = 7输出:[[2,2,3],[7]]示例2:输入:candida...
2022-04-12 10:21:37
110
原创 力扣刷题 DAY_63 回溯
Leetcode17链接:力扣。题目:给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例1:输入:digits = "23"输出:["ad","ae","af","bd","be","bf","cd","ce","cf"]示例2:输入:digits = ""输出:[]思路:首先,为手机键盘建立一个哈希表,即将每个数字映射成对应的字符串。使用一个大小为10的s.
2022-04-11 11:14:54
190
原创 力扣刷题 DAY_62 回溯
Leetcode216链接:力扣。题目:找出所有相加之和为n 的k个数的组合。组合中只允许含有 1 -9 的正整数,并且每种组合中不存在重复的数字。说明:所有数字都是正整数。 解集不能包含重复的组合。示例:输入:k = 3, n = 7输出:[[1,2,4]]解释:1 + 2 + 4 = 7思路:有了上一题Leetcode77的基础,77题所做的是在[1,n]集合中寻找k个组合的所有解。而本题,只需在[1,9]集合中找到k个的所有组合,然后判断其...
2022-04-10 11:45:56
545
原创 力扣刷题 DAY_61 回溯
Leetcode77链接:力扣。题目:给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合。示例:输入:n = 4, k = 2输出:[ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4],]思路:很基础的递归回溯题目。递归回溯的本质就是暴力穷举,列举所有可能找到所需要的情况。参考代码:class Solution {public: vector<vecto...
2022-04-09 11:23:12
887
原创 力扣刷题 DAY_60 二叉树
Leetcode60链接:力扣。题目:给出二叉 搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点 node 的新值等于原树中大于或等于 node.val 的值之和。说明:节点的左子树仅包含键 小于 节点键的节点。 节点的右子树仅包含键 大于 节点键的节点。 左右子树也必须是二叉搜索树。示例:输入:root = [4,1,6,0,2,5,7,null,null,null,3,null,null,null,8]..
2022-04-07 11:56:53
455
原创 力扣刷题 DAY_59 二叉树
Leetcode108链接:力扣。题目:将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树(二叉平衡树)。本题中,一个高度平衡二叉树是指一个二叉树每个节点的左右两个子树的高度差的绝对值不超过 1。示例:或输入:nums = [-10,-3,0,5,9]输出:[0,-3,9,-10,null,5]解释:[0,-10,5,null,-3,null,9]也是正确的输出思路:题目中说要转换为一棵高度平衡二叉搜索树。这和转换为一棵普通二叉搜索树有...
2022-04-06 15:17:28
929
原创 力扣刷题 DAY_58 二叉树
Leetcode669链接:力扣。题目:给定一个二叉搜索树,同时给定最小边界L和最大边界R。通过修剪二叉搜索树,使得所有节点的值在[L, R]中 (R>=L) 。你可能需要改变树的根节点,所以结果应当返回修剪好的二叉搜索树的新的根节点。示例:输入:root = [1,0,2], low = 1, high = 2输出:[1,null,2]思路:对于本题,我们不再使用遍历的思路。而是由根结点出发,根据当前结点的值逐层向下递归。对于每层当前结点root的...
2022-04-05 14:39:29
105
原创 力扣刷题 DAY_57 二叉树
Leetcode450链接:力扣。题目:给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。一般来说,删除节点可分为两个步骤:首先找到需要删除的节点; 如果找到了,删除它。 说明: 要求算法时间复杂度为 $O(h)$,h 为树的高度。示例:输入:root = [5,3,6,2,4,null,7], key = 3输出:[5,4,6,2,null,null,.
2022-04-04 15:22:41
115
原创 力扣刷题 DAY_56 二叉树
Leetcode701链接:力扣题目:给定二叉搜索树(BST)的根节点和要插入树中的值,将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 输入数据保证,新值和原始二叉搜索树中的任意节点值都不同。注意,可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索树即可。 你可以返回任意有效的结果。示例:输入的树:输出的树: 或者 输入:root = [4,2,7,1,3], val = 5...
2022-04-03 11:28:09
83
原创 力扣刷题 DAY_55 二叉树
Leetcode236链接:力扣。题目:给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”示例1:输入:root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1输出:3解释:The LCA of nodes 5 and 1 is 3..
2022-04-02 16:44:58
79
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人