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;
    }
}
相关推荐
JH30734 小时前
SpringBoot 优雅处理金额格式化:拦截器+自定义注解方案
java·spring boot·spring
颜酱5 小时前
图结构完全解析:从基础概念到遍历实现
javascript·后端·算法
m0_736919105 小时前
C++代码风格检查工具
开发语言·c++·算法
yugi9878385 小时前
基于MATLAB强化学习的单智能体与多智能体路径规划算法
算法·matlab
Coder_Boy_6 小时前
技术让开发更轻松的底层矛盾
java·大数据·数据库·人工智能·深度学习
DuHz6 小时前
超宽带脉冲无线电(Ultra Wideband Impulse Radio, UWB)简介
论文阅读·算法·汽车·信息与通信·信号处理
invicinble6 小时前
对tomcat的提供的功能与底层拓扑结构与实现机制的理解
java·tomcat
Polaris北极星少女6 小时前
TRSV优化2
算法
较真的菜鸟6 小时前
使用ASM和agent监控属性变化
java
黎雁·泠崖6 小时前
【魔法森林冒险】5/14 Allen类(三):任务进度与状态管理
java·开发语言