首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Leetcode题解——941/1013

Leetcode题解——941/1013

作者头像
出其东门
发布于 2019-07-23 07:29:15
发布于 2019-07-23 07:29:15
50800
代码可运行
举报
文章被收录于专栏:01二进制01二进制
运行总次数:0
代码可运行

941. 有效的山脉数组

题目

https://leetcode-cn.com/problems/valid-mountain-array/

题解

山脉数组就是前期是递增序列,后期是递减序列的数组,所以刚开始可以设置两个标志符,分别表示上升和下降。

如果在上升序列时发现down是true,那么就返回false,同理,如果是下降序列时发现up是true,也return false,最后取二者交集即可

代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class Main {
    public static void main(String[] args) {
        Main main = new Main();
        int[] a = {0, 3, 2, 1};
        System.out.println(main.validMountainArray(a));
    }

    public boolean validMountainArray(int[] A) {
        boolean up = false;
        boolean down = false;
        for (int i = 0; i < A.length - 1; i++) {
            if (A[i] - A[i + 1] < 0) {
                if (down) return false;
                up = true;
            } else if (A[i] - A[i + 1] > 0) {
                if (!up) return false;
                down = true;
            } else {
                return false;
            }
        }
        return up && down;
    }
}

1013. 将数组分成和相等的三个部分

题目

https://leetcode-cn.com/problems/partition-array-into-three-parts-with-equal-sum/

题解

题目要求分成和相等的三分,所以我们需要先数组的和

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public int sumOfArr(int[] A) {
    int sum = 0;
    for (int x : A) {
        sum += x;
    }
    return sum;
}

求和之后我们在判断是否可以等分成3份,如果不可以直接返回false,如果可以,进行下一步。

因为要分成三份,我们可以找出首末两份,flag1表示能否找出3等份的第一份,index表示找到的第一份的下标,然后遍历即可,如果找到flag1=true,并记录下index。此时进行第三份的查找,我们需要从后往前找,如果flag1=true,那么从后往前找的边界就是index,找到了返回true,代码如下:

代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class Main {

    public static void main(String[] args) {
        Main main = new Main();
        int[] A = {18, 12, -18, 18, -19, -1, 10, 10};
        System.out.println(main.canThreePartsEqualSum(A));
    }

    public boolean canThreePartsEqualSum(int[] A) {
        int sum = sumOfArr(A);
        if (sum % 3 != 0) return false;

        int temp = 0;
        boolean flag1 = false;
        int index = 0;

        for (int i = 0; i < A.length - 1; i++) {
            temp += A[i];
            if (temp == sum / 3) {
                flag1 = true;
                index = i;
                break;
            }
        }

        boolean flag2 = false;
        temp = 0;
        if (flag1) {
            for (int i = A.length - 1; i > index; i--) {
                temp += A[i];
                if (temp == sum / 3) {
                    flag2 = true;
                    break;
                }
            }
        }
        return flag1 && flag2;
    }

    public int sumOfArr(int[] A) {
        int sum = 0;
        for (int x : A) {
            sum += x;
        }
        return sum;
    }
}

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-07-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 01二进制 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
LeetCode 941. 有效的山脉数组
给定一个整数数组 A,如果它是有效的山脉数组就返回 true,否则返回 false。
村雨遥
2020/05/06
3110
LeetCode 941. 有效的山脉数组
Leetcode题解——849/950
我们将有人的座位的下标记录到一个list中,剩下的事情就是要找一个点,距离list中某个元素的最大距离
出其东门
2019/08/06
3610
LeetCode 941. 有效的山脉数组
给定一个整数数组 A,如果它是有效的山脉数组就返回 true,否则返回 false。
韩旭051
2022/05/09
2990
LeetCode 941. 有效的山脉数组
Leetcode 题解——796/1078
其实就是判断字符串中是否存在连续的first和second字串,我们将text按照空格split后,依次遍历,如果当前词为first,就看看他的下一个词是不是second,如果是则将再下一个词放入list中,最后将list转为数组返回即可。
出其东门
2019/07/30
3790
Leetcode 题解——796/1078
【算法】leetcode算法笔记:二叉树,动态规划和回溯法
写的比较匆忙,测试用例是能全部跑通的,不过考虑内存和效率的话,还有许多需要改进的地方,所以请多指教
啦啦啦321
2019/11/20
7080
【算法】leetcode算法笔记:二叉树,动态规划和回溯法
LeetCode - 山脉数组的封顶索引
LeetCode第852题,难度是简单。最近这几题,我一看题解里面没有比我更优秀的,果断把自己的题解写了上去,美滋滋。
晓痴
2019/07/24
8940
LeetCode - 山脉数组的封顶索引
006. Z 字形变换 | Leetcode题解
比如输入字符串为 "LEETCODEISHIRING" 行数为 3 时,排列如下:
苏南
2020/12/16
5210
006. Z 字形变换 | Leetcode题解
LeetCode题组:第9题-回文数
1.题目:回文数 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
K同学啊
2020/04/08
3690
008. 字符串转换整数 (atoi) | Leetcode题解
首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下:
苏南
2020/12/16
6050
008. 字符串转换整数 (atoi) | Leetcode题解
003. 无重复字符的最长子串 | Leetcode题解
题目要求连续, 我们考虑使用滑动窗口。而这道题就是窗口大小不固定的滑动窗口题目,然后让我们求满足条件的窗口大小的最大值,这是一种非常常见的滑动窗口题目。
苏南
2020/12/16
5820
003. 无重复字符的最长子串 | Leetcode题解
001. 两数之和 | Leetcode题解
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
苏南
2020/12/16
7680
001. 两数之和 | Leetcode题解
LeetCode 1013. 将数组分成和相等的三个部分
给定一个整数数组 A,只有我们可以将其划分为三个和相等的非空部分时才返回 true,否则返回 false。
Michael阿明
2020/07/13
9200
LeetCode 1013. 将数组分成和相等的三个部分
LeetCode 2018. 判断单词是否能放入填字游戏内(模拟)
给你一个 m x n 的矩阵 board ,它代表一个填字游戏 当前 的状态。 填字游戏格子中包含小写英文字母(已填入的单词),表示 空格 的 ' ' 和表示 障碍 格子的 '#' 。
Michael阿明
2022/01/07
8580
LeetCode 2018. 判断单词是否能放入填字游戏内(模拟)
有效的山脉数组
给定一个整数数组 A,如果它是有效的山脉数组就返回 true,否则返回 false。让我们回顾一下,如果 A 满足下述条件,那么它是一个山脉数组:
木子星兮
2020/07/16
6820
LeetCode 852. 山脉数组的峰顶索引(二分查找)
给定一个确定为山脉的数组,返回任何满足 A[0] < A[1] < … A[i-1] < A[i] > A[i+1] > … > A[A.length - 1] 的 i 的值。
Michael阿明
2021/02/20
3950
LeetCode 852. 山脉数组的峰顶索引(二分查找)
LeetCode 941. 有效的山脉数组
给定一个整数数组 A,如果它是有效的山脉数组就返回 true,否则返回 false。
Michael阿明
2020/07/13
3230
LeetCode 941. 有效的山脉数组
leetcode周赛(195)
给你一个整数数组 arr 和一个整数 k ,其中数组长度是偶数,值为 n 。现在需要把数组恰好分成 n / 2 对,以使每对数字的和都能够被 k 整除。
你的益达
2020/08/05
5180
剑指offer--二叉搜索树的后序遍历序列
题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同
AI那点小事
2020/04/18
3060
[LeetCode题解]开篇!求和问题总结:2Sum/3Sum/4Sum/KSum
之前在美国做访学,日子比较清闲。当时对数据结构和算法几乎一窍不通,便开始在Leetcode上刷算法题,也算是为找工作做准备,经过了一年多,也积累了很多Leetcode题解文章,并在CSDN上开了题解专栏。
Rude3Knife的公众号
2019/08/06
1.8K0
每天一道leetcode66-加1
2018.11.17号打卡 明天的题目leetcode16: https://leetcode-cn.com/problems/3sum-closest/description/
乔戈里
2019/09/17
5600
相关推荐
LeetCode 941. 有效的山脉数组
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验