首页
学习
活动
专区
圈层
工具
发布

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

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

4.6K51

【双指针进阶】深入理解双指针作用——滑动窗口题型带你一网打尽!

移动右指针扩展窗口,当set中已有重复字符时,移动左指针缩小窗口,直到窗口无重复。 记录窗口的最大长度。...移动右指针扩展窗口,遇到0时将其计入窗口。 如果窗口中的0超过k个,移动左指针缩小窗口,直到窗口中的0数量≤k。 记录窗口的最大长度。...使用滑动窗口找和为target的最长子数组: 扩展右指针增加窗口和。 如果窗口和大于target,移动左指针缩小窗口。...窗口扩展和收缩: 扩展窗口:通过右指针 right 不断扩展窗口,将字符加入窗口。 收缩窗口:当窗口内已经包含 t 中所有字符后,通过移动左指针 left 缩小窗口,直到不再满足条件。...滑动窗口遍历字符串: 枚举所有可能的起始偏移量 i(从 0 到 len-1)。 从偏移量 i 开始,以步长 len 遍历字符串 s,动态维护窗口状态。

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

    【C++经典例题】字符串特定规则反转问题的解法

    问题描述 在字符串处理的编程领域中,经常会遇到各种复杂的规则要求。 本文将深入探讨一个给定字符串 s 和整数 k,按照特定规则反转字符串的问题。...要求从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符 如果剩余字符少于 k 个,则将剩余字符全部反转; 如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符...通过双指针的方式,定义一个左指针 left 来标记每个区间的起始位置,初始时 left 指向字符串的开头 s.begin()。 确定右边界:对于每个 2k 区间,需要确定其右边界 right。...如果从 left 开始往后数 k 个字符不超过字符串末尾,即 (left + k) 边界 rightend 就是 left + k;否则,实际反转的右边界 rightend...移动指针:完成一个区间的处理后,将左指针 left 移动到当前右边界 right 的位置,以便处理下一个 2k 区间。重复上述步骤,直到左指针 left 到达字符串的末尾。

    34000

    每日一刷《剑指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;

    45610

    剑指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 =

    32420

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

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

    29720

    剑指Offer题解 - Day44

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

    26520

    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

    47720

    剑指Offer题解 - Day35

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

    30410

    【Java算法入门】有效的括号问题,栈的经典应用!✨

    知识点说明 问题描述 给定一个只包括 '(',')','{','}','[',']' 的字符串 s,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。...,继续处理下一个字符 如果不匹配,或者栈为空(没有左括号可以匹配),则字符串无效 遍历完成后,如果栈为空(所有左括号都有匹配的右括号),则字符串有效;否则无效 重难点说明 1....边界情况处理 ⚠️ 在实现算法时,我们需要特别注意以下边界情况: 空字符串(通常认为是有效的) 只有左括号或只有右括号的字符串 字符串长度为奇数(一定无效,因为括号必须成对出现) 字符串以右括号开始(一定无效...,将其推入栈中 stack = [‘{’] 遍历字符 ‘[’: ‘[’ 是左括号,将其推入栈中 stack = [‘{’, ‘[’] 遍历字符 ‘]’: ‘]’ 是右括号,从栈中弹出一个元素...算法的核心思想是遇到左括号就入栈,遇到右括号就出栈并检查是否匹配。这种简洁的思路体现了算法的优雅之处。 边界情况的处理也很重要,包括空字符串、奇数长度字符串等特殊情况。

    20010

    数据结构(C语言篇):(十五)二叉树OJ题

    “判断根节点相同 + 左子树相同 + 右子树相同”,终止条件覆盖所有边界情况: 1....递归深入:当前节点检查通过后,递归判断「p 的左子树与 q 的左子树」和「p 的右子树与 q 的右子树」(需两者均相同,故用 “与运算” 连接)。...→ q 的左 → p 的右 → q 的右” 入队,确保下一轮处理的是 “对应位置的子节点”—— 若顺序错误(如 p 的左和 q 的右入队),会导致结构对比错位。...递归深入:当前节点检查通过后,递归检查「左节点的左 vs 右节点的右」和「左节点的右 vs 右节点的左」(需两者均对称,用 “与运算” 连接)。...若顺序错误(如左左→左右→右右→右左),会导致对比错位(如左左和左右对比,而非左左和右右); 空节点的处理:即使节点为空,若其对称位置有节点,也需入队检查; 内存安全:所有返回路径(包括false)均需销毁队列

    7210

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

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

    1.5K10

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

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

    52410

    2025-04-27:统计重新排列后包含另一个字符串的子字符串数目Ⅱ。用go语言,给定两个字符串 word1 和 word2,

    用go语言,给定两个字符串 word1 和 word2, 如果存在一个字符串 x,将 x 重排后,word2 恰好是该重排字符串的前缀,我们就称这个字符串 x 是“合法的”。...采用滑动窗口遍历 word1,动态调整 diff 和 cnt • 设置两个指针,l(左边界)和 r(右边界),初始均指向字串起点。 • 定义一个窗口即子字符串 word1[l:r]。...• 由于以 r 结尾的窗口是最小满足条件的窗口,从 r 到 word1 末尾,共有 len(word1) - r + 1 个子串以 l 为左边界满足条件。 • 将这些子串数累加到结果 res 中。...左指针右移,继续查找其它满足条件的子串 • 左指针右移一位,弹出最左字符,更新 diff 和 cnt,再重复上述过程。 • 持续执行直到 l 指向 word1 结尾。...时间复杂度 • 滑动窗口中左、右指针均在字符串上只移动一遍,整体指针移动次数不超过 O(len(word1))。 • 更新 diff 和 cnt 的操作为常数时间。

    25910

    C语言编程实战:每日一题:有效的括号

    它看似基础,却能全面考察对栈数据结构的理解、字符串遍历技巧、边界条件处理能力,同时涉及内存安全(避免内存泄漏)等工程化细节。 2....核心考点 栈的“先进后出(LIFO)”特性应用; 字符串逐字符遍历与条件判断; 边界案例(空字符串、单边括号、不匹配括号、嵌套括号)处理; 数据结构的初始化与销毁(内存安全)。...分情况详细说明 左括号处理:遍历字符串,遇到任意左括号(( { [),直接压入栈中——栈中存储的是“等待匹配的左括号”,后续需通过右括号“消解”; 右括号处理:遇到右括号时,需分3种临界情况判断:...栈为空:说明当前右括号没有对应的左括号(如输入 ")()" "}}{"),直接返回 false; 栈顶左括号与当前右括号匹配('('→')'、'{'→'}'、'['→']'):弹出栈顶左括号(表示匹配成功...,消解一个左括号),继续遍历; 栈顶左括号与当前右括号不匹配(如 '(' 对应 ']'、'{' 对应 ')'):括号结构无效,返回 false; 遍历结束后校验: 栈为空:所有左括号都被右括号匹配消解

    10610

    有效的括号字符串

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

    90720

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

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

    93330
    领券