leetcode
MagicianThirteen
这个作者很懒,什么都没留下…
展开
-
删除排序链表中的重复元素
链表常见算法之一原创 2022-10-20 20:14:40 · 244 阅读 · 0 评论 -
合并两个有序链表(非递归解法和递归解法)
合并两个有序链表,升序原创 2022-09-20 23:30:32 · 305 阅读 · 0 评论 -
两数之和的分析和优化
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例 1:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。public class SumTwoNumber {原创 2022-03-10 12:18:40 · 114 阅读 · 0 评论 -
爬楼梯的分析和算法,以及优化
递归的解法,复杂度O(n)这里可以看到f3,f4,被计算了多次,这里可以优化,用字典先存起来,要的时候再从里面拿,不用重复计算private Dictionary<int, int> saveResult = new Dictionary<int, int>();public int ClimbStairs(int n) { if (n == 1) return 1; if(n == 2) return 2原创 2022-03-08 12:02:45 · 228 阅读 · 0 评论 -
找到所有数组中消失的数字
给你一个含 n 个整数的数组 nums ,其中 nums[i] 在区间 [1, n] 内。请你找出所有在 [1, n] 范围内但没有出现在 nums 中的数字,并以数组的形式返回结果。示例 1:输入:nums = [4,3,2,7,8,2,3,1]输出:[5,6]示例 2:输入:nums = [1,1]输出:[2]提示:n == nums.length1 <= n <= 1051 <= nums[i] <= n进阶:你能在不使用额外空间且时间复杂度为 O(n)原创 2022-05-20 10:17:58 · 179 阅读 · 0 评论 -
移动零的算法分析
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。请注意 ,必须在不复制数组的情况下原地对数组进行操作。示例 1:输入: nums = [0,1,0,3,12]输出: [1,3,12,0,0]示例 2:输入: nums = [0]输出: [0]第一种方法:挪,双指针形式,一个i用来遍历数组,然后记下非0元素,一个j用来作为数组顺序下标,只是把i指向的非0元素,往数组的顺位放时间复杂度O(n)public void Move(int[] nums原创 2022-05-07 10:28:24 · 349 阅读 · 0 评论 -
合并两个有序数组
给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。示例 1:注意这里的0只是占位符,占nums2的位原创 2022-05-07 10:35:33 · 156 阅读 · 0 评论