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

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

135. 分发糖果

135. 分发糖果

题目:

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

但我的纯纯就是笨办法

题解:

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

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

如果右边节点也存在,那么当右边节点的评分比当前节点更低,并且右边结点的糖果数大于等于当前结点,当前节点的糖果数必须比右边结点糖果数大,所以将flag[i]设置成flag[i+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;
    }
}
相关推荐
yugi9878386 小时前
C语言多进程创建和回收
linux·c语言·算法
Mr YiRan7 小时前
SYN关键字辨析,各种锁优缺点分析和面试题讲解
java·开发语言
极客数模7 小时前
【浅析赛题,一等奖水平】思路模型数据相关资料!2025 年“大湾区杯”粤港澳金融数学建模竞赛B 题 稳定币的综合评价与发展分析~
大数据·算法·数学建模·金融·数据挖掘·图论·1024程序员节
深入理解GEE云计算7 小时前
遥感生态指数(RSEI):理论发展、方法论争与实践进展
javascript·人工智能·算法·机器学习
Zhang青山7 小时前
028.爬虫专用浏览器-抓取#shadowRoot(closed)下
java·后端
bug攻城狮7 小时前
SpringBoot响应封装:Graceful Response vs 自定义通用响应类选型指南
java·spring boot·后端·http
m0_736927047 小时前
Spring Boot项目中如何实现接口幂等
java·开发语言·spring boot·后端·spring·面试·职场和发展
渡我白衣7 小时前
C++:链接的两难 —— ODR中的强与弱符号机制
开发语言·c++·人工智能·深度学习·网络协议·算法·机器学习
小龙报8 小时前
《算法通关指南:数据结构和算法篇 --- 顺序表相关算法题》--- 1.移动零,2.颜色分类
c语言·开发语言·数据结构·c++·算法·学习方法·visual studio