
数据结构与算法
uzck
这个作者很懒,什么都没留下…
展开
-
【牛客-程序员代码面试指南】不重复打印排序数组中相加和为给定值的所有二元组
描述给定排序数组arr和整数k,不重复打印arr中所有相加和为k的不降序二元组例如, arr = [-8, -4, -3, 0, 1, 2, 4, 5, 8, 9], k = 10,打印结果为:1, 92, 8[要求]时间复杂度为O(n)O(n),空间复杂度为O(1)O(1)输入描述:第一行有两个整数n, k接下来一行有n个整数表示数组内的元素输出描述:输出若干行,每行两个整数表示答案按二元组从小到大的顺序输出(二元组大小比较方式为每个依次比较二元组内每个数)示例输入:10原创 2022-02-13 15:49:57 · 154 阅读 · 0 评论 -
[牛客-程序员代码面试指南]最长的可整合子数组的长度
题目描述先给出可整合数组的定义:如果一个数组在排序之后,每相邻两个数的差的绝对值都为1,或者该数组长度为1,则该数组为可整合数组。例如,[5, 3, 4, 6, 2]排序后为[2, 3, 4, 5, 6],符合每相邻两个数差的绝对值都为1,所以这个数组为可整合数组给定一个数组arr, 请返回其中最大可整合子数组的长度。例如,[5, 5, 3, 2, 6, 4, 3]的最大可整合子数组为[5, 3, 2, 6, 4],所以请返回5数据范围:0 < n \le 1000000<n≤100000原创 2022-02-13 15:30:52 · 151 阅读 · 0 评论 -
LeetCode876 Middle of the Linked List
题目原意是找一个链表的中间结点,如果中间结点有两个,取靠后的那个沙雕解法public class ListNode { public int val; public ListNode next; public ListNode(int val) { this.val = val; }}给定的是结点数据结构是这样的,因此不能直接用Java里...原创 2019-01-16 11:03:19 · 184 阅读 · 0 评论 -
LeetCode766. Toeplitz Matrix
题意判断一个矩阵是不是Toeplitz矩阵Toeplitz矩阵需要满足的条件[123451239512] \left[ \begin{matrix} 1 &amp; 2 &amp; 3 &amp; 4 \\ 5 &amp; 1 &amp; 2 &amp; 3 \\ 9 &amp; 5 &amp; 1 &am...原创 2019-01-16 16:03:21 · 292 阅读 · 0 评论 -
LeetCode739 Daily Temperatures
题目描述给出连续若干天的气温数据如[73, 74, 75, 71, 69, 72, 76, 73],输出多少天后气温会高于当天,上面例子的输出结果为[1, 1, 4, 2, 1, 1, 0, 0]。温度的范围从30到100,数据长度1到30000。蒟蒻的解法public int[] dailyTemperatures(int[] T) { int[] result = new int[T....原创 2019-03-20 22:07:10 · 241 阅读 · 0 评论 -
LeetCode 260 Single Number III
找出数组中只出现一次的两个数题目描述:输入一个整型数组,数组中只有两个数字只出现了一次,其他的数都出现了两次。要求找出那两个数字,对于输出结果的顺序没有要求,时间复杂度要求在线性时间且只使用常数空间1. 用Map的解法这种方法比较直接,但是不符合线性时间和常数空间的要求。遍历的时候把每个数出现的次数存储到一个map中,再遍历一遍这个map找到出现次数为1的数即可。/*** 6ms 19....原创 2019-10-07 20:50:36 · 163 阅读 · 0 评论 -
LeetCode 153 Find Minimum in Rotated Sorted Array
找出有序旋转数组里的最小值假设将一个升序数组按照某个点进行旋转[0,1,2,3,4,5,6,7]可能变成[4,5,6,7,0,1,2],然后找出旋转后的数组中的最小值,数组中不含重复数值。1. 暴力法可以知道除了没有旋转的情况下,最小的数位于数组中间,因此从后面往前搜索,如果找到了nums[end-1] > nums[end],那么nums[end]就是最小的值。public int...原创 2019-10-08 09:07:48 · 148 阅读 · 0 评论