LCR032-LCR035哈希表的应用 剑指offer(专项突破版)5.3 哈希表的应用LCR032.有效的字母异位词分析遍历第一个字符串,使用数组作为哈希表,字母出现则+1;然后遍历第二个字符串,字母出现则-1;最后判断数组中的值是否全为0。 12345678910111213141516171819202122232425262728class Solution {public: bool isAnagram(str 2024-04-26 算法笔记 > 哈希表 #剑指Offer
LCR030-LCR031哈希表的设计 剑指offer(专项突破版)5.2 哈希表的设计设计哈希表的前提是待存入的元素需要一个能计算自己哈希值的函数。在Java中所有类型都继承了类型Object,每个Object的实例都可以通过定义函数hashCode来计算哈希值。哈希表根据每个元素的哈希值把它存储到合适的位置。 哈希表最重要的特点就是高效,只需要O(1)的时间就可以把一个元素存入或读出。在常用的基础数据结构中,数组满足这个要求。只要知 2024-04-25 算法笔记 > 哈希表 #剑指Offer
LCR028-LCRO29双向链表和循环链表 剑指offer(专项突破版)4.5 双向链表和循环链表LCR028.扁平化多级双向链表分析可以用递归的思想: 基本情况(递归出口):对于空节点或者已经是叶子节点(即没有子链表)的节点,不需要进行扁平化处理,直接返回。 递归处理子链表:对于当前节点,如果存在子链表,我们需要先递归地扁平化子链表。 连接扁平化后的子链表:将扁平化后的子链表连接到当前节点后面。 继续处理下一个节点:继续递归处理当前节点 2024-04-24 算法笔记 > 链表 #剑指Offer
LCR024-LCR027反转链表 剑指offer(专项突破版)4.4 反转链表LCR024.反转链表分析对于每一个要转换其next指针的结点,需要保存它的前驱和后继,先让它的next指向前驱,然后再向后移动。 123456789101112131415161718192021222324/** * Definition for singly-linked list. * struct ListNode { * i 2024-04-18 算法笔记 > 链表 #剑指Offer
LCR021-LCR023双指针 剑指offer(专项突破版)4.3 双指针LCR021.删除链表的倒数第N个结点分析使用双指针,首先第一个指针指向头结点,然后走n步,第二个指针不动;第二个指针初始为哨兵结点,随后两个指针同时向后移动,由于两个指针之间相隔n个结点,即当第一个指针指向最后时,第二个指针为倒数第n+1个结点,删除倒数第n个结点,只需将第二个指针的next指向它的next的next。 代码123456789101112 2024-04-15 算法笔记 > 链表 #剑指Offer
LCR018-LCR020回文字符串 剑指offer(专项突破版)3.3 回文字符串LCR018.验证回文串分析使用双指针,起始时左指针指向开始,右指针指向最后一个字符,左指针不断后移,右指针不断前移。注意边界条件的判断。 12345678910111213141516171819202122232425262728293031323334353637383940414243444546class Solution {pub 2024-04-12 算法笔记 > 字符串 #剑指Offer
LCR014-LCR017双指针 剑指offer(专项突破版)3.2 双指针LCR014.字符串的排列分析 变位词:组成各个单词的字母及每个字母出现的次数完全相同,只是字母排列的顺序不同。例如,”pots”、”stop”和”tops”就是一组变位词。 蛮力法:把字符串s1的字母所有排列组合找到,然后看s2中有没有这些子串。所有排列组合是n!,时间复杂度为O(n!)。 双指针法:用哈希表存储s1字符串字母的次数。然后用双指针,左指针 2024-04-08 算法笔记 > 字符串 #剑指Offer
LCR010-LCR013累加数组数字求子数组之和 剑指offer(专项突破版)2.3 累加数组数字求子数组之和题目链接:LCR010-和为K的子数组蛮力法: 123456789101112131415161718class Solution {public: int subarraySum(vector<int>& nums, int k) { int cnt = 0; f 2024-04-01 算法笔记 > 数组 #剑指Offer
LCR006-LCR009双指针问题 剑指offer(专项突破版)2.2 双指针题目链接:LCR006-排序数组中的两个数字之和 分析:用两个指针P1和P2分别指向数组中的两个数字。指针P1初始化指向数组的第1个(下标为0)数字,指针P2初始化指向数组的最后一个数字。如果指针P1和P2指向的两个数字之和等于输入的k,那么就找到了符合条件的两个数字。如果指针P1和P2指向的两个数字之和小于k,那么我们希望两个数字的和再大一点。由于数组已 2024-03-09 算法笔记 > 数组 #剑指Offer
LCR005.最大单词长度乘积 剑指offer(专项突破版)1.2 二进制题目链接:LCR005-最大单词长度乘积方法1:用哈希表记录字符串中出现的字符分析:蛮力。对每一个字符串,存储一个记录每个字符的哈希表;对每个字符串对,比较其哈希表。 123456789101112131415161718192021222324252627282930313233343536class Solution {public: 2024-03-07 算法笔记 > 整数 #剑指Offer