3.16-随记:状态一般

不知道是周末的原因还是别的原因,感觉学习的那股动力有点提不起来,感觉很累,但又说不上哪里累,可能是心累吧。今天其实还真是给自己放了个假,看了会书,找了项目的代码,写了力扣的,每日一题,报名了马拉松。一会写完博客可能还会去跑一会步,其实刚发现自己梳理完今天干的事情之后好像也干了不少事,但是不知道为什么现在觉得什么也没干,可能是学的内容都没有进脑子吧,只是停留在表面,找到一片很好的github文章专门去讲面试的,分析面试官的心理,回答的技术问题要如何去答,读了两天感觉很有用,需要的话评论区留言到时候我分享出来,我觉得好资料是一部分,努力把基础知识学好又是一部分,这两方面缺一不可,好资料可能会让你事半功倍,但是通过一定的努力,一定会弥补没有好资料所带来的知识。其实这篇文稿更像是一个下半个月的小计划,其实主要想做的事情就那么多:读书、敲代码、学习八股、做项目,完善简历。感觉又被安排满了,但是我会根据情况适当舍弃一些东西,自己感到学累了就休息一下,如果休息完还是很累,那就会结束一天的任务,把一些计划往后延,我还真是践行不了“今日事今日毕”的优良习惯,我不敢说自己目前有什么习惯,毕竟做一些事情我也没有坚持多久,所以内心就扭着一股劲,想着多坚持一下我才有信心说自己养成了什么习惯,习惯可能也是自律的一种体现,而我每天坚持来实验室已经让我觉得想做的事情越来越多,也不段在越来越好,我还依稀记得我刚开始写leetcode代码的时候,那时候真的是束手无策,根本不知道怎么写,但是现在也可以把今天的每日一题稍微想一下思路了,先来看一下今天的每日一题:2272:最大波动的子字符串。我想说的其实不是这道题,而是我从这道题里学到的其他知识,坦白说,我这道题是直接复制灵神的代码,我就不列出来了,感兴趣的可以去找灵神的代码去看,下面来说我学到的思路,当我面临一道难题的时候,其实最先反应的是之前自己敲过什么类似的代码,但是这个过程其实很难,所以就要把这个难题做一个分解,下面是我做的分解:

1、设出现次数最多的字母为 a,出现次数最少的字母为 b。把 a 视作 1,b 视作 −1,其余字母视作 0,最大波动值就等同于 53. 最大子数组和。其实学习灵神的思路也很神奇,当我看到这个的时候其实我觉得这个53题思路很简单,但是我还是没能成功,说明我自己的思路还是存在问题,不知道对这种题目该怎么进行处理,当时看到的时候只想到了滑动窗口,但是实际写代码的时候发现实现不了,于是我继续学习思路:

2、发现有一个思路我其实没有学习到:前缀和。由于子数组的元素和等于两个前缀和的差,所以求出 nums 的前缀和,问题就变成 121. 买卖股票的最佳时机 了。本题子数组不能为空,相当于一定要交易一次。这次就把问题简化到了121的买卖股票的问题,这个问题是最热门的题目里的其中之一了,其实这个就是一个思路。下面就是从121->53->2272的学习代码:

121:给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0。

class Solution { //灵神的
    public int maxProfit(int[] prices) {
        int ans=0;
        int minPrice=prices[0];
        for(int p:prices){
            ans=Math.max(ans,p-minPrice);
            minPrice=Math.min(minPrice,p);
        }
        return ans;
    }
}

53:给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组 是数组中的一个连续部分。

class Solution {
    public int maxSubArray(int[] nums) {
        /*
        int ans=Integer.MIN_VALUE;
        int minPreSum=0;
        int preSum=0;
        for(int x:nums){
            preSum+=x;
            ans=Math.max(ans,preSum-minPreSum);
            minPreSum=Math.min(minPreSum,preSum);
        }
        return ans;
        */
        int[] f=new int[nums.length];
        f[0]=nums[0];
        int ans=f[0];
        for(int i=1;i

最后一个就不贴了嘿嘿,都是学到的,明天这个博客提醒我再重新敲一遍上面这两个代码。手不能停!

好了,美好的时光总是短暂的,我也准备出发去跑步了,小小的运动一下,前几天还和老师分享了一波我的感情经历,老师也分享了她对情感的看法,其中有一条还是建议找对象尽量要找身体健康的,话不多说,运动起来!对了,再就是一段生活中一定不能只做一件事,比如只学习,偶尔看看书,跑跑步,和朋友聊聊天,玩玩游戏分散一下精力,会效率翻倍的,生活中只被一件事占据的话会很累,其他任何会让你舒服的方式,只要对自己有用,只要去寻找一定会有的。各位晚安,好梦☺️

你可能感兴趣的:(笔记)