两数之和用对撞的前提
用对撞双指针求「两数之和等于目标」,前提是【0】。
和太小时该动哪个指针(C++)
两个指针指的数加起来比目标小,应该【0】。
对撞的循环什么时候停
对撞双指针的循环,停下来的条件是【0】。
和为 40 的两个下标
在 13 15 17 23 24 里找和为 40 的两个数。运行下面这段程序: #include <algorithm> #include <iostream> #include <map> #inclu
写一个两数之和
补全 two_sum:在有序数组里找和为 target 的两个下标,找不到返回 {-1, -1}。找和为 40 的,把两个下标用 / 连起来输出。 (本题用 g++ -std=c++17 -O0 编译。)
用对撞双指针原地反转
补全 rev_two:两个指针一头一尾,边交换边往中间走。反转之后用 / 连起来输出。 (本题用 g++ -std=c++17 -O0 编译。)
判回文一次验两种
补全 is_pal:两头往中间比,全都对上才是回文。把 abcba 和 abcab 的结果用 / 连起来输出。 (本题用 g++ -std=c++17 -O0 编译。)
size() 返回的是什么类型
第 1 步:j 从 size()-1 往下走 第 2 步:j-- 之后 j = 2 第 3 步:j-- 之后 j = 1 第 4 步:j-- 之后 j = 0 第 5 步:0 再减 1:绕到最大的数 第 6 步:j >= 0 永远成立
空数组的 size() - 1
空 vector 的 v.size() - 1 等于【0】。
右指针更稳妥的写法
对撞双指针里的右指针,C++ 里更稳妥的写法是【0】。