class Solution {
public:
int returnToBoundaryCount(vector<int>& nums) {
}
};
3028. 边界上的蚂蚁
边界上有一只蚂蚁,它有时向 左 走,有时向 右 走。
给你一个 非零 整数数组 nums
。蚂蚁会按顺序读取 nums
中的元素,从第一个元素开始直到结束。每一步,蚂蚁会根据当前元素的值移动:
nums[i] < 0
,向 左 移动 -nums[i]
单位。nums[i] > 0
,向 右 移动 nums[i]
单位。返回蚂蚁 返回 到边界上的次数。
注意:
|nums[i]|
单位后才检查它是否位于边界上。换句话说,如果蚂蚁只是在移动过程中穿过了边界,则不会计算在内。
示例 1:
输入:nums = [2,3,-5] 输出:1 解释:第 1 步后,蚂蚁距边界右侧 2 单位远。 第 2 步后,蚂蚁距边界右侧 5 单位远。 第 3 步后,蚂蚁位于边界上。 所以答案是 1 。
示例 2:
输入:nums = [3,2,-3,-4] 输出:0 解释:第 1 步后,蚂蚁距边界右侧 3 单位远。 第 2 步后,蚂蚁距边界右侧 5 单位远。 第 3 步后,蚂蚁距边界右侧 2 单位远。 第 4 步后,蚂蚁距边界左侧 2 单位远。 蚂蚁从未返回到边界上,所以答案是 0 。
提示:
1 <= nums.length <= 100
-10 <= nums[i] <= 10
nums[i] != 0
原站题解
cpp 解法, 执行用时: 11 ms, 内存消耗: 21.7 MB, 提交时间: 2024-02-06 09:48:26
class Solution { public: int returnToBoundaryCount(vector<int> &nums) { int ans = 0, sum = 0; for (int x : nums) { sum += x; ans += sum == 0; } return ans; } };
java 解法, 执行用时: 0 ms, 内存消耗: 41.2 MB, 提交时间: 2024-02-06 09:48:13
class Solution { public int returnToBoundaryCount(int[] nums) { int ans = 0; int sum = 0; for (int x : nums) { sum += x; if (sum == 0) { ans++; } } return ans; } }
golang 解法, 执行用时: 2 ms, 内存消耗: 2.3 MB, 提交时间: 2024-02-06 09:47:55
func returnToBoundaryCount(nums []int) (ans int) { sum := 0 for _, x := range nums { sum += x if sum == 0 { ans++ } } return }
python3 解法, 执行用时: 42 ms, 内存消耗: 16.5 MB, 提交时间: 2024-02-06 09:47:34
class Solution: def returnToBoundaryCount(self, nums: List[int]) -> int: ''' 前缀和为0的次数 ''' return sum(s == 0 for s in accumulate(nums))