Skip to content

2026-1-22 Thu #4

@DengLiang798

Description

@DengLiang798

🎯 今日学习目标

  • 1. 刷 LeetCode
  • 2. 语法学习
  • 3. 算法学习
  • 4. 408 基础巩固

🧩 1. 刷 LeetCode

return (high + 1) / 2 - low / 2;
  • 心得复盘: 看到题目,最简单的想法就是直接A掉,确实也直接A了。但是又没看清楚题,返回了个数组。
    提交看了时间复杂度才想到,这是可以通过数学计算优化的。想了几分钟才想明白这个数学逻辑,时间复杂度O(1),空间复杂度O(1)。但看了灵神才知道有更优的解法:前缀和思想,0 到 high(包含high)的奇数个数,减去0 到 low-1 的奇数个数。
  int s = reduce(salary.begin(), salary.end());
  auto [m, M] = ranges::minmax(salary);
  return (double) (s - m - M) / (salary.size() - 2);
  • 心得复盘: 利用STL中的sort后很简单的题,但有个坑是数据类型。一开始用的int sum进行加和,最后return double(sum/(salary.size()-2)) 时看起来时浮点数,但是是整型转double,小数全为0。
    我的想法是排序才能找到最大最小值,实际上找到最大最小值不用排序。
  • 题目链接: 860柠檬水找零
  • 难点记录: 分支判断。
  • 可学习的代码:
for (int b : bills) {
    if (b == 5) { // 无需找零
        five++;
    } else if (b == 10) { // 返还 5
        five--;
        ten++;
  • 心得复盘: 自己在纸上想了会判断对了。嵌套的判断写法还可以再优化,另外如果多想一下可以减少不必要的内容(比如对二十美元的记录)。
std::sort(nums.begin(), nums.end(), std::greater<int>());
  • 心得复盘: 思维大于代码的题,但是开敲前应该再仔细审题。开写前还搜了面积公式,但是没必要。从大到小排序语法需要学会。

🐍 2. 语法学习 菜鸟教程

  • 知识点: C++ 数字
  • 代码示例:
int s = reduce(salary.begin(), salary.end());

reduce作用:与 std::accumulate 类似,计算容器内所有元素的总和。
与accumulate的区别:reduce 默认不指定初始值(从0开始),且运算可能不保证顺序(对于加法这种可结合可交换的操作,这能允许编译器或运行时进行并行优化,效率更高)。

auto [m, M] = ranges::minmax(salary);

ranges::minmax(salary):一次调用,返回一个包含最小值和最大值的 pair 或 tuple。
auto [m, M]:结构化绑定,自动将返回的 pair 解包到变量 m(最小值)和 M(最大值)中。这比传统的 std::tie 或手动访问 .first、.second 要优雅得多。

std::sort(nums.begin(), nums.end());
std::sort(nums.begin(), nums.end(), std::greater<int>());

从小到大排序和从大到小排序

💡 3. 算法学习 Hello,算法——看完第三章了

  • 首先需要指出,数字是以“补码”的形式存储在计算机中的。
    原码:我们将数字的二进制表示的最高位视为符号位,其中0表示正数,1表示负数,其余位表示数字的值。
    反码:正数的反码与其原码相同,负数的反码是对其原码除符号位外的所有位取反。
    补码:正数的补码与其原码相同,负数的补码是在其反码的基础上加1。
Image Image ASCII码 大写A从65开始,小写a从97开始 ASCII 字符集、GBK 字符集、Unicode 字符集、UTF-8 编码。在文件存储或网络传输中,我们通常会将字符串编码为 UTF-8 格式,以达到最优的兼容性和空间效率。 Image

📖 4. 408 基础巩固

  • 科目: 数据结构 (操作系统 / 计网 / 计组)
  • 重点笔记:
  • 待查漏补缺:

📌 今日小结

早上到的挺早,并且这周的组会都开完了,没有别的干扰,冲!

  • 收获: - 状态评分: ⭐⭐⭐⭐

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions