方法1:迭代 m、n为两个有序链表的长度 时间复杂度:O(m+n) 空间复杂度:O(1) class ListNode: def __init__(self, val=0, next=None): self.val = val self.next = next class Solution: def ...
分类:
其他好文 时间:
2020-06-25 09:54:49
阅读次数:
43
方法一: 哈希表 时间复杂度:O(n) 空间复杂度:O(n) class Solution: def hasCycle(self, head: ListNode) -> bool: dict = {} while head: if head in dict: return True else: di ...
分类:
其他好文 时间:
2020-06-25 09:26:14
阅读次数:
60
🤔:为什么不能直接扫描一边的时候清零? 💡:会搞混**“修改产生的0”和“矩阵中原有的0”**,遍历的后面可能会把你前面修改的0当成矩阵原有的0 方法一:开辟一个矩阵标记要置0的位置,空间复杂度为$O(mn)$。代码略。 方法二:事实上我们开辟的标记矩阵中存在很大的空间浪费,我们标记的时候关心的 ...
分类:
其他好文 时间:
2020-06-24 23:56:56
阅读次数:
110
啊,是较简单的一题呢。有一些操作再熟悉一下。 思路就是建立一个HashMap用于计数,然后再遍历就行。时间空间复杂度都是ON 自己写的代码如下: class Solution { public int firstUniqChar(String s) { HashMap<Character,Integ ...
分类:
其他好文 时间:
2020-06-24 23:55:48
阅读次数:
113
前提条件 时间复杂度:O(n) 空间复杂度:O(1) 思路 若数组长度为偶数,那么其中奇数元素和偶数元素的个数相等;若数组长度为奇数,那么其中奇数元素和偶数元素的个数相差 1;我们先校验奇数元素个数和偶数元素个数是否合法,若不合法,则直接抛出异常; 根据数组中奇数元素的个数和偶数元素的个数的大小来判 ...
分类:
编程语言 时间:
2020-06-24 00:43:24
阅读次数:
62
前言 递归,是一个非常重要的概念,也是面试中非常喜欢考的。因为它不但能考察一个程序员的算法功底,还能很好的考察对时间空间复杂度的理解和分析。 本文只讲一题,也是几乎所有算法书讲递归的第一题,但力争讲出花来,在这里分享四点不一样的角度,让你有不同的收获。 时空复杂度的详细分析 识别并简化递归过程中的重 ...
分类:
其他好文 时间:
2020-06-21 11:42:43
阅读次数:
68
一、如何分析一个“排序算法” 从三个维度进行评价和分析: 1. 排序算法的执行效率 a. 最好情况、最坏情况、平均情况时间复杂度 b. 时间复杂度的系统、常数、低阶 c. 比较次数和交换(或移动)次数 2. 排序算法的内存消耗 用空间复杂度来衡量。 原地排序算法,特指空间复杂度是O(1)的排序算法。 ...
分类:
编程语言 时间:
2020-06-19 11:53:01
阅读次数:
41
一、题目描述:一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。 例如: 输入:nums = [4,1,4,6] 输出:[1,6] 或 [6,1] 输入:nums = [1,2,10,4,1,4,3,3] 输出:[2,10] 或 [10,2] 二、要 ...
分类:
编程语言 时间:
2020-06-19 00:49:36
阅读次数:
63
前言 递归,是一个非常重要的概念,也是面试中非常喜欢考的。因为它不但能考察一个程序员的算法功底,还能很好的考察对时间空间复杂度的理解和分析。 本文只讲一题,也是几乎所有算法书讲递归的第一题,但力争讲出花来,在这里分享四点不一样的角度,让你有不同的收获。 时空复杂度的详细分析 识别并简化递归过程中的重 ...
分类:
其他好文 时间:
2020-06-17 20:25:00
阅读次数:
46
思路 借助辅助栈保存当前栈最小值。 入栈:如果入栈元素小于最小栈的栈顶元素,则同时加入最小栈;否则,将最小栈栈顶元素再次加入最下栈 出栈:同时弹出两个栈中元素 代码 时间复杂度:O(1) 空间复杂度:O(1) class MinStack { stack<int> st1; stack<int> s ...
分类:
其他好文 时间:
2020-06-17 20:02:45
阅读次数:
47