怎样做好网站推广,如何建设和优化一个网站步骤,wordpress文章点击数插件,wordpress 小程序 插件阿里撤资 车来了 近日#xff0c;国内实时公交产品车来了关联公司武汉元光科技有限公司发生工商变更#xff0c;阿里巴巴#xff08;中国#xff09;网络技术有限公司退出股东行列。 这很好理解#xff0c;符合近期阿里收缩战线的行为一致性。 毕… 阿里撤资 车来了 近日国内实时公交产品车来了关联公司武汉元光科技有限公司发生工商变更阿里巴巴中国网络技术有限公司退出股东行列。 这很好理解符合近期阿里收缩战线的行为一致性。 毕竟自己一手打造的饿了么都被数次传出「摆上货架」的消息。 那些被阿里投资的项目自然更是首当其冲。 但阿里这个级别的公司容易造成领头羊效应成为引发雪崩的第一个初始雪球。 那些前期被阿里领投现如今可能不是自身业务问题但却遭遇阿里撤资的项目失去的可能并不只是阿里的投资大概率还会包括那些前期跟随大公司步伐进行跟投的资金。 一个企业目前没有稳定的盈利业务仅政企 广告可能还是靠融资活着如果原计划的资金超过 30% 不能及时到位意味着资金链断裂公司只能是面临裁员甚至破产倒闭。 考虑到车来了是轻资产类型的公司因此大胆预计近期会发生裁员再撑一段时间。 后续如果没有特别变化的话比较好的出路应该会被其他互联网巨头收购作为地位比地图低两个档次的基础设施而存在。 但说句很残忍的话如果真的沦落到被收购大概率会被贱卖目前比较好的潜在卖家腾讯、百度、字节。 ... 回归主线来一道读者投稿的「阿里」一面算法原题。 读者反馈阿里的题面并不如此但意思和解法完全一致属于换皮原题。 题目描述 平台LeetCode 题号1457 给你一棵二叉树每个节点的值为 1 到 9 。 我们称二叉树中的一条路径是 「伪回文」的当它满足路径经过的所有节点值的排列中存在一个回文序列。 请你返回从根到叶子节点的所有路径中伪回文路径的数目。 示例 1 输入root [2,3,1,3,1,null,1]输出2 解释上图为给定的二叉树。总共有 3 条从根到叶子的路径红色路径 [2,3,3] 绿色路径 [2,1,1] 和路径 [2,3,1] 。 在这些路径中只有红色和绿色的路径是伪回文路径因为红色路径 [2,3,3] 存在回文排列 [3,2,3] 绿色路径 [2,1,1] 存在回文排列 [1,2,1] 。 示例 2 输入root [2,1,1,1,3,null,null,null,null,null,1]输出1 解释上图为给定二叉树。总共有 3 条从根到叶子的路径绿色路径 [2,1,1] 路径 [2,1,3,1] 和路径 [2,1] 。 这些路径中只有绿色路径是伪回文路径因为 [2,1,1] 存在回文排列 [1,2,1] 。 示例 3 输入root [9]输出1 提示 给定二叉树的节点数目在范围 内 DFS 位运算 “伪回文”是指能够通过重新排列变成“真回文”真正的回文串只有两种情况 长度为偶数即出现次数为奇数的字符个数为 个 长度为奇数即出现次数为奇数的字符个数为 个位于中间 因此「我们只关心路径中各个字符数字 0-9出现次数的奇偶性若路径中所有字符出现次数均为偶数或仅有一个字符出现次数为奇数那么该路径满足要求」。 节点值范围为 除了使用固定大小的数组进行词频统计以外还可以使用一个 int 类型的变量 cnt 来统计各数值的出现次数奇偶性若 的第 位为 说明数值 的出现次数为奇数否则说明数值 出现次数为偶数或没出现过两者是等价的。 例如 代表数值 和数值 出现次数为奇数次其余数值没出现过或出现次数为偶数次。 翻转一个二进制数字中的某一位可使用「异或」操作具体操作位 cnt ^ 1 k。 判断是否最多只有一个字符出现奇数次的操作也就是判断一个二进制数字是为全为 或仅有一位 可配合 lowbit 来做若 cnt 与 lowbit(cnt) cnt -cnt 相等说明满足要求。 考虑到对 lowbit(x) x -x 不熟悉的同学这里再做简单介绍*lowbit(x) 表示 x 的二进制表示中最低位的 所在的位置对应的值*即仅保留从最低位起的第一个 其余位均以 填充 x 6其二进制表示为 那么 x 12其二进制表示为 那么 Java 代码 class Solution { int ans 0; public int pseudoPalindromicPaths (TreeNode root) { dfs(root, 0); return ans; } void dfs(TreeNode root, int cnt) { if (root.left null root.right null) { cnt ^ 1 root.val; if (cnt (cnt -cnt)) ans; return ; } if (root.left ! null) dfs(root.left, cnt ^ (1 root.val)); if (root.right ! null) dfs(root.right, cnt ^ (1 root.val)); }} C 代码 class Solution {public: int ans; int pseudoPalindromicPaths(TreeNode* root) { dfs(root, 0); return ans; } void dfs(TreeNode* root, int cnt) { if (!root-left !root-right) { cnt ^ 1 root-val; if (cnt (cnt -cnt)) ans; return; } if (root-left) dfs(root-left, cnt ^ (1 root-val)); if (root-right) dfs(root-right, cnt ^ (1 root-val)); }}; Python 代码 class Solution: def pseudoPalindromicPaths (self, root: Optional[TreeNode]) - int: ans 0 def dfs(root, cnt): nonlocal ans if not root.left and not root.right: cnt ^ 1 root.val ans 1 if cnt (cnt -cnt) else 0 return if root.left: dfs(root.left, cnt ^ (1 root.val)) if root.right: dfs(root.right, cnt ^ (1 root.val)) dfs(root, 0) return ans TypeScript 代码 function pseudoPalindromicPaths (root: TreeNode | null): number { let ans 0; const dfs function (root: TreeNode, cnt: number): void { if (root.left null root.right null) { cnt ^ 1 root.val; if (cnt (cnt -cnt)) ans; return ; } if (root.left) dfs(root.left, cnt ^ (1 root.val)); if (root.right) dfs(root.right, cnt ^ (1 root.val)); } dfs(root, 0); return ans;}; 时间复杂度 空间复杂度 我是宫水三叶每天都会分享算法题解并和大家聊聊近期的所见所闻。 欢迎关注明天见。 更多更全更热门的「笔试/面试」相关资料可访问排版精美的 合集新基地