一、问题
假设有一个结构体:
struct Task
{
int id;
int priority;
struct ListNode node;
};
2026/9/6大约 2 分钟
假设有一个结构体:
struct Task
{
int id;
int priority;
struct ListNode node;
};
给定字符串 s 和 t,找出 s 中包含 t 所有字符的最短子串。
例如:
s = "ADOBECODEBANC"
t = "ABC"
给定字符串 s,找到其中最长的回文子串。
例如:
s = "babad"
这是 C 语言指针中一个非常经典的错误:
不能返回局部变量的地址。
例如:
int *func(void)
{
int arr[10];
return arr;
}
什么是滑动窗口?
其实就是一个队列,比如例题中的 abcabcbb,进入这个队列(窗口)为 abc 满足题目要求,当再进入 a,队列变成了 abca,这时候不满足要求。所以,我们要移动这个队列!
如何移动?
我们只要把队列的左边的元素移出就行了,直到满足题目要求!
一直维持这样的队列,找出队列出现最长的长度时候,求出解!
用两个指针维护一个连续区间:
left → [无重复字符] ← right
给定:
haystack = "sadbutsad"
needle = "sad"
回文数:正着读和反着读都一样。
例如:
121 → 是
1221 → 是
123 → 不是
-121 → 不是
短路求值的本质:
逻辑运算一旦能确定结果,后面的表达式就不再执行。
&&:前假,后面不看int a = 5, b = 3;
!a && (b++);
printf("%d,%d\n", a, b);
C 语言里最容易出错的地方之一:
有符号数和无符号数混合运算,会发生类型转换;整数通常以补码形式存储。
以 8 位 char 为例:
127 = 0111 1111
sizeof 能直接得到类型或变量占用的字节数。
不用 sizeof,可以利用:
#define mysizeof(value) \
((char *)(&value + 1) - (char *)(&value))
