- 博客(28)
- 收藏
- 关注
原创 LintCode-28 · 搜索二维矩阵
描述写出一个高效的算法来搜索 m × n矩阵中的值 target 。这个矩阵具有以下特性:每行中的整数从左到右是排序的。每行的第一个数大于上一行的最后一个整数。样例样例 1:输入:输出:解释:矩阵中没有包含2,返回false。样例 2:输入:输出:解释:矩阵中包含3,返回true。挑战O(log(n) + log(m)) 时间复杂度代码示例因为是有序的二维数组所以直接二分查找范围和大小public class Solution { /**
2022-03-18 16:23:48 214
原创 LintCode-8 · 旋转字符串
描述给定一个字符串str和一个偏移量,根据偏移量原地旋转字符串(从左向右旋转)。对于不同的语言,str将以不用的形式给出,例如对于字符串 “abc” ,将以下面的形式给出Java: char[] str = {‘a’, ‘b’, ‘c’};Python:str = [‘a’, ‘b’, ‘c’]C++:string str = “abc”;样例样例 1:输入:输出:解释:注意是原地旋转,即str旋转后为"efgabcd"样例 2:输入:输出:解释:注意是原地旋转,即
2022-03-16 18:45:14 1470
原创 LintCode-6 · 合并排序数组
描述将按升序排序的整数数组A和B合并,新数组也需有序。样例样例 1:输入:输出:解释:返回合并后的数组。样例 2:输入:输出:挑战如果一个数组很大,另一个数组很小,你将如何优化算法?代码示例采用归并排序策略public class Solution { /** * @param A: sorted integer array A * @param B: sorted integer array B * @return: A new
2022-03-16 16:50:11 842
原创 LintCode-3 · 统计数字
描述给定一个数字 k,计算 k 在 0 到 n 中出现的次数,k 可能是 0 到 9 的一个值。样例样例 1:输入:输出:解释:在 [0, 1] 中,只有 1 中存在数字 1,故出现一次。样例 2:输入:输出:解释:在 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] 中,1、10、11、12 中均出现了 1,其中 11 中出现了 2 次 1,故1出现 5 次。代码示例public class Solution { /**
2022-03-16 14:13:48 79
原创 链表问题集合
链表问题1.快慢指针法:快慢指针一般都初始化指向链表的头结点head,前进时fast在前,慢指针slow在后。fast每次前进2步,slow每次前进一步1.判定链表中是否含有环单链表的特点是:只知道每个结点的下一个结点,所以一个指针的话无法判断链表中是否有环。如果链表中不含环,那么指针最终会遇到空指针null表示链表到头。但是如果链表有环,那么指针就会陷入死循环,因为环形数组中没有null指针作为尾部节点。最终fast指针会超slow指针一圈,和slow指针相遇,说明有环public cla
2022-03-10 17:40:57 1068
原创 LintCode-366 · 斐波纳契数列
描述查找斐波纳契数列中第 N 个数。所谓的斐波纳契数列是指:前2个数是 0 和 1 。第 i 个数是第 i-1 个数和第i-2 个数的和。斐波纳契数列的前10个数字是:在测试数据中第 N 个斐波那契数不会超过32位带符号整数的表示范围样例代码示例1:算法一:递推法这种算法的朴素写法是所有人都可以写出来的,因此不做赘述。它的时间复杂度和空间复杂度均为O(n)。public class Solution { public int fibonacci(int n) {
2022-03-07 22:59:59 7464
原创 LintCode-298 · 寻找素数
描述输出n以内所有的素数。样例样例 1:代码示例public class Solution { /** * @param n: an integer * @return: return all prime numbers within n. */ public List<Integer> prime(int n) { // write your code here ArrayList<Integer
2022-03-07 17:05:21 95
原创 LintCode-228 · 链表的中点
描述找链表的中点,并返回这个节点。样例样例 1:样例 2:挑战如果链表是一个数据流,你可以不重新遍历链表的情况下得到中点么?代码示例采用快慢指针法/** * Definition for ListNode * public class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; *
2022-03-07 16:18:23 8918
原创 LintCode-25 · 打印X
25 · 打印X描述输入一个正整数N, 你需要按样例的方式返回一个字符串列表。样例样例 1:输入:输出:解释:答案列表可以被视为下面的图形:样例 2:输入:输出:解释:答案列表可以被视为下面的图形:样例 3:输入:输出:解释:答案列表可以被视为下面的图形:样例 4:输入:输出:解释:答案列表可以被视为下面的图形:样例 5:输入:输出:解释:答案列表可以被视为下面的图形: 代码示例public class Solution
2022-03-05 11:05:48 204
原创 LintCode-13 字符串查找
LeetCode-13 字符串查找描述对于一个给定的 source 字符串和一个 target 字符串,你应该在 source 字符串中找出 target 字符串出现的第一个位置(从0开始)。如果不存在,则返回 -1。 样例样例 1:输入:输出:解释:如果source里没有包含target的内容,返回-1样例 2:输入:输出:解释:如果source里包含target的内容,返回target在source里第一次出现的位置挑战可用O(nm)算法,如果能用O(n)算法做出来
2022-03-04 16:19:57 8240
原创 KMP算法,next数组和nextval数组
KMP算法原理:https://blog.csdn.net/dark_cy/article/details/88698736KMP算法是用来进行字符串匹配查找的,比如在字符串1中查找是否包含字符串2。核心是先求出Next数组。next数组表示的是待查找的字符串的最大公共前后缀中的公共前缀的最后一个字符的下标,知道这个下标,就可以知道当匹配目标字符串出错时,目标字符串的指针怎么回退,而查找段落的指针不用回退,这样遍历一遍查找段落,就可以知道是否存在目标字符串,时间复杂度为O(n)KMP算法的时间复杂度为
2022-03-03 18:33:10 563
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人