代码随想录第五十九天

这篇具有很好参考价值的文章主要介绍了代码随想录第五十九天。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Leetcode 503. 下一个更大元素 II

题目链接: 下一个更大元素 II
自己的思路:没想到哈哈哈哈!!

正确思路:这个题在单调栈的情况下转了一个弯,就是需要取一个模操作,用来模拟一个数组的循环过程!!!!

代码:文章来源地址https://www.toymoban.com/news/detail-677132.html

class Solution {
    public int[] nextGreaterElements(int[] nums) {
        int length = nums.length;
        LinkedList<Integer> st = new LinkedList<>();
        st.addFirst(0);
        int[] res = new int[length];
        Arrays.fill(res,-1);
        for (int i =1;i<2*length;i++){
            //单调栈逻辑
            if(nums[i%length]<=nums[st.getFirst()%length]) st.addFirst(i);
            else{
                while(!st.isEmpty()&&nums[i%length]>nums[st.getFirst()%length]){
                    res[st.getFirst()%length] = nums[i%length];
                    st.removeFirst();
                }
                st.addFirst(i);
            }
        }
        return res;
    }
}

Leetcode 42. 接雨水

题目链接: 接雨水
自己的思路:想不到!!!!

正确思路:利用单调栈来存储之前遍历的值,这个题应该是找左边第一个比当前元素大的,右边第一个比当前元素大的,两者进行比较,找最小值,求得的最小值减中间元素的高度就是雨水的高,然后我们利用单调栈存储的下标来找雨水的宽就可以,求得宽以后,两个相乘就可以得到雨水面积!!!!!

代码:

class Solution {
    public int trap(int[] height) {
        int length = height.length;
        int res = 0;
        LinkedList<Integer> st = new LinkedList<>();
        st.addFirst(0);
        for (int i =0;i<length;i++){
            if (height[i]<=height[st.getFirst()]) st.addFirst(i);
            else{
                while(!st.isEmpty()&&height[i]>height[st.getFirst()]){
                    int temp = st.removeFirst();
                    if (!st.isEmpty()) {
                        //雨水高度
                        int h = Math.min(height[i],height[st.getFirst()])-height[temp];
                        //中间部分的宽度
                        int w = i-st.getFirst()-1;
                        //可能有0的面积,不需要加
                        if (h*w>0) res += h*w;
                    }
                }
                st.addFirst(i);
            }
        }
        return res;
    }
}

到了这里,关于代码随想录第五十九天的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 代码随想录第五十天

    题目链接 : 买卖股票的最佳时机 III 自己的思路 :想不到!!!!高维dp数组!! 正确思路 :这里和之前的都不太一样,因为限制了买卖股票的次数,所以我们就加大dp数组的维度;动规五部曲:1、dp数组的含义:dp[i][0]表示一开始不操作的情况、dp[i][1]表示第一次持有(不一定

    2024年02月11日
    浏览(11)
  • 算法随想录第三十九天打卡|62.不同路径 , 63. 不同路径 II

    本题大家掌握动态规划的方法就可以。 数论方法 有点非主流,很难想到。  代码随想录 视频讲解: 动态规划中如何初始化很重要!| LeetCode:62.不同路径_哔哩哔哩_bilibili 总结 把m和n弄反了。 https://programmercarl.com/0063.%E4%B8%8D%E5%90%8C%E8%B7%AF%E5%BE%84II.htmlhttps://programmercarl.com/00

    2024年01月20日
    浏览(10)
  • 第10天-代码随想录刷题训练-第五章 栈和队列- ● 理论基础 ● 232.用栈实现队列 ● 225. 用队列实现栈

    第10天-代码随想录刷题训练-第五章 栈和队列- ● 理论基础 ● 232.用栈实现队列 ● 225. 用队列实现栈

    栈和队列对应的三个不同的STL版本,底层实现方式不一样, 为我们所知道的是 SGI STL 栈 栈提供 pop和push等接口, 不提供走访功能 也不提供迭代器, 不像map和set可以使用迭代器遍历,往往不被归类为容器,而是容器适配器 栈的内部实现结构可以使用 verctor、list 和 deque(默认)

    2024年02月04日
    浏览(11)
  • 代码随想录——贪心算法

    代码随想录——贪心算法

    代码随想录——回溯 代码随想录——贪心算法 分发饼干 链接:https://leetcode.cn/problems/assign-cookies/description/ 这道题我自己一开始的想法是从大到小遍历孩子数组,对于每个元素从大到小遍历饼干数组,满足则total+1,并且该元素置0防止被再次使用。这样虽然是可以的,但时间复

    2024年02月22日
    浏览(39)
  • 代码随想录 图论

    代码随想录 图论

    目录 797.所有可能得路径  200.岛屿数量 695.岛屿的最大面积 1020.飞地的数量  130.被围绕的区域  417.太平洋大西洋水流问题  827.最大人工岛 127.单词接龙  841.钥匙和房间 463.岛屿的周长  797. 所有可能的路径 中等 给你一个有  n  个节点的  有向无环图(DAG) ,请你找出所有从

    2024年04月10日
    浏览(14)
  • [代码随想录]二叉树

    [代码随想录]二叉树

    二叉树可以链式存储,也可以顺序存储。 那么链式存储方式就用指针, 顺序存储的方式就是用数组。 顾名思义就是顺序存储的元素在内存是连续分布的,而链式存储则是通过指针把分布在各个地址的节点串联一起。 链式存储如图: 链式存储是大家很熟悉的一种方式,那么

    2024年02月03日
    浏览(16)
  • 代码随想录刷题

    代码随想录刷题

    704. 二分查找 27. 移除元素

    2024年01月25日
    浏览(13)
  • 代码随想录 - 链表

    代码随想录 - 链表

    链表是一种通过指针串联的线性结构,每一个节点由两部分组成,一个是数据域一个是指针域(存放指向下一个节点的指针),最后一个节点的指针域指向null(空指针的意思)。 链表的类型  1、单链表  单链表中的指针域只能指向节点的下一个节点。  2、双链表 双链表:

    2024年02月13日
    浏览(13)
  • 代码随想录——回溯

    代码随想录——回溯

    代码随想录——回溯 回溯的本质就是递归遍历,但在完成某一条路之后会撤回到上一层,然后重新选择另一条路继续遍历,是一个比较低效的算法,能进行提升的方式就是剪枝。 组合 链接:https://leetcode.cn/problems/combinations/description/ vectorvector int 作为最终返回的结果,vector

    2024年01月19日
    浏览(255)
  • 代码随想录day59

    647. 回文子串 给你一个字符串  s  ,请你统计并返回这个字符串中  回文子串  的数目。 回文字符串  是正着读和倒过来读一样的字符串。 子字符串  是字符串中的由连续字符组成的一个序列。 具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不

    2024年02月07日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包