随笔分类 -  技术成长 / 算法

算法的练习
摘要:题目 18.四数之和 要求 给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] (若两个四元组元素一一对应,则认为两个四元组重复): 0 <= a, b, 阅读全文
posted @ 2023-12-19 11:20 庄子游世 阅读(4) 评论(0) 推荐(0) 编辑
摘要:题目 15. 三数之和 要求 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != j、i != k 且 j != k ,同时还满足 nums[i] + nums[j] + nums[k] == 0 。请 你返回所有和为 0 且不重 阅读全文
posted @ 2023-12-19 11:19 庄子游世 阅读(5) 评论(0) 推荐(0) 编辑
摘要:题目 383. 赎金信 要求 给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。 如果可以,返回 true ;否则返回 false 。 magazine 中的每个字符只能在 ransomNote 中使用一次。 示例 阅读全文
posted @ 2023-12-19 11:17 庄子游世 阅读(6) 评论(0) 推荐(0) 编辑
摘要:题目 454.四数相加II 要求 给你四个整数数组 nums1、nums2、nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足: 0 <= i, j, k, l < n nums1[i] + nums2[j] + nums3[k] + nums4 阅读全文
posted @ 2023-12-19 11:13 庄子游世 阅读(7) 评论(0) 推荐(0) 编辑
摘要:题目 1. 两数之和 要求 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。 思路 这个题目 阅读全文
posted @ 2023-12-18 18:14 庄子游世 阅读(16) 评论(0) 推荐(0) 编辑
摘要:题目 202. 快乐数 要求 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为: 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。 然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。 如果这个过程 结果为 1,那么这个数就是快乐数。 如果 n 是 阅读全文
posted @ 2023-12-18 18:12 庄子游世 阅读(10) 评论(0) 推荐(0) 编辑
摘要:题目 349. 两个数组的交集 示例 1: 输入:nums1 = [1,2,2,1], nums2 = [2,2] 输出:[2] 示例 2: 输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4] 输出:[9,4] 解释:[4,9] 也是可通过的 提示: 1 <= nums1 阅读全文
posted @ 2023-12-18 18:11 庄子游世 阅读(7) 评论(0) 推荐(0) 编辑
摘要:题目 42.有效的字母异位词 要求 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。 提示: 1 <= s.length, t.length <= 5 * 104 s 和 t 仅包含 阅读全文
posted @ 2023-12-18 18:08 庄子游世 阅读(16) 评论(0) 推荐(0) 编辑
摘要:题目 142.环形链表II 要求 给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置 阅读全文
posted @ 2023-12-16 21:17 庄子游世 阅读(10) 评论(0) 推荐(0) 编辑
摘要:题目 面试题 02.07. 链表相交 要求 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。 思路和答案 这道题目先用暴力破解,直接使用双层 for 循环,如下: /** * 暴力破解,双层 for 循环 * * 阅读全文
posted @ 2023-12-16 19:52 庄子游世 阅读(6) 评论(0) 推荐(0) 编辑
摘要:题目 19.删除链表的倒数第N个节点 要求 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 答案 先看看直接思路,首先遍历一遍,计算出元素的个数,之后计算出正向遍历要删除的元素,注意的是要创建一个虚拟节点,目的是可能删除头节点,如果删除头节点,没有虚拟节点,不易删除,当然也可以做 阅读全文
posted @ 2023-12-16 18:43 庄子游世 阅读(5) 评论(0) 推荐(0) 编辑
摘要:题目 24. 两两交换链表中的节点 要求 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。 解答 迭代的思路就是考虑清楚下一个节点是什么,举个实际的例子来解释代码,1→2→3→4→null,首先我先确定了最后要返回的 阅读全文
posted @ 2023-12-16 17:58 庄子游世 阅读(14) 评论(0) 推荐(0) 编辑
摘要:题目 206. 反转链表 要求 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 答案 这道题目也是使用虚拟节点,我先使用虚拟节点做了一遍,结果如下,就是想清楚在循环的时候保留当前节点就可以: public static ListNode reverseList(ListNode 阅读全文
posted @ 2023-12-15 17:56 庄子游世 阅读(11) 评论(0) 推荐(0) 编辑
摘要:题目: 707. 设计链表 要求: 你可以选择使用单链表或者双链表,设计并实现自己的链表。 单链表中的节点应该具备两个属性:val 和 next 。val 是当前节点的值,next 是指向下一个节点的指针/引用。 如果是双向链表,则还需要属性 prev 以指示链表中的上一个节点。假设链表中的所有节点 阅读全文
posted @ 2023-12-15 13:43 庄子游世 阅读(6) 评论(0) 推荐(0) 编辑
摘要:题目: 59. 螺旋矩阵 II 要求: 给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 答案: 两种解法: 一种用计算机模拟顺时针旋转的效果,这种方法看起来容易,做起来并没有那么容易,我开始就用这个思路做的,结果发现 阅读全文
posted @ 2023-12-14 13:38 庄子游世 阅读(5) 评论(0) 推荐(0) 编辑
摘要:题目: 209. 长度最小的子数组 题目描述: 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数 阅读全文
posted @ 2023-12-13 23:21 庄子游世 阅读(15) 评论(0) 推荐(0) 编辑
摘要:题目链接: 977. 有序数组的平方 要求: 给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。 解答: 这个题目暴力解法比较简单,就是先平方,后排序,时间复杂度取决于排序的方法的时间复杂度,这个暴力破解就不展示代码了。 如果使用双指针 阅读全文
posted @ 2023-12-13 22:39 庄子游世 阅读(8) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示