首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

滴滴快的叶耘:移动出行看共享经济的未来边界

移动出行看共享经济的未来边界 叶耘  滴滴快的公关总监公共事务高级总监 ?   ...大家好,我叫叶耘,是滴滴快的的公关总监,今天很高兴出行行业的角度大家分享一下个人对共享经济的看法,以及它的边界未来。   ...现在,合并半年多了,我们之前简单的出租车专车,延伸到了六大业务模块。我们全国大概有200万辆出租车,专车司机超过100万,顺风车业务今年6月1日正式发布,现在有260万。...最后说一下共享经济是不是有边界这个问题。我们知道,任何东西在带来好处的同时,也会带来坏处。我个人觉得共享经济最大一个风险实际上还是我们所说的安全问题。...于先生还提到,呼叫阿福台北停车难的实际出发,做代客泊车业务,但是这个业务很有很大的发展空间,未来可以做汽车方面的电子商务,泊车员可以车子保养到停车等整个供应链的服务。

4.3K51

每日一刷《剑指offer》字符串篇之编辑距离

如果括号数小于括号数,说明有不合法括号(前面没有括号与之匹配),重置为0。 最后反向遍历一次字符串,如果左右括号相等,则更新格式正确的括号子串长度,取较大者。...如果括号数大于括号数,说明有不合法括号(后面没有括号与之匹配),重置为0。...step 2:遍历字符串括号入栈,每次遇到括号则弹出括号的下标。 step 3:然后长度则更新为当前下标与栈顶下标的距离。...长度0到字符串长度n进行判断 选定起始下标 i 终止下标 j, i j 分别为要比较的字符串的左右边界指针 左右边界字符开始判断,即 A.charAt(i) == A.charAt...// 起始下标,范围取决于要判断的字符串长度c // i j 分别为要比较的字符串的左右边界指针 for(int i = 0; i < n - c;

20510
您找到你想要的搜索结果了吗?
是的
没有找到

剑指offer | 面试题6:重建二叉树

int[] preorder, int[] inorder) {// this.preorder = preorder;// //将中序遍历的值及索引放在map中,方便递归时获取子树与子树的数量及其根的索引...root节点// int idx = map.get(preorder[pre_root]);//获取在中序遍历中根节点所在索引,以方便获取子树的数量// //子树的根的索引为先序中的根节点...+ 1, in_left, idx - 1);// //子树的根的索引为先序中的 当前根位置 + 子树的数量 + 1// //递归子树的左边界为中序中当前根节点+1/...「边界+1 开始的 size_left_subtree」个元素就对应了中序遍历中「边界 开始到 根节点定位-1」的元素 root.left = myBuildTree(preorder...,并连接到根节点 // 先序遍历中「边界+1+子树节点数目 开始到 右边界」的元素就对应了中序遍历中「 根节点定位+1 到 右边界」的元素 root.right =

15720

​LeetCode刷题实战545:二叉树的边界

给定一棵二叉树,以逆时针顺序根开始返回其边界边界按顺序包括左边界、叶子结点边界而不包括重复的结点。(结点的值可能重复) 左边界的定义是根到最左侧结点的路径。...右边界的定义是根到最右侧结点的路径。若根没有子树或子树,则根自身就是左边界或右边界。注意该定义只对输入的二叉树有效,而对子树无效。...最左侧结点的定义是:在子树存在时总是优先访问,如果不存在子树则访问子树。重复以上操作,首先抵达的结点就是最左侧结点。 最右侧结点的定义方式相同,只是将替换成。...我们可以循环调用dfs,初始化leftBoundrightBound两个boolean参数,一层层判断。先加入左边,加入bottom,然后得到两个子树加入,最后加入右边界。...LeetCode刷题实战541:反转字符串 II LeetCode刷题实战542:01 矩阵 LeetCode刷题实战543:二叉树的直径 LeetCode刷题实战544: 输出比赛匹配对

16220

剑指Offer题解 - Day44

知道了子树的数量子树的数量,此时就可以将前序遍历的数组分为[根节点|子树|子树] 也就是说,「中序遍历是为了明确在前序遍历里如何分割子树子树」。...然后根据前序遍历的索引 root 获取当前值,然后构建节点。然后获取当前值在中序遍历当中的索引 index 。根据index就可以知道中序遍历里哪些是子树,哪些是子树。 然后开始递归左右子树。...递归子树需要知道子树的前序遍历的根节点的索引、中序遍历的左边界边界。根据前序遍历的根左右特点可以得知,当前根节点的索引的下一位就是子树的根节点的索引。因此第一个参数是root + 1。...左边界依旧是left,右边界应该是中序遍历的根节点的索引的上一位,因此是index - 1。 递归子树需要知道子树的前序遍历的根节点的索引、中序遍历的左边界边界。...根据前序遍历的根左右特点可以得知,当前根节点的索引加上子树的长度的下一位就是子树的根节点的索引。而子树的长度就是中序遍历的根节点减去左边界,也就是index - left。

14520

07. 重建二叉树

重建二叉树 输入某二叉树的前序遍历中序遍历的结果,请重建该二叉树。假设输入的前序遍历中序遍历的结果中都不含重复的数字。... 2,中序(In-order):-根- 3,后序(Post-order):--根 题解 难度为中等。...root节点 int idx = map.get(preorder[pre_root]);//获取在中序遍历中根节点所在索引,以方便获取子树的数量 //子树的根的索引为先序中的根节点...+1 //递归子树的左边界为原来的中序in_left //递归子树的右边界为中序中的根节点索引-1 root.left = recur(pre_root...+1, in_left, idx-1); //子树的根的索引为先序中的 当前根位置 + 子树的数量 + 1 //递归子树的左边界为中序中当前根节点+1

33720

剑指Offer题解 - Day35

排序函数里的比较函数,首先将ab转换为字符串后进行拼接,然后比较拼接后字符串的大小,将较小的排在前面。...递归就是:对 「子数组」 子数组」 分别递归执行 「哨兵划分」,直至子数组长度为 1 时终止递归,即可完成对整个数组的排序。...默认情况下,分别指向当前递归的左边界边界。此时我们默认将左边界所在的元素指定为「哨兵」。在指针小于指针的前提下,分别寻找第一个小于哨兵的值第一个大于哨兵的值,然后交换两个值。...本轮循环结束后,再将左边界的值(哨兵)已经右移的指针的值进行交换。经历过此次循环并交换哨兵位置后,哨兵前面所有的值都小于哨兵,后面所有的值都大于哨兵。...然后再递归的排序哨兵前面的子数组后面的子数组。注意不包含哨兵,因为哨兵的位置是正确的,不需要再变动。 最终需要拼接为字符串并进行返回。 总结 本题考查排序。采用了内置函数快排的思路进行题解。

16010

基于立体R-CNN的3D对象检测

双目立体视觉是机器视觉的一种重要形式,其原理是基于视差图像形成设备,使用两个不同位置获取的物体图像,通过计算图像之间的对应点的位置偏差来获得三个对象的三维几何信息。...然后,通过使用RoIRoI的基于区域的光度对齐来恢复准确的3D边界框。 该方法不需要输入深度3D位置,但是效果比所有现有的基于完全监督的图像方法都要好。...RPN分类回归的不同目标分配。来源[1] 对于立体框回归,他们计算重新定位到目标获取联合GT框中包含的GT框GT框的正锚的偏移,然后分别为回归回归指定偏移。...给定左右2D边界框,透视关键点回归尺寸,可以通过最小化二维反投影的误差来获得3D边界框。 立体边界透视关键点中提取了七个测量参数: ?...它们表示2D边界框的,上,边界2D边界框的右半径以及透视关键点坐标u。每个参数都需要通过相机内部参数进行归一化。

1.2K10

二叉树的边界(前序+后序)*

题目 给定一棵二叉树,以逆时针顺序根开始返回其边界边界按顺序包括左边界、叶子结点边界而不包括重复的结点。 (结点的值可能重复) 左边界的定义是根到最左侧结点的路径。...右边界的定义是根到最右侧结点的路径。 若根没有子树或子树,则根自身就是左边界或右边界。 注意该定义只对输入的二叉树有效,而对子树无效。...最左侧结点的定义是:在子树存在时总是优先访问, 如果不存在子树则访问子树。 重复以上操作,首先抵达的结点就是最左侧结点。 最右侧结点的定义方式相同,只是将替换成。...示例 1 输入: 1 \ 2 / \ 3 4 输出: [1, 3, 4, 2] 解析: 根不存在子树,故根自身即为左边界。 叶子结点是34。 右边界是1,2,4。...) { dfs(root->left,-1);//有节点,进入节点找 dfs(root->right, 0);//舍弃节点 } else

78630

为实习准备的数据结构(4)-- 二叉树

这样以来,我们就知道了子树的前序遍历中序遍历结果,以及子树的前序遍历中序遍历结果,我们就可以递归地对构造出子树子树,再将这两颗子树接到根节点的左右位置。...,并连接到根节点 // 先序遍历中「边界+1+子树节点数目 开始到 右边界」的元素就对应了中序遍历中「 根节点定位+1 到 右边界」的元素 root->right...这样以来,我们就知道了子树的后序遍历中序遍历结果,以及子树的后序遍历中序遍历结果,我们就可以递归地对构造出子树子树,再将这两颗子树接到根节点的左右位置。...,并连接到根节点 // 后序遍历中「边界+子树节点数目 开始到 右边界-1 」的元素就对应了中序遍历中「 根节点定位+1 到 右边界」的元素 root->right...(第一层)开始,依次向下,获取每一层所有结点的值,有二叉树如下: [在这里插入图片描述] 实现步骤: 1.创建队列,存储每一层的结点; 2.使用循环队列中弹出一个结点: 2.1获取当前结点的key;

35210

有效的括号字符串

有效的括号字符串 给定一个只包含三种字符的字符串:(、)*,写一个函数来检验这个字符串是否为有效字符串,有效字符串具有如下规则: 任何括号(必须有相应的括号)。...任何括号)必须有相应的括号(。 括号(必须在对应的括号之前)。 *可以被视为单个括号),或单个括号(,或一个空字符串。 一个空字符串也被视为有效字符串。...else --rSeq; if(rSeq < 0) return false; } return true; }; 思路 采用双向遍历的方式,两种极端边界假设...,首先假设所有*都为(,因括号必须在配对的左边,故左向右遍历,看是否足够覆盖所有),然后假设假设所有*都为),因括号必须在配对的右边,故向左遍历,看是否足够覆盖所有(,如果双向都能够成立,那么就能够满足题目要求条件

65120

两分钟看懂有效的括号

一、题目描述 给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 括号必须用相同类型的括号闭合。...规律:尝试总结出题目的一般规律特点。 匹配:找到符合这些特点的数据结构与算法。 边界:考虑特殊情况。...1.模拟 有效的情况: 1)不嵌套 image.png 2)嵌套 image.png 无效的情况: 1)长度为奇数,括号多余 image.png 2)长度为奇数,括号多余 image.png...3)长度为偶数,括号与括号不配对 image.png 4)长度为偶数,部分子表达式可以配对,但外部不配对 image.png 2.规律 通过上述的模拟,可以总结出以下 3 个特点: 1、...image.png 4.边界 所谓边界,即特殊情况: 字符串的长度为奇数 三、动画图解 四、参考代码 // 登录 https://www.algomooc.com 查看更多图解 class Solution

44720

剑指Offer题解 - Day46

子树根节点。...根节点就是当前的右边界边界开始遍历,寻找第一个大于根节点的节点值,将该节点记做m。也就意味着边界到 m 节点的上一个节点为止,都是子树。m节点到右边界减一的节点为止,都是子树。...右边界本身就是根节点。 其中需要判断子树的值是否都小于根节点,子树的值是否都大于根节点。在寻找第一个大于根节点的时候,其实已经验证了节点的值都是小于根节点的。因此只需要验证子树。...维护一个节点 p,遍历子树的每个节点,直到遇到小于等于根节点的值为止。 最终满足二叉搜索树的条件就是节点 p 与右边界相等,以及递归子树递归子树都满足二叉搜索树。...分析: 解题的核心思路就是将数组分为 「[子树|子树|根节点]」 ,同时需要判断子树是否都小于根节点,子树是否都大于根节点。都满足条件后,然后递归子树子树。

11810

剑指 Offer 07. 重建二叉树

/ \ 9 20 / \ 15 7 限制: 0 <= 节点个数 <= 5000 题解: 递归方式 先根据先序遍历确认根节点,然后找出根节点在中序遍历的位置,从而确定子树的长度子树的长度...,对应到先序遍历中也能找出对应的子树子树, 分别递归子树子树,重复上面步骤。...,对应到先序遍历中也能找出对应的子树子树, * 分别递归子树子树,重复上面步骤。...【边界+1 开始的size_left_subtree】个元素就对应了中序遍历中【边界开始到根节点定位-1】的元素 root.left = myBuildTree(preorder...,并连接到根节点 //先序遍历中【 边界+1 + 子树节点数目 对应 开始 到右边界】的元素对应了中序遍历中 【边界开始 到 根节点-1】的元素 root.right

12630

Python:索引总结

Python包含6种内建序列: 列表 元组 字符串 Unicode字符串 buffer对象 xrange对象 ---- 索引 #字符串可以直接使用索引,不需要专门的变量引用 >>> 'Hello World...[-4])# r ---- 分片   分片用于截取某个范围内的元素,通过:来指定起始区间(开区间,包含左侧索引值对应的元素,但不包含测索引值对应的元素)。...[3:6] [4, 5, 6] #注意右边界开区间 >>> num[3:9] [4, 5, 6, 7, 8, 9] #右边越界,刚好是10对应的下一个索引值 >>> num[3:10] [4,...1,2,3,4,5,6,7,8,9,10] >>> num[-3:-1]#注意是不包含最后一个元素的 [8, 9] >>> num[-4:-1] [7, 8, 9] >>> num[-10:-1]#同样满足开区间...call last): File "", line 1, in ValueError: slice step cannot be zero #如果步长为负数,表示向左提取元素

81720

【数据结构与算法】:交换排序之快速排序(手绘图解+LeetCode原题)

②设置两个指针(LowHigh),分别指向首元素与倒数第二个元素。...③Low指针由左向右扫描,其位置左侧放置的都是遍历过的或交换过的小于基准的元素; —High指针向左扫描,其位置右侧放置的都是遍历过的或交换过的大于基准的元素。...⑤重复上述操作,直至 High指针 Low指针 错位 ⑥错位后停止,将基准元素与指针Low指向元素交换位置,至此,我们成功将小于基准的元素放在其,大于基准的元素放于其!...——这代表我们成功完成了一次划分,以基准为边界分别划分成小于大于基准的两个子序列。 ⑦递归地对两个子序列,用同样的方法进行快速排序即可。...int num = p-L+1; //左侧小于基准的子序列的元素个数 //(基准划分的 子序列元素 <= 基准 < 子序列元素)

26720
领券