视频课程 编程

Java数组与字符串刷题精讲 (英文课程中文字幕)

¥5.00 已售 0
✓ 自动发货 ✓ 永久有效 ✓ 售后保障

资源介绍

视频数量:10个 总时长:42分 课程介绍: Java数组与字符串刷题精讲 打开LeetCode准备刷题,点开Array和String标签,看着里面密密麻麻的题号,是不是有种无从下手的感觉?为什么明明是最基本的数据结构,一到面试就卡壳?暴力解法一提交就提示超时?这门课就是来帮你打通这个瓶颈的。 整套课程十讲、四十多分钟,拆成十个核心专题,覆盖一百道精选题。不管是备战校招社招面试,还是想系统提升算法能力,这套题目组合拳都能帮你把基础打牢。 一、数组基础: 第一讲从Java数组的底层机制讲起。数组在堆上分配,内存连续,这决定了索引访问是O(1),但插入删除往往要O(n)。理解了这一点,很多题目复杂度瓶颈一眼就能看穿。课程还会带你走过Java数组的三步流程——声明、实例化、初始化,以及静态大小带来的限制。具体题目包括找最大元素、找第二大、原地反转数组、旋转数组、找缺失数字、把零移到末尾、找重复元素、两数组求并集交集、左旋一位、正负交替排列。这些都是热身级别,但每个都有值得咀嚼的细节。 二、双指针技巧: 初学者遇到数组题第一反应就是写嵌套循环,结果复杂度直接爆炸。双指针就是来解决这个问题的。课程把双指针分成反向收敛、同向快慢、原地后随三大类。反向收敛的经典例子是两数之和II,左右指针往中间靠,根据当前和决定走向,线性扫描就能搞定。Container With Most Water用贪心双指针,每次移动较短的线。同向快慢用来原地操作有序数组,比如Remove Duplicates、Sort Colors三色国旗问题。Trapping Rain Water这种经典难题也会拆给你看,状态缩减的思路一旦掌握,很多O(n²)的暴力都能降到线性。 三、滑动窗口: 双指针处理两端,滑动窗口则处理连续子数组或子串问题。固定窗口的代表是Maximum Sum Subarray of Size K,进出各一个元素就行。动态窗口的经典是无重复字符的最长子串,右指针不断扩展,左指针遇到重复就跳,配合哈希表记录字符位置,全程线性执行。Fruits Into Baskets、Max Consecutive Ones with K Flips是同思路的变体。Minimum Window Substring则是更复杂的版本,多重约束下窗口的伸缩需要细心。Sliding Window Maximum用单调队列优化到O(n),看似O(nk)的暴力直接被碾。 四、前缀和: 需要频繁查询区间和时,反复遍历数组就是巨大浪费。前缀和的精髓在于预处理:花O(n)构建前缀数组,之后任何区间查询都是O(1)。Subarray Sum Equals K如果硬找所有子数组是O(n²),前缀和加哈希表能轻松降到O(n)。Range Sum Query、Equilibrium Index、Find Pivot Index是直接应用。Product of Array Except Self则是前缀乘积的变体,常数空间的要求也要满足。二维矩阵的区域和查询也会讲到,从一维推广到二维并不复杂。 五、排序相关数组问题: 排序是处理数组问题的万能工具,很多题一旦排好序就迎刃而解。Merge Intervals和Insert Interval是区间问题的入门,面试出现频率极高。Find Kth Largest Element不排序就得维护大小为K的堆,排序则有不同写法。Sort an Array of 0s 1s 2s是荷兰国旗问题的延伸。Meeting Rooms、Minimum Number of Platforms、Non-overlapping Intervals是区间调度的经典变形,去不少公司面试都会直接撞原题。 六、字符串基础: 字符串本质上就是字符数组,所以数组的很多技巧可以直接平移过来。先从反转字符串、判断回文、异位词这些基本功开始,再过渡到字符串压缩、最长公共前缀、字符串转整数(atoi)。atoi这道Medium题细节极多,空格、正负号、越界处理都要考虑周全,自己硬写很容易漏掉边界条件,跟着课程走一遍能少踩很多坑。First Non-Repeating Character也是面试常客。 七、字符串模式匹配: 字符串领域有一大类问题是模式匹配,也就是在一个长串里找子串。课程从最朴素的逐字符匹配讲起,然后引入KMP算法,这个算法的核心是构建next数组,让匹配失败时不是傻傻回退一位,而是直接滑到最长公共前后缀的位置,稳稳保持最优复杂度。Rabin-Karp用滚动哈希来做,思路完全不同但同样高效。Z-Algorithm也是字符串匹配的利器。Wildcard Pattern Matching和Regular Expression Matching则是模式匹配的进阶版,正则那道题用动态规划就能优雅解决。Longest Palindromic Substring和Subsequence这对兄弟问题则是另一条思路。 八、二维矩阵: 二维数组很多同学觉得空间想象不出来,其实把它当成带行列索引的数组就好处理。转置、旋转90度、螺旋遍历是基本功。Search in a Sorted Matrix利用行列都排序的特性,从右上角开始像二叉搜索树一样走,O(m+n)搞定。Set Matrix Zeroes用第一行第一列做标记的技巧非常巧妙。Number of Islands是经典网格DFS/BFS入门题。Rotting Oranges是网格BFS的进阶,模拟腐烂扩散的多源过程。Maximum Size Square Sub-Matrix of All 1s则是动态规划在矩阵上的经典应用。 九、数组数学问题: 这一章聚焦那些看起来像数学题但本质上是数组操作的题目。Find Majority Element用Boyer-Moore投票算法,O(1)空间就能找出过半元素,这个思路精妙值得反复琢磨。Next Permutation是字典序排列的经典问题,面试出现过很多次。Best Time to Buy and Sell Stock两道变体分别考察单次交易和无限次交易的最大利润,用状态转移的思路来想就一目了然。Maximum Subarray Sum的Kadane算法是动态规划的入门必学。Find Peak Element用二分搜索在O(log n)内找到峰值。Count Inversions则用归并排序顺便统计,一举两得。 十、高级综合: 最后一章把前面所有模式串起来实战演练。双指针、滑动窗口、前缀和、快慢指针、单调栈与单调队列这五大核心模式都会登场。Longest Consecutive Sequence要求O(n)时间找最长连续序列,用哈希集合就能避免排序。Median of Two Sorted Arrays虽然标着Hard但有对数级的二分做法。Sliding Puzzle是BFS的应用,状态就是棋盘布局。Gas Station Problem是看似贪心实则需要严谨证明的经典题。Candy Distribution、Split Array Largest Sum这类区间划分问题会展示不同的动态规划建模思路,帮你把模式识别能力拉满。 十讲刷完,一百道题目过完,再看数组和字符串题目,眼光会完全不同。面对新题不再急着写暴力,而是先想属于哪种模式、该用哪种数据结构、时间和空间复杂度能不能再优化。这种思维方式的转变,比单纯记住几道题的解法有用得多。面试时面对白板上的算法题,你也能更有底气地说出思路和复杂度分析,而不是含糊地挤出一段嵌套循环交差。