• 参考题解


    1796.字符串中第二大的数字

    解题思路

      遍历这个字符串,维护两个两个值——第一大的数字和第二大的数字。

      注意不存在第二大数字的时候要返回-1。

    参考代码

    class Solution {
        public int secondHighest(String s) {
            int maxx1 = -1 , maxx2 = -1;
            for(int i=0;i<s.length();i++){
                char x = s.charAt(i); //获取当前下标的字符
                if(x<'0'||x>'9') continue;   //当前是字母
                int now = x - '0'; //计算出当前字符代表的数字
                if(now > maxx1){ //如果比第一大数字大,那么第一大就成第二大,当前数字为第一大
                    maxx2 = maxx1;
                    maxx1 = now;
                }
                if(now > maxx2 && now < maxx1){//比第一大要小,但比第二大数字大
                    maxx2 = now;
                }
            }
            return maxx2;
        }
    }

    1716.计算力扣银行的钱

    解题思路1

      我们对这n天一天天地模拟,计算出每一天应该加多少钱,然后统计进答案。

    参考代码1

    class Solution {
        public int totalMoney(int n) {
            int week = 1,num = 0; // week为当前星期一加的钱,num为当天应加的钱
            int res = 0; 
            for(int i=1;i<=n;i++){
                if(i%7 == 1){ //当今天是星期一
                    num = week;
                    week++; //下周一要比这周一多1块
                }
                res += num; //统计答案
                num++; //明天应该多加1块钱
            }
            return res;
        }
    }

    解题思路2

      我们观察每一周加的总钱数:28 35 42

      可以知道这是一个等差数列,我们可以使用等差数列的求和公式:

      

      计算出前x周加的总钱数为28x +x(x-1)7/2

      然后零散的几天,第一天加的钱数是n/7+1,最后一天为n/7+n%7,使用等差数列求和公式,一共是(n/7+1+n/7+n%7)(n%7)/2

    参考代码2

    class Solution {
        public int totalMoney(int n) {
            int a = n / 7, b = n % 7; //a为n有多少周,b为不足一周的剩余的天数
            int ans = 28 * a + a * (a - 1) * 7 / 2 + (a + 1 + a + b) * b / 2;
            return ans;
        }
    }

    121.买卖股票的最佳时机

      官方题解:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock/solution/121-mai-mai-gu-piao-de-zui-jia-shi-ji-by-leetcode-/

    一点一点积累,一点一点蜕变!
  • 相关阅读:
    索引!
    事件event
    Erlang运行时源码分析之——线程进度机制
    Erlang 运行时中使用的读写锁解析
    经典互斥算法解析
    网格布局之grid
    注册简单表单
    前端入门之自我介绍
    Python之一后置固件yield和终结函数addfinalizer
    python中yield 与 return 区别
  • 原文地址:https://www.cnblogs.com/qq2210446939/p/15183949.html
Copyright © 2020-2023  润新知