首页 > 编程语言 >算法性能技巧

算法性能技巧

时间:2022-08-16 12:33:53浏览次数:46  
标签:hash 技巧 nums int 性能 算法 num return target

算法性能提升总结

巧用hash表

利用hash,来进行映射,从而降低代码的复杂度,和冗余度

eg: 求两个数之和

class Solution:
    def twoSum(self, nums: List[int], target: int)->List[int]:
        """
        暴力方法实现时间复杂度为O(n*n)
        """
        n = len(nums)
        for i in range(n):
            for j in range(i  + 1, n):
                if nums[i] + nums[j] == target:
                    return [i, j]
        return []
    
    def two_sum(self, nums: List[int], target: int)->List[int]:
        """
        hash 表的实现,时间复杂度为O(n)
        """
        hash_table = dict()
        for i, num in enumerate(nums):
            if target - num in hash_table:
                return [hash_table[target - num, i]]
            hash_table.__setitem__(nums[i], i)
        
        return []

上述代码分析可知,使用hash表后,时间复杂度为O(n),相对于方法一,核心点在于怎么来优化找到target-num之后的索引
可以建立hash表,同时也可以利用python中list的内置函数index

标签:hash,技巧,nums,int,性能,算法,num,return,target
From: https://www.cnblogs.com/01black-white/p/16591147.html

相关文章

  • 算法性能分析
    算法性能分析时间复杂度分析递归算法的时间复杂度例题一:求x的n次方用一道题目,同样使用递归算法,有的写出了O(n)的代码,有的写出了O(longn)的代码时间复杂度为:O(n)最......
  • 雪花算法ID重复问题的解决方案
    1、雪花算法生成的Id由:1bit不用+41bit时间戳+10bit工作机器id+12bit序列号,如下图:集群部署的微服务,当随机的机器ID相同,刚好在同一毫秒生成ID,时间戳相同,并且序列号也相......
  • .NET性能优化-快速遍历List集合
    简介System.Collections.Generic.List<T>是.NET中的泛型集合类,可以存储任何类型的数据,因为它的便利和丰富的API,在我们平时会广泛的使用到它,可以说是使用最多的集合类。在......
  • LeetCode 反转链表算法题解 All In One
    LeetCode反转链表算法题解AllInOnejs/ts实现反转链表反转链表原理图解双指针,swap交换//反转双指针//swap:a=b;c=a;b=c;letprev:List......
  • 如何提升性能测试效能
    上周六应邀在天津devops峰会的质量内建专场做了一次分享,主题是《稳定性保障利器:全链路压测》。其中关于全链路压测对质量内建的意义,我做了一个总结,如下图所示。本文基于......
  • 算法总结
    今天放两道刚刷的关于链表的题packagecom.chenghaixiang.jianzhi2.day09;importjava.util.ArrayList;importjava.util.List;/***@author程海翔*@school......
  • 算法:螺旋矩阵
    问题给你一个m行n列的矩阵matrix,请按照顺时针螺旋顺序,返回矩阵中的所有元素。解决//采用宏观调度的方式//可以看作n层进行操作,每层从左上角、右下角的a......
  • 排序算法-冒泡、选择、堆、插入、归并、快速、希尔
    排序算法,默认是升序,左边的值是属于“小”值理解比较大小后的交换:当前元素cur和左边的元素cur-1,左边的比较大,就交换或者挪动array[cur]=array[cur-1];编码的区......
  • 算法: 超级洗衣机
    问题假设有n 台超级洗衣机放在同一排上。开始的时候,每台洗衣机内可能有一定量的衣服,也可能是空的。在每一步操作中,你可以选择任意m(1<=m<=n)台洗衣机,与此同时......
  • Pycharm5个非常有用的技巧
    PyCharm是一款非常强大的编写python代码的工具。掌握一些小技巧能成倍的提升写代码的效率,本篇介绍几个经常使用的小技巧。一、分屏展示当你想同时看到多个文件的时候:......