Loading

上一页 1 2 3 4 5 6 7 ··· 18 下一页
摘要: 题目 剑指 Offer 12. 矩阵中的路径 思路1(回溯、DFS) 这题可以使用回溯+递归来解决,思路如下: 将二维数组的每一个元素都作为起点进行回溯查找 每次查找的时候,都有四个方向,但是上一个方向不能再次被遍历,因此需要将遍历过的位置进行做标记,递归返回的时候再还原 递归过程中要判断一些条件: 阅读全文
posted @ 2021-11-21 01:40 linzeliang 阅读(72) 评论(0) 推荐(0)
摘要: 题目 剑指 Offer 52. 两个链表的第一个公共节点 思路1(栈) 若两个链表相遇,则从它开始相遇的地方到链表末尾应该都是相同的,那么我们可以将两个链表分别放入两个栈中,然后依次循环比较两个栈顶的节点,同时用pre记录上一个节点,直到当前两个栈顶节点不相等,那么pre节点就是他们开始相遇的地方 阅读全文
posted @ 2021-11-20 01:17 linzeliang 阅读(95) 评论(0) 推荐(0)
摘要: 题目 剑指 Offer 25. 合并两个排序的链表 思路1 其实就是归并排序中将两个数组合并成一个有序数组 因为两个链表的元素已经是递增了(必要条件),所以我们可以遍历两个链表,判断两个节点的大小关系,然后交替前进,合并到一个新的链表中 因为需要返回一个合并后的新链表,同时我们也无法判断l1、l2两 阅读全文
posted @ 2021-11-19 02:02 linzeliang 阅读(44) 评论(0) 推荐(0)
摘要: 题目 剑指 Offer 24. 反转链表 思路1(迭代) 使用一个指针pre指向上一个节点,初始值为null,然后遍历链表,一边遍历一遍交换指针指向: 先用nextNode下下一个节点 然后将cur指向pre 之后将pre指向cur 最后将cur指向nextNode即可完成两个节点的反转 我们遍历整 阅读全文
posted @ 2021-11-19 01:48 linzeliang 阅读(72) 评论(0) 推荐(0)
摘要: 题目 剑指 Offer 22. 链表中倒数第k个节点 思路1(栈) 既然要倒数第k个节点,那我们直接把所有节点放到**栈(先进后出)**里面,然后pop弹出k个元素就可以了 代码 class Solution { public ListNode getKthFromEnd(ListNode head 阅读全文
posted @ 2021-11-19 01:29 linzeliang 阅读(106) 评论(0) 推荐(0)
摘要: 题目 剑指 Offer 18. 删除链表的节点 思路1(单指针) 首先判断是否删除的节点为第一个,是的话直接返回就行 如果删除的不是第一个,那么就遍历链表。每次遍历的时候我们都要判断一下下一个节点的值是否为要删除的节点的值:如果是的话,将当前节点指向待删除节点的下一个节点,这样子就成功删除了;否则就 阅读全文
posted @ 2021-11-19 00:44 linzeliang 阅读(60) 评论(0) 推荐(0)
摘要: 题目 剑指 Offer 48. 最长不含重复字符的子字符串 思路1(动态规划+哈希表) 暴力查找的所花时间复杂度为$O(N^3)$,太高了,不推荐 这题我们可以使用动态规划,我们定义dp[j]为:以第j个字符为结尾的不包含重复字符的子字符串的最大长度。我们需要从左到右依次扫描字符串中的每个字符,同时 阅读全文
posted @ 2021-11-12 10:13 linzeliang 阅读(43) 评论(0) 推荐(0)
摘要: 题目 剑指 Offer 03. 数组中重复的数字 思路1(哈希表) 依次遍历数组,将元素存入哈希表中,如果哈希表中已经存在,那么就找到重复的数 代码 class Solution { public int findRepeatNumber(int[] nums) { HashSet<Integer> 阅读全文
posted @ 2021-11-12 01:01 linzeliang 阅读(56) 评论(0) 推荐(0)
摘要: 题目 剑指 Offer 50. 第一个只出现一次的字符 思路1(哈希表) 先遍历一遍字符串,将字符串中的每个字符存入哈希表中,true代表只出现一次,false代表出现多次 统计结束后,然后再顺序遍历一遍字符串,查找哈希表,判断是否只出现一次 代码 class Solution { public c 阅读全文
posted @ 2021-11-12 00:26 linzeliang 阅读(47) 评论(0) 推荐(0)
摘要: 题目 剑指 Offer 59 - II. 队列的最大值 思路1(单调队列) 和剑指 Offer 59 - I. 滑动窗口的最大值基本一样,我们使用两个队列来解决问题:一个普通的队列,用于正常的队列操作;一个双端队列,这个队列是用来存储队列中的最大值的 代码 class MaxQueue { Dequ 阅读全文
posted @ 2021-11-10 00:15 linzeliang 阅读(63) 评论(0) 推荐(0)
上一页 1 2 3 4 5 6 7 ··· 18 下一页