Leetcode 3354. Make Array Elements Equal to Zero

  • [Leetcode 3354. Make Array Elements Equal to Zero](#Leetcode 3354. Make Array Elements Equal to Zero)
    • [1. 解题思路](#1. 解题思路)
    • [2. 代码实现](#2. 代码实现)

1. 解题思路

这一题是一道easy的题目,本来没想写的,因为完全可以暴力搞定,不过这里还是写了一下,因为这道题多少还是比较巧妙的,问题的描述一大把,事实上就是要分析在什么条件下可以使得数组归零,而这个的回答就是要求:

  • 元素两侧的元素之和相同,此时往哪个方向开始均可以,有两种走法;
  • 元素两侧的元素之差为1,此时往多的那一侧行走可以归零,有且只有一种走法;

因此,这道题事实上就变成一个累计数组的题目了, O ( N ) O(N) O(N)的算法复杂度即可完成。

2. 代码实现

给出python代码实现如下:

python 复制代码
class Solution:
    def countValidSelections(self, nums: List[int]) -> int:
        s = sum(nums)
        pre = 0
        ans = 0
        for num in nums:
            left = pre
            right = s-pre-num
            if num == 0:
                if left == right:
                    ans += 2
                elif abs(left-right) == 1:
                    ans += 1
            pre += num
        return ans

提交代码评测得到:耗时48ms,占用内存16.7MB。

相关推荐
Tisfy1 小时前
LeetCode 2095.删除链表的中间节点:两次遍历 / 一次遍历(快慢指针)
算法·leetcode·链表·题解·双指针
凌波粒1 小时前
LeetCode--131.分割回文串(回溯算法)
算法·leetcode·职场和发展
KobeSacre3 小时前
划分为k个相等的子集
算法·leetcode·深度优先
开开心心_Every4 小时前
近200个工具的电脑故障修复合集
linux·运维·服务器·leetcode·智能手机·电脑·模拟退火算法
进击的荆棘4 小时前
优选算法——优先级队列
数据结构·c++·算法·leetcode·优先级队列
拂拉氏4 小时前
【知识讲解-题目讲解】算法系列之动态规划入门(下)
算法·leetcode·动态规划
开开心心就好5 小时前
自动生成小学数学题库支持导出Word
人工智能·安全·leetcode·贪心算法·ocr·音视频·语音识别
YHHLAI5 小时前
LeetCode 136.只出现一次的数字 | 从遍历统计到位运算极致优化
算法·leetcode·职场和发展
进击的荆棘5 小时前
优选算法——BFS
c++·算法·leetcode·宽度优先
一只齐刘海的猫19 小时前
【Leetcode】找到字符串中所有字母异位词
算法·leetcode·职场和发展