描述 给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 示例1 输入: "babad" 输出: "bab" 注意: "aba" 也是一个有效答案。 示例2 输入: "cbbd" 输出: "bb" 解答 分析 时间复杂度:O(n^2),空间复杂度:O(n) ...
分类:
编程语言 时间:
2019-12-16 22:10:57
阅读次数:
88
数据结构之 时间复杂度/空间复杂度 一)、复杂度: 复杂度: 又称渐进复杂度 。 分类 :1).时间复杂度。 ? 2).空间复杂度。 时间复杂度: T(n) = O(f(n)), 表示代码的执行时间和代码的执行次数成正比关系。 T(n): 代码的执行时间。 f(n): 代码的执行次数。 n: 数据规 ...
分类:
其他好文 时间:
2019-12-16 20:56:21
阅读次数:
89
代码: public class Djkstra { /* 单源最短路径 时间复杂度 O(ElogV) ,主要取决于优先队列的实现 空间复杂度 O(V) djkstr 和普通的 广度优先非常相似,唯一多考虑了一点:边有不同的权重(不再一直是1了) 基于普通广度优先思想,到达某个顶点的最短距离 = 到 ...
分类:
其他好文 时间:
2019-12-14 22:39:15
阅读次数:
132
1、算法与数据结构的关系: (1)数据结构+算法=程序 数据结构是对数据的描述,算法是对数据的操作,因此:数据结构+算法=程序 算法侧重于对解决问题的方法的描述。 程序是对一个算法的具体实现。 (2)联系: 数据结构是算法设计的基础。 算法的操作对象是数据结构。 数据结构设计主要是选择数据的存储方式 ...
分类:
编程语言 时间:
2019-12-13 20:01:53
阅读次数:
81
环形链表题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/linked-list-cycle-ii目前考虑到两种解法,但都需要辅助空间,第一种O(n)第二种O(1)第一种借助辅助字典进行判断将走过的节点都记录在字典中,通过查询字典的key值是否存在来确定是否有环时间复杂度为O(n),空间复杂度为O(n)代码如下:#-*-coding:utf-
分类:
编程语言 时间:
2019-12-08 23:17:56
阅读次数:
149
排序算法: 快速排序: 时间复杂度O(nlogn) 空间复杂度1 适用于大多数排序,性能很高 不稳定排序 步骤描述: 取数组首元素为基准值。设置一个i指针指向首元素,再设置一个j指针指向尾元素。在i<j的前提下。从j开始往回找,遇到第一个比基准值小的数,将该元素与基准值交换,i++;再从i往后找,遇 ...
分类:
编程语言 时间:
2019-12-08 10:42:15
阅读次数:
76
LeetCode_617 题目描述:合并二叉树 我的解法:两个节点均有值,则值相加;仅有一个值,则为该值;否则为空; 递归实现:返回值为节点,终止条件为二者节点均为空,递归条件为res -> left = mergeTree(t1->left, t2->left); res->right = mer ...
分类:
其他好文 时间:
2019-12-07 23:20:33
阅读次数:
114
前言:不仅仅要实现,更要提升性能,精益求精,用尽量少的时间复杂度和空间复杂度解决问题。 【程序88】给定一个未排序的整数数组,找出其中没有出现的最小的正整数。 /** * 给定一个未排序的整数数组,找出其中没有出现的最小的正整数。 */ public class Subject88 { public ...
分类:
编程语言 时间:
2019-12-07 17:49:44
阅读次数:
92
前言:不仅仅要实现,更要提升性能,精益求精,用尽量少的时间复杂度和空间复杂度解决问题。 【程序68】将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 public class ListNode { int val; ListNode next; ListN ...
分类:
编程语言 时间:
2019-12-07 16:03:27
阅读次数:
85
递归是算法中一种非常重要的思想,应用也很广,小到阶乘,再在工作中用到的比如统计文件夹大小,大到 Google 的 PageRank 算法都能看到,也是面试官很喜欢的考点
最近看了不少递归的文章,收获不小,不过我发现大部分网上的讲递归的文章都不太全面,主要的问题在于解题后大部分都没有给出相应的时间/空间复杂度,而时间/空间复杂度是算法的重要考量!递归算法的时间复杂度普遍比较难(需要用到归纳法等),换句话说,如果能解决递归的算法复杂度,其他算法题题的时间复杂度也基本不在话下。另外,递归算法的时间复杂度不少是不能接受的,如果发现算出的时间复杂度过大,则需要转换思路,看下是否有更好的解法 ,这才是根本目的,不要为了递归而递归!
分类:
其他好文 时间:
2019-12-07 01:26:50
阅读次数:
143