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;
    }
}
相关推荐
love_muming8 分钟前
二叉树操作全解析:从递归到层序遍历
java·数据结构·算法·二叉树
小的~~9 分钟前
ThreadLocal 、InheritableThreadLocal 与 TransmittableThreadLocal 的进阶指南
java·开发语言
北极糊的狐20 分钟前
钉钉小程序报错data.formatTime is not a function是因为 axml 模板中不能直接调用 Page 内自定义方法!
java·小程序·钉钉
.道阻且长.9 小时前
2.LeetCode算法习题讲解--双指针--复写零
算法·leetcode·职场和发展
·薯条大王9 小时前
经济实惠玩云服务器|一台云服务器多人共用,子账号配置教程
java·linux·运维·服务器·汇编·c++·python
To_OC11 小时前
LC 438 找到所有字母异位词:暴力超时后,我靠滑动窗口一招搞定
javascript·算法·leetcode
ZJH__GO12 小时前
网络编程v4pro--实现聊天室文件传输功能
java·服务器·网络·计算机网络
程序员黑豆13 小时前
Windows 系统 Java 环境变量配置全攻略:解决“不是内部或外部命令”
java·前端·ai编程
命运之光13 小时前
【C语言完整代码】就诊信息管理系统
java·c语言·开发语言