
LeetCode竞赛题库
Dkui
夯实根基,蓄积勃发。
展开
-
数组中重复的数字
找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 1:输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3 class Solution { public int findRepeatNumber(int[] nums) { Set<Integer> set = new HashS原创 2020-06-06 20:44:18 · 135 阅读 · 0 评论 -
最大数值
编写一个方法,找出两个数字a和b中最大的那一个。不得使用if-else或其他比较运算符。示例:输入: a = 1, b = 2输出: 2class Solution { public int maximum(int a, int b) { //方法1:使用两个数相减的正负号 ,来确定大小 //a-b两数相减二进制首位是符号:若首位是0,则a大,返回arr[0],即a;否则首位是1,说明b返回arr[1] //求首位:(a-b)>原创 2020-06-05 21:26:26 · 394 阅读 · 0 评论 -
主要元素
主要元素数组中占比超过一半的元素称之为主要元素。给定一个整数数组,找到它的主要元素。若没有,返回-1。示例 1:输入:[1,2,5,9,5,9,5,5,5]输出:5示例 2:输入:[3,2]输出:-1 示例 3:输入:[2,2,1,1,1,2,2]输出:2class Solution { public int majorityElement(int[] nums){ //排序法 Arrays.sort(nums);原创 2020-06-04 20:13:26 · 1166 阅读 · 0 评论 -
删除中间节点
实现一种算法,删除单向链表中间的某个节点(即不是第一个或最后一个节点),假定你只能访问该节点。示例:输入:单向链表a->b->c->d->e->f中的节点c结果:不返回任何数据,但该链表变为a->b->d->e->fclass Solution { public void deleteNode(ListNode node) { //思路:将下一个结点的值赋给当前节点,当前节点的下一个结点为下下一个结点。 no原创 2020-06-03 16:35:46 · 486 阅读 · 0 评论 -
返回倒数第 k 个节点
实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。注意:本题相对原题稍作改动示例:输入: 1->2->3->4->5 和 k = 2输出: 4说明:给定的 k 保证是有效的。解题思路 比较典型的双指针游走题目,设有两个指针 p,q : 初始时,两个指针均指向 head。 先将 q 向后移动 k 次。此时p,q的距离为 k。 同时移动 p,q, 直到 q 指向 nullptr。此时p->val即为答案。/**原创 2020-05-29 20:23:12 · 309 阅读 · 0 评论 -
字符串压缩
字符串压缩。利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串aabcccccaaa会变为a2b1c5a3。若“压缩”后的字符串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小写英文字母(a至z)。示例1: 输入:"aabcccccaaa" 输出:"a2b1c5a3"示例2: 输入:"abbccd" 输出:"abbccd" 解释:"abbccd"压缩后为"a1b2c2d1",比原字符串长度更长。提示:字符串长度在[0, 50000]范围内。解原创 2020-05-28 16:38:11 · 722 阅读 · 0 评论 -
回文排列
给定一个字符串,编写一个函数判定其是否为某个回文串的排列之一。回文串是指正反两个方向都一样的单词或短语。排列是指字母的重新排列。回文串不一定是字典当中的单词。示例1:输入:"tactcoa"输出:true(排列有"tacocat"、"atcocta",等等)class Solution { public boolean canPermutePalindrome(String s) { //方法1:哈希计数 // HashMap<Character原创 2020-05-23 17:17:14 · 256 阅读 · 0 评论 -
字符串轮转
题目字符串轮转。给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成(比如,waterbottle是erbottlewat旋转后的字符串)。示例1: 输入:s1 = "waterbottle", s2 = "erbottlewat" 输出:True示例2: 输入:s1 = "aa", "aba" 输出:False提示:字符串长度在[0, 100000]范围内。说明:你能只调用一次检查子串的方法吗?代码class Solution { public b原创 2020-05-20 20:11:29 · 275 阅读 · 0 评论 -
判定是否互为字符重排
给定两个字符串 s1 和 s2,请编写一个程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。示例 1:输入: s1 = "abc", s2 = "bca"输出: true 示例 2:输入: s1 = "abc", s2 = "bad"输出: false说明:0 <= len(s1) <= 1000 <= len(s2) <= 100class Solution public boolean CheckPermutation(String s1原创 2020-05-18 21:08:33 · 187 阅读 · 0 评论 -
判断字符是否唯一
实现一个算法,确定一个字符串S的所有字符是否完全都不同实例1:输入: s="leetcode"输出:false实例2输入:s="abc"输出:ture限制:0<=len(s)<=100如果你不使用额外的数据结构,会很加分解题思路将该数组遍历两次下 然后判断是否相等 相等就返回 false 不等就true代码class Solution{ public boolean isUniquea(String astr){ for(int i=0; i &l原创 2020-05-09 10:09:30 · 226 阅读 · 0 评论 -
较大分组的位置
——数组题目在一个由小写字母构成的字符串 S 中,包含由一些连续的相同字符所构成的分组。例如,在字符串 S = “abbxxxxzyy” 中,就含有 “a”, “bb”, “xxxx”, “z” 和 “yy” 这样的一些分组。我们称所有包含大于或等于三个连续字符的分组为较大分组。找到每一个较大分组的起始和终止位置。最终结果按照字典顺序输出。示例 1:输入: "abbxxxxzzy"...原创 2020-02-27 15:17:10 · 155 阅读 · 0 评论