scanner、arrylist、反转数组、双指针轮转数组问题

📅 发布时间:2026/7/30 18:35:42
scanner、arrylist、反转数组、双指针轮转数组问题
一、scanner使用固定格式import java.util.Scanner; // 1. 导入类 public class Example { public static void main(String[] args) { Scanner scanner new Scanner(System.in); // 2. 创建对象 System.out.println(请输入月份); int month scanner.nextInt(); // 3. 读取整数输入此时写这句话 // 后续使用 month 做逻辑处理... scanner.close(); // 最后关闭扫描器释放资源 } }二、反转数组for循环随机生成了含有五个数字的数组// 使用 for 循环反转数组 int left 0; int right arr.length - 1; while (left right) { // 交换左右指针指向的元素 int temp arr[left]; arr[left] arr[right]; arr[right] temp; left; right--; } /* ---------- 原地双指针交换函数 ---------- */ private void reverse(char[] arr, int l, int r) { while (l r) { char tmp arr[l]; arr[l] arr[r]; arr[r] tmp; l; r--; }三、ArrayList方法1.arrylist统一格式E: 泛型数据类型用于设置 objectName 的数据类型只能为引用数据类型。objectName: 对象名。import java.util.ArrayList; // 引入 ArrayList 类 ArrayListE objectName new ArrayList(); // 初始化2.arrylist方法①.add(Object element) 向列表的尾部添加指定的元素。②.size() 返回列表中的元素个数。③.get(int index) 返回列表中指定位置的元素index从0开始。四、双指针轮转数组问题while (i j) { int temp nums[i]; nums[i] nums[j]; nums[j--] temp;双指针应用的问题类型while (i j的双指针套路核心思想是把「两端向中间夹」或「两段区间互换」变成 O(n) 一次扫描。除了刚才的 数组翻转下面这些都是高频出现、面试常考的双指针场景1. 回文判定从两头往中间扫比较字符是否相同。例题125. 验证回文串、680. valid palindrome II。2. 有序数组两数之和头尾指针和太大就右移尾和太小就左移头。例题167. Two Sum II。3. 三数 / 四数之和n-Sum 套路先排序固定一个数剩下区间用双指针找两数之和。例题15. 3Sum、18. 4Sum。4. 快慢指针对撞型变种快指针先走 k 步再两指针同步走快到底时慢指针就在倒数第 k 个。例题19. 删除链表倒数第 N 个结点、876. 链表中间结点。5. 容器盛水最多面积最大头尾各一根柱子每次移动短的那根计算面积更新最大值。例题11. Container With Most Water。6. 滑动窗口「缩左边界」时也用双指针右指针扩张满足条件后左指针收缩区间统计最值。例题3. 无重复字符的最长子串、76. 最小覆盖子串。7. partition 操作快速排序 / 荷兰国旗左右指针把「小于基准」和「大于基准」分开。例题75. Sort Colors、215. 数组第 K 大元素。8. 合并两个有序数组 / 链表从后往前或从前往后双指针谁小移谁。例题88. Merge Sorted Array、21. Merge Two Lists。9. 二分查找本身就是双指针左、右指针向中间夹找目标或插入位置。10. 旋转数组的「三次翻转」189 题区间翻转用 i j 双指针原地完成。