算法题
面试训练算法题
一只学技术的狮子
这个作者很懒,什么都没留下…
展开
-
最长连续序列_leetcode算法题
给定一个未排序的整数数组,找出最长连续序列的长度。 要求算法的时间复杂度为 O(n)。 示例: 输入: [100, 4, 200, 1, 3, 2] 输出: 4 解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。 //java中可以使用集合set class Solution { public int longestConsecutive(int[] nums) { ...原创 2020-05-03 12:33:53 · 249 阅读 · 0 评论 -
最长子串
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 这个代码有待改进,重要的是内存使用。 class Solution { public int lengthOfLongestSubstring(String s) { Set<Cha...原创 2020-05-02 16:53:34 · 181 阅读 · 0 评论 -
合并两个升序链表_leetcode题目
将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 一开始的思路是不停的创建新的节点,放入值,运行发现时间只超过了60%的人,后来发现两个原链表可以破坏掉,虽然不太好,万一想要原来链表的信息就不再有了,修改后直接做节...原创 2020-05-01 14:38:51 · 836 阅读 · 0 评论 -
山峰问题_二分查找
给你一个 山脉数组 mountainArr,请你返回能够使得 mountainArr.get(index) 等于 target 最小 的下标 index 值。 如果不存在这样的下标 index,就请返回 -1。 输入:array = [1,2,3,4,5,3,1], target = 3 输出:2 解释:3 在数组中出现了两次,下标分别为 2 和 5,我们返回最小的下标 2。 输入:array =...原创 2020-04-29 14:31:42 · 371 阅读 · 0 评论 -
链表相加_栈
给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。如果输入链表不能修改该如何处理?换句话说,你不能对列表中的节点进行翻转。 示例: 输入:(7 -> 2 -> 4 -> 3) + (5 -> 6 -> 4) 输出:7 -> 8 ...原创 2020-04-28 15:35:11 · 127 阅读 · 0 评论 -
二分查找_leetcode算法题
按照升序排序的数组在预先未知的某个点上进行了旋转; 搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。 你可以假设数组中不存在重复的元素。 你的算法时间复杂度必须是 O(log n) 级别。 输入: nums = [4,5,6,7,0,1,2], target = 0 输出: 4 示例 2: 输入: nums = [4,5,6,7,0,1,2], target = ...原创 2020-04-27 17:06:54 · 121 阅读 · 0 评论 -
两个有序数组的中位数
两个大小为 m 和 n 的有序数组 nums1 和 nums2。 找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。 假设 nums1 和 nums2 不会同时为空。 自己的思路:数组合并,两个数组两个游标,都向前走,小的放进去,最后去中间的数据。 话不多说,上代码。 class Solution { int i=0,j=0,count=0; pu...原创 2020-04-26 13:41:03 · 112 阅读 · 0 评论 -
合并k个排序链表_分治求法_leetcode题目
合并 k 个排序链表,返回合并后的排序链表 例如123 168 265 结果11235668 问题做出思考后,决定使用分治求发,多个链表划分为两两为一组合并。 直接上代码: /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ...原创 2020-04-26 12:51:51 · 109 阅读 · 0 评论