leetcode
文章平均质量分 50
snnu_robiny
穷且益坚,不坠青云之志。
展开
-
由leetcode 87扰乱字符串引出的两个Java问题
87. 扰乱字符串难度困难388收藏分享切换为英文接收动态反馈使用下面描述的算法可以扰乱字符串s得到字符串t:如果字符串的长度为 1 ,算法停止 如果字符串的长度 > 1 ,执行下述步骤: 在一个随机下标处将字符串分割成两个非空的子字符串。即,如果已知字符串s,则可以将其分成两个子字符串x和y,且满足s = x + y。 随机决定是要「交换两个子字符串」还是要「保持这两个子字符串的顺序不变」。即,在执行这一步骤之后,s可能是s = x + y或者s...原创 2021-07-19 21:15:33 · 126 阅读 · 0 评论 -
leetcode 82. 删除排序链表中的重复元素 II
给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中没有重复出现的数字。题解:不多说了,直接看代码。class ListNode { int val; ListNode next; ListNode() {} ListNode(int val) { this.val = val; } ListNode(int val, ListNode next) { this.val = val; this.next = next; }}class ..原创 2021-02-05 17:53:37 · 144 阅读 · 0 评论 -
leetcode 81. 搜索旋转排序数组 II
题目:假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组[0,0,1,2,2,5,6]可能变为[2,5,6,0,0,1,2])。编写一个函数来判断给定的目标值是否存在于数组中。若存在返回true,否则返回false。题解:虽然在某个点上进行了旋转,但是分成的前后两段还是升序的,所以当二分查找时的中点元素和target应该存在的位置(如果没有假设target在数组里)在同一段升序序列,二分查找依然可以使用,而当target和中点元素不在同一段时,根据targe...原创 2021-01-24 16:54:52 · 65 阅读 · 0 评论 -
LeetCode 78.子集 一种复杂度稍高思维简单的写法
78. 子集难度中等给定一组不含重复元素的整数数组nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。解析: 对于一个包含全部长度为n的子集的集合,其实只要输出原集合中所有升序排列可能便不会重复且不会遗漏,而这个集合刚好可以由长度为n-1子集的集合生成,由于元素不会重复,所以可以直接按元素大小作为序列,对nums排序后(后来发现数据都是默认升序...原创 2020-03-20 21:18:44 · 198 阅读 · 0 评论 -
leetcode 80. 删除排序数组中的重复项 II
80. 删除排序数组中的重复项 II难度中等给定一个增序排列数组nums,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。一开始没有看题解,一看额外空间是O(1),知道了是在原有数组上做文章,想法是用一个快慢指针,快指针统计当前数字有多少个重复的次数,慢指针表示新的数字填入的位置,如果快指针统计大于2,则填入两个快指针指向的数,否则填一个。当快指针遍历完原...原创 2021-01-03 15:08:00 · 98 阅读 · 0 评论