LeetCode
垂柳踏浪
这个作者很懒,什么都没留下…
展开
-
面试题 17.14. 最小K个数
面试题 17.14. 最小K个数 题目 设计一个算法,找出数组中最小的k个数。以任意顺序返回这k个数均可。 0 <= len(arr) <= 100000 0 <= k <= min(100000, len(arr)) 解法 解法1 使用Arrays的快排方法,取前K个返回 class Solution { public int[] smallestK(int[] arr, int k) { Arrays.sort(arr); int[]原创 2021-09-07 17:35:58 · 85 阅读 · 0 评论 -
LeetCode 1221. 分割平衡字符串
1221. 分割平衡字符串 题目 在一个 平衡字符串 中,‘L’ 和 ‘R’ 字符的数量是相同的。 给你一个平衡字符串 s,请你将它分割成尽可能多的平衡字符串。 注意:分割得到的每个字符串都必须是平衡字符串。 返回可以通过分割得到的平衡字符串的 最大数量 。 1 <= s.length <= 1000 s[i] = 'L' 或 'R' s 是一个 平衡 字符串 解法 解法1 看到平衡和分割,第一反应是想到了栈,遍历到R进栈,L出栈,当栈长度为0时总数加一.在这里我们可以用int来代表,遇到R原创 2021-09-07 09:26:43 · 74 阅读 · 0 评论 -
LeetCode 4. 寻找两个正序数组的中位数
寻找两个正序数组的中位数 题目 给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。 提示: nums1.length == m nums2.length == n 0 <= m <= 1000 0 <= n <= 1000 1 <= m + n <= 2000 -106 <= nums1[i], nums2[i] <= 106 解法 解法1 创建一个长度是为(nums1.lengt原创 2021-09-06 22:57:38 · 43 阅读 · 0 评论 -
LeetCode 704. 二分查找
704. 二分查找 题目 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。 你可以假设 nums 中的所有元素是不重复的。 n 将在 [1, 10000]之间。 nums 的每个元素都将在 [-9999, 9999]之间。 思路 因为是有序数组,即使用二分查找, 定义左指针(0)和右指针(nums.length). 取左右指针平均值(index),nums[index原创 2021-09-06 16:23:18 · 52 阅读 · 0 评论 -
LeetCode 470.用 Rand7() 实现 Rand10()
470. 用 Rand7() 实现 Rand10() 题目 已有方法 rand7 可生成 1 到 7 范围内的均匀随机整数,试写一个方法 rand10 生成 1 到 10 范围内的均匀随机整数。 不要使用系统的 Math.random() 方法。 rand7 已定义。 传入参数: n 表示 rand10 的调用次数。 思路 因为rand7范围在17内,所以要得到110的随机数,至少需要运行两次rand7 两个rand7直接做加法,范围2~14,发现当相加的两数相同时(除1之外),概率会较大,例原创 2021-09-05 11:25:32 · 79 阅读 · 0 评论 -
LeetCode 3.无重复字符的最长子串
无重复字符的最长子串题目解法解法1解法2 题目 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 0 <= s.length <= 5 * 104 s 由英文字母、数字、符号和空格组成 解法 解法1 从字符串下标0开始,向右挪动指针.从指针开始遍历字符串,每一个char都存入set集合,如果add方法返回false,即改set集合的长度是从指针开始的最长子串,依次比较获得最大值,当子串长度+剩余长度>=字符串长度时就可以跳出循环了. class Solution原创 2021-09-04 23:49:23 · 88 阅读 · 0 评论 -
剑指 Offer 10- I. 斐波那契数列
剑指 Offer 10- I. 斐波那契数列 题目 写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下: F(0) = 0, F(1) = 1 F(N) = F(N - 1) + F(N - 2), 其中 N > 1. 斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。 答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。 0 <=.原创 2021-09-04 21:27:20 · 100 阅读 · 0 评论 -
LeetCode 2.两数相加
两数相加 题目 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外,这两个数都不会以 0 开头。 解法 解法1 模拟从个位开始相加进一,两个链表同时相加,取最长的一个链表.虽然没有消耗额外的内存空间,但是这样写法太不优雅了 /** * Definition for singly-linked list. * public clas原创 2021-09-04 21:26:32 · 58 阅读 · 0 评论 -
剑指 Offer 22. 链表中倒数第k个节点
剑指 Offer 22. 链表中倒数第k个节点 题目 输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。 例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1、2、3、4、5、6。这个链表的倒数第 3 个节点是值为 4 的节点。 解法 解法1 定义一个 array 集合,然后遍历链表把每一个节点按照顺序存入集合中,即需要返回的节点为 array[size-k],缺点需要额外的内存空间 /** * Definiti原创 2021-09-04 21:25:41 · 99 阅读 · 0 评论