124 次浏览
假设我们有两个字符串 older 和 newer,它们分别代表软件包版本,格式为“主版本号.次版本号.修订号”,我们需要检查 newer 版本是否确实比 older 版本新。例如,如果输入 older = "7.2.2",newer = "7.3.1",则输出为 True。解决方法如下:older := older 版本的主版本号、次版本号和修订号列表newer := newer 版本的主版本号、次版本号和修订号列表遍历 older 列表,i 为索引:older[i] := o,newer[i] := n如果 n > o,则返回 True否则,如果 n ... 阅读更多
468 次浏览
假设我们有一个正数列表 nums,我们需要找到其中位数为奇数的元素个数。例如,如果输入为 [1, 300, 12, 10, 3, 51236, 1245],则输出为 4。解决方法如下:c:= 0遍历 nums 列表,i 为索引:s:= nums[i] 的位数如果 s 为奇数,则c:= c+1返回 c让我们来看下面的实现,以便更好地理解:示例 在线演示class Solution: def solve(self, nums): c=0 for i in range(len(nums)): ... 阅读更多
9K+ 次浏览
假设我们有一个数字 n,我们需要找到前 n 个正奇数之和。例如,如果输入为 7,则输出为 49,因为 [1+3+5+7+9+11+13] = 49。解决方法如下:如果 n 等于 0,则返回 0sum := 1,count := 0,temp := 1当 count < n-1 时:temp := temp + 2sum := sum + tempcount := count + 1返回 sum让我们来看下面的实现,以便更好地理解:示例 在线演示class Solution: def solve(self, n): if n == 0: return 0 sum = 1 count = 0 temp = 1 while(count
173 次浏览
假设我们有一个包含小写字母的字符串 s,我们需要找到包含唯一字符的子字符串的总数。例如,如果输入为 "xxyy",则输出为 6,因为子字符串为 [x, x, xx, y, y, yy]。解决方法如下:total := 0previous := 空字符串遍历字符串 s 中的每个字符 c:如果 c 不等于 previous,则previous := ctemp := 1否则,temp := temp + 1total := total + temp返回 total让我们来看下面的实现,以便更好地理解:示例 在线演示class Solution: def solve(self, s): ... 阅读更多
229 次浏览
假设我们有一棵包含唯一值的二叉树,还有一个值 k,我们需要找到树中长度为 k 的唯一路径的数量。路径可以从父节点到子节点,也可以从子节点到父节点。如果一条路径中出现某个节点,而另一条路径中没有,则认为这两条路径不同。例如,如果输入 k = 3,则输出为 4,因为路径为 [12, 8, 3]、[12, 8, 10]、[8, 12, 15]、[3, 8, 10]。解决方法如下:定义一个函数 ... 阅读更多
94 次浏览
假设我们有一个数字 n,我们需要找到该数字二进制表示中 1 的个数。例如,如果输入为 12,则输出为 2。解决方法如下:count := 0当 n 不为零时:count := count + (n AND 1)n := floor(n / 2)返回 count让我们来看下面的实现,以便更好地理解:示例 在线演示class Solution: def solve(self, n): count = 0 while (n): count += n & 1 n >>= 1 return count ob = Solution() print(ob.solve(12))输入12输出2
512 次浏览
假设我们有一个数字 n,我们需要找到第 n 个斐波那契项。我们知道第 i 个斐波那契项 f(i) = f(i-1) + f(i-2),前两项为 0, 1。例如,如果输入为 15,则输出为 610。解决方法如下:first := 0,second := 1遍历 2 到 n 的范围,i 为索引:temp := first + secondfirst := secondsecond := temp返回 second让我们来看下面的实现,以便更好地理解:示例 在线演示class Solution: def solve(self, n): first = 0 second ... 阅读更多
365 次浏览
假设我们有一个数字 n,表示大小为 n x n 的棋盘。我们需要找到放置 n 个车的方法数,使得它们不能互相攻击。如果一种方法中棋盘的某个单元格被占用,而另一种方法中该单元格未被占用,则认为这两种方法不同。(我们知道,如果车在同一行或同一列,则它们可以互相攻击)。例如,如果输入为 3,则输出为 6。解决方法如下: ... 阅读更多
826 次浏览
假设我们有一棵 BST,以及左右边界 l 和 r,我们需要找到根节点中所有值在 l 和 r(包含)之间的节点的数量。例如,如果输入 l = 7,r = 13,则输出为 3,因为有三个节点:8、10、12。解决方法如下:stack := 一个栈,首先插入根节点,count := 0当 stack 不为空时:node := 栈顶元素,并弹出元素如果 node 不为空,则如果 l
652 次浏览
假设我们有一个数字 n;我们需要检查它是否等于 n 的各位数字的和的 n 的位数次幂。例如,如果输入为 9474,则输出为 True,因为 9^4 + 4^4 + 7^4 + 4^4 = 6561 + 256 + 2401 + 256 = 9474。解决方法如下:s := n 的各位数字列表如果 n 等于 s 中所有 x 的 x^(s 的大小)之和,则返回 true,否则返回 false让我们来看下面的实现,以便更好地理解: ... 阅读更多