2025-08-24 周记

发布于 2025-08-24 12:00 889 字 5 min read 手写 每个字都是我自己敲的。

2025-12-24 学习日记2025-12-17 学习日记2025-12-14 学习日记2025-12-09 学习日记2025-12-08 学习日记2025-12-07 学习日记2025-12-06 学习日记2025-12-05 学习日记2025-12-04 学习日记2025-12-03 学习日记2025-12-02 学习日记2025-12-01 学习日记2025-11-30 学习日记2025-11-29 学习日记2025-11-28 学习日记2025-11-27 学习日记2025-11-26 学习日记2025-11-25 学习日记2025-11-24 学习日记2025-11-23 学习日记2025-11-22 学习日记2025-11-21 学习日记2025-11-20 学习日记2025-11-19 学习日记2025-11-18 学习日记2025-11-17 学习日记2025-11-16 学习日记2025-11-15 学习日记2025-11-14 学习日记2025-11-13 学习日记2025-11-12 学习日记2025-11-11 学习日记2025-11-10 学习日记2025-11-09 学习日记2025-11-08 学习日记2025-11-07 学习日记2025-11-06 学习日记2025-11-05 学习日记2025-11-04 学习日记2025-11-03 学习日记2025-11-02 学习日记2025-11-01 学习日记2025-10-31 学习日记2025-10-30 学习日记2025-10-29 学习日记2025-10-28 学习日记2025-10-27 学习日记2025-10-26 学习日记2025-10-25 学习日记2025-10-24 学习日记2025-10-23 学习日记2025-10-22 学习日记2025-10-21 学习日记2025-10-20 学习日记2025-10-19 学习日记2025-10-18 学习日记2025-10-17 学习日记2025-10-16 学习日记2025-10-15 学习日记2025-10-14 学习日记2025-10-13 学习日记2025-10-11 学习日记2025-10-10 学习日记2025-10-09 学习日记2025-10-03 学习日记2025-10-02 学习日记2025-10-01 学习日记2025-09-30 学习日记2025-09-29 学习日记2025-09-28 学习日记2025-09-27 学习日记2025-09-26 学习日记2025-09-25 学习日记2025-09-24 学习日记2025-09-23 学习日记2025-09-22 学习日记2025-09-21 学习日记2025-09-20 学习日记2025-09-18 学习日记2025-09-17 学习日记2025-09-16 学习日记2025-09-15 学习日记2025-09-14 学习日记2025-09-13 学习日记2025-09-12 学习日记2025-09-11 学习日记2025-09-10 学习日记2025-09-09 学习日记2025-09-08 学习日记2025-09-04 学习日记2025-09-03 学习日记2025-09-02 学习日记2025-09-01 学习日记2025-08-31 学习日记2025-08-29 学习日记2025-08-28 学习日记2025-08-27 学习日记2025-08-26 学习日记2025-08-25 学习日记2025-08-24 周记2025-08-23 学习日记2025-08-22 学习日记2025-08-21 学习日记2025-08-20 学习日记2025-08-19 学习日记2025-08-18 学习日记2025-08-17 周记2025-08-16 学习日记2025-08-15 学习日记2025-08-14 学习日记2025-08-13 学习日记2025-08-12 学习日记2025-08-11 学习日记
今日学习记录 1. 跳跃游戏 9leetcode.3660 关键词: 问题分析: i<j,大换小 j<i,小换大 要尽量换大,可以大换小之后换更大 核心思路 有两种换法,首先从后面开始小换大,都是符合题目的,其次从前面开始大换小再换大,感觉操作好麻烦,要换两次,那么我能不能先从后面开始,把小的都换成大的呢,换成大的之后,前面大的再跟小的一换不就直接成最大的了吗....

今日学习记录

1. 跳跃游戏 9leetcode.3660

关键词:动态规划 问题分析:

  1. i<j,大换小
  2. j<i,小换大
  3. 要尽量换大,可以大换小之后换更大

核心思路

  1. 有两种换法,首先从后面开始小换大,都是符合题目的,其次从前面开始大换小再换大,感觉操作好麻烦,要换两次,那么我能不能先从后面开始,把小的都换成大的呢,换成大的之后,前面大的再跟小的一换不就直接成最大的了吗.
  2. 可能最麻烦的就是大换小再换大这部分麻烦,但我们想想以下例子,数据一定是按照我给出例子分成三部分,一部分是让我们烦恼的要进行二次交换的,第二部分是最大值,第三部分是最小值,除此分布之外就只需要交换一次,非常容易
    1. {2,3,1,1,1,1,1,1},后面的 1 可以全换成 3,只要是小于 3 的都可以换成最大值,而且只要有一个数满足小于我们要换的 2,那么就可以把 2 换成 1 再换 3,这里任意数,那么肯定取最小的数喽
    2. {2,1,1,1,1,1,3},只要这个最大值不在后面的最小值到前面的目标值中间,那么就无法换,只能是 2
  3. 那么答案显然易见了,首先先预处理每个位子前的最大值(pre_max),从后面开始遍历,求后缀的最小值(suf_min),你想想既然按照我给出的分布,那么当要换的时候 2 是不是就等于 3,也就是 ans{i} == ans{i+1},所以状态方程为
    1. ans(i) = pre_max(i)当 pre_max<=suf_min;ans(i) = ans(i+1),当 pre_max>suf_min;

**最终代码:

vector<int> maxValue(vector<int>& nums) {

        int n = nums.size();

        vector<int> pre_max(n);

        pre_max[0] = nums[0];

        for(int i = 1;i<n;i++){

            pre_max[i] = max(pre_max[i-1],nums[i]);

        }

        vector<int> ans(n);

        int suf_min = INT_MAX;

        for(int i = n-1;i>=0;i--){

            ans[i] = pre_max[i]<=suf_min?pre_max[i]:ans[i+1];

            suf_min = min(suf_min,nums[i]);

        }

        return ans;

    }

学到的点:

  1. 感觉就是个思维题

今周收获

进步还是挺明显的,不过系统性的学习的效率比我想的慢多了,因为比我想象中要难要繁琐,手写几遍不同版本的数据结构真的好累,加油把,还有练习时间太长了,题目太多了,我不应该集中时间做,应该以后有时间分散做,这样有利用我复习,回忆

竞赛当队长了!

说实话我挺想当队长的,不是因为得奖获益最大,而是我感觉我也想培养团队合作能力,我之前总想着提升个人能力,但个人能力固然重要,可后续的比赛都是团队比赛,个人的力量终究不行,所以我还是要刻意历练一下自己,虽然但是,我还是希望有人能带我打比赛,这样不知道轻松多少,下半年要做的事太多了,四级,算法竞赛,人工智能算法大赛,离散数学,统计概率,我还是挺忙的,我们队三个人都是小白,T-T

又玩了好多新的 oi 网站,真不错

修复了 git 仓库追踪 cph 文件的问题,真的是让人头大,终于弄好了

执笔 手写

随机文章

加载中...