题解 | #单调栈#

单调栈

https://www.nowcoder.com/practice/ae25fb47d34144a08a0f8ff67e8e7fb5

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param nums int一维数组
     * @return int二维数组
     */
    public int[][] foundMonotoneStack (int[] nums) {
        int[][] res = new int[nums.length][2];
        res[0][0] = -1;
        res[nums.length - 1][1] = -1;

        for (int i = 1; i < nums.length; i++) {
            int j = i - 1;
            while (j != -1 && nums[j] >= nums[i]) {
                j = res[j][0];
            }
            res[i][0] = j;
        }

        for (int i = nums.length - 2; i >= 0; i--) {
            int j = i + 1;
            while (j != -1 && nums[j] >= nums[i]) {
                j = res[j][1];
            }
            res[i][1] = j;
        }

        return res;
    }
}

全部评论

相关推荐

rndguy:个人思路,抛砖引玉。 要我的话我先问清楚需求:要什么精度,什么速度,什么环境。 如果精度要求很低,平台也有点柔性的话,只需要输出pwm,然后开个中断记录各多少个脉冲,如果脉冲时间不对齐了就反馈控制电流加减就行。要求同步要求稍微高点的话可以在脉冲间做个线性插值,同步精度会高些。 但总体来说,如果直流有刷只有脉冲没有好的编码器的话很难做精准定位什么的(除非用一些电机磁路结构相关的奇技淫巧如高频注入什么的),所以要求更高就需要大量参数辨识和校准,那就慢多了。
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务