刷题
幸运的蜗牛崽
这个作者很懒,什么都没留下…
展开
-
时间复杂度空间复杂度分析
四件套是什么: 1.弄清要解决的问题,整理好思路 2.思考所有能解决问题的方法,同时比较这些方法的时间和空间复杂度 3.选择最优的解决方案 4.验证问题的结果的正确性 时间复杂度 算法 时间复杂度 二分查找 logn 二叉树遍历 n(所有节点仅遍历一次) 二维矩阵 logn 归并 nlogn 空间复杂度: 数组长度 递归树的深度 编程常用工具 基本功+编程指法 ...原创 2020-08-03 17:31:30 · 104 阅读 · 0 评论 -
链表系列1
1.反转链表 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL # Definition for singly-linked list. # class ListNode(object): # def __init__(self, x): # self.val = x # self.next = None class Solution(object):转载 2020-07-25 21:57:30 · 77 阅读 · 0 评论 -
数组类和字符串类系列2
1.寻找两个正序数组的中位数 给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。 请你找出这两个正序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。 你可以假设 nums1 和 nums2 不会同时为空。 解题思路: 这个题是hard,变态在他需要 O(log(m + n)),一般log的,大家会想到二分折半,木有错,这个需要这种思路,看了好多大牛的方案,最终将问题转换为***寻找第k小数(折半剔除)*** key: 每次剔除的都在第k小数左边 n-(n转载 2020-07-25 16:33:09 · 93 阅读 · 0 评论 -
数组类和字符串系列1
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] 暴力法,时间复杂度时间复杂度:O(n^2) class Solution(object): def twoSum(self, nums, ta转载 2020-07-23 11:01:30 · 90 阅读 · 0 评论