列表

详情


3028. 边界上的蚂蚁

边界上有一只蚂蚁,它有时向 走,有时向 走。

给你一个 非零 整数数组 nums 。蚂蚁会按顺序读取 nums 中的元素,从第一个元素开始直到结束。每一步,蚂蚁会根据当前元素的值移动:

返回蚂蚁 返回 到边界上的次数。

注意:

 

示例 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 。

 

提示:

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: int returnToBoundaryCount(vector<int>& nums) { } };

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))

上一题