day03(11.1)——leetcode面试经典150

哈哈哈哈,漏了一天,安阳这个城市还是很恐怖的,昨天出去玩忘记带口罩了,回来的是时候骑车回来,结果应该是吸多了雾霾,头巨晕,就写不动了,所以今天写两题。

135. 分发糖果

135. 分发糖果

题目:

我打开这个题目的时候看到是困难,想着挑战一下,结果对于我这个小白菜来说真是挺困难,但好在最后还是写出来了!!!

但我的纯纯就是笨办法

题解:

我先讲解一下我的思路:我想的是先把他们起始糖果数设成0,但是起始总糖果数是加上了起始糖果数至少为1,所以起始糖果数是ratings.length,然后我再进行判断每一个糖果的相邻结点。

如果左边节点存在,那么当左边节点的评分比当前节点更低,并且左边节点的糖果数大于等于当前节点,当前节点的糖果数必须比左边节点糖果数大,所以flagi设置成flagi-1+1;

如果右边节点也存在,那么当右边节点的评分比当前节点更低,并且右边结点的糖果数大于等于当前结点,当前节点的糖果数必须比右边结点糖果数大,所以将flagi设置成flagi+1+1;

但是从左边遍历一遍是可能会有问题的,比如下面这个例子:

1 2 87 87 87 2 1,会有问题,所以需要从右向左再遍历一遍。

java 复制代码
class Solution {
    public int candy(int[] ratings) {
        int[] flag =  new int[ratings.length];
        int candy = ratings.length;
        for(int i=0;i<ratings.length;i++) {
            if(i-1 >= 0 && ratings[i] > ratings[i-1]  && flag[i] <= flag [i-1] ) {
                flag[i] = flag[i-1]+1;
            }
            else if(i+1 <= ratings.length-1 && ratings[i] > ratings[i+1] && flag[i] <= flag [i+1] ) {
                flag[i] = flag[i+1]+1;
            }
        }
        for(int i=ratings.length-1;i>=0;i--) {
            if(i-1 >= 0 && ratings[i] > ratings[i-1]  && flag[i] <= flag [i-1] ) {
                flag[i] = flag[i-1]+1;
            }
            else if(i+1 <= ratings.length-1 && ratings[i] > ratings[i+1] && flag[i] <= flag [i+1] ) {
                flag[i] = flag[i+1]+1;
            }
            candy += flag[i];
        }
        return candy;
    }
}

13. 罗马数字转整数

13. 罗马数字转整数

题目:

题解:

这道题我就是采用if else的判断方法,要记得字符串访问字符的方式是通过s.chatAt(i),不是通过i的方式,c++有点写习惯了哈哈哈

java 复制代码
class Solution {
    public int romanToInt(String s) {
        int sum=0;
        for(int i=0;i<s.length();i++) {
            if(i+1<s.length()) {
                if(s.charAt(i)=='I'&&s.charAt(i+1)=='V') {
                    sum+=4;
                    i+=1;
                    continue;
                }
                else if(s.charAt(i)=='I'&&s.charAt(i+1)=='X') {
                    sum+=9;
                    i+=1;
                    continue;
                }
                else if(s.charAt(i)=='X'&&s.charAt(i+1)=='L') {
                    sum+=40;
                    i+=1;
                    continue;
                }
                else if(s.charAt(i)=='X'&&s.charAt(i+1)=='C') {
                    sum+=90;
                    i+=1;
                    continue;
                }
                else if(s.charAt(i)=='C'&&s.charAt(i+1)=='D') {
                    sum+=400;
                    i+=1;
                    continue;
                }
                else if(s.charAt(i)=='C'&&s.charAt(i+1)=='M') {
                    sum+=900;
                    i+=1;
                    continue;
                }
            }
            if(s.charAt(i) == 'I') {
                sum+=1;
            }
            else if(s.charAt(i) == 'V') {
                sum+=5;
            }
            else if(s.charAt(i) == 'X') {
                sum+=10;
            }
            else if(s.charAt(i) == 'L') {
                sum+=50;
            }
            else if(s.charAt(i) == 'C') {
                sum+=100;
            }
            else if(s.charAt(i) == 'D') {
                sum+=500;                
            }
            else if(s.charAt(i) == 'M') {
                sum+=1000;
            }
        }
        return sum;
    }
}
相关推荐
彧azz1 小时前
算法设计与分析:贪心与动态规划
数据结构·学习·算法·贪心算法·动态规划
泡海椒1 小时前
PDF 表格样式优化:jquick-pdf 边框、圆角、背景色
java·开发语言·pdf
Beyond_System|系统之外2 小时前
【学编程】Python基础编程题100道(21-60)
开发语言·python·算法
景熙55232 小时前
15.Java 8 Stream 流入门到实战
java·开发语言·数据结构
wno7043 小时前
Spring Security权限控制
java·python·spring
杨运交3 小时前
[071][验证码模块]基于Spring拦截器的验证码认证设计思想
java·后端·spring
Geek-Chow4 小时前
CountDownLatch in Java
java
漂流瓶jz4 小时前
UVA-1442 洞穴 题解答案代码 算法竞赛入门经典第二版
c++·算法·题解·aoapc·算法竞赛入门经典·uva
圣保罗的大教堂4 小时前
leetcode 835. 图像重叠 中等
leetcode