首页 > 其他分享 >第一周:时间复杂度该怎么看?

第一周:时间复杂度该怎么看?

时间:2024-06-17 19:34:18浏览次数:18  
标签:怎么 第一周 int 复杂度 练习 算法 时间 代码

文章小结

写在最前面,本文主要介绍了如何能快速判断代码段的时间复杂度(记忆模版),如果您寻找的并非此类文章则不必继续阅读后文。

1.算法时间复杂度是什么

 官方定义:算法在编写成可执行程序后,运行时所需要的时间资源。  解读:可执行程序运行所需要时间的一个量化指标。例如O(1),常量级。

2. 常见的时间复杂度

  • O(1) :常量级
  • O(n):线性
  • O(logn):对数
  • O(nlogn)
  • O(n^2):平方
  • O(k^n):指数级
  • O(n!):阶乘级别

3.如何判断代码的算法时间复杂度

首先我们假设执行一行代码需要的时间为1, 判断代码时间复杂度就是是看算法执行次数和n的关系。

例如:下面代码的时间复杂度为O(1)

String dogName = "小黄";
Systerm.out.print("this is a dog " + dogName);

 

例2: 下面代码片段中,代码执行次数为n,代码时间复杂度为O(n)。

for (int i=0; i<n; i++) {
    Systerm.out.print("get num " + i);
}

 

4.如何快速判断代码时间复杂度。

想要快速判断代码片段时间负载度有两个方法,记忆和公式。这里我们仅讨论记忆,记住代表性的模板就可以快速判断时间复杂度

// 时间复杂度:O(1)
int a = 1;
int b = 2;
Systerm.out.print("sum is" + (a+b));

// 时间复杂度:O(n)
for (int i=0; i<n; i++) {
    Systerm.out.print("get num " + i);
}

// 时间复杂度:O(n^2)
for (int j=0; j<n; i++) {
     for (int i=0; i<n; i++) {
       Systerm.out.print("get num " + (i+ j));
   }
}
// 时间复杂度:O(logn)
for (int i=0; i<n; i=i*2) {
    Systerm.out.print("get num" + i);
}

// 时间复杂度:O(2^n)
int fib(int n) {
  if (n<=2) return n; 
  return fib(n-1) + fib(n-2);
}

O(1)、O(n)、O(n^2) 相对比较容易理解,这里不在赘述。

分析下O(logn)是怎么得到的。
2^0 = 1
2^1 = 2
2^2 = 4
.....
2^k = n;  所以需要执行k次。k=log2n,系数可以忽略所以时间复杂度为 O(logn)。

 

通过图例解释下O(k^n)指数级算法复杂度

 

 

 

5.延展内容。如何刷题(LeetCode)

区分业余和职业的最大区别在于是否有专项联系。比如乒乓球运动员,专项发球练习,接球练习等等等。刷法也是一样,不能只做一遍,针对弱项要多练。

  •  做题方法
    • 多看几遍题,或者和面试官去恩人,确保自己的理解是正确的。
    • 想所有可能的解题方法,同时比较时间和空间复杂度。
    • 做题
    • test case
  • 切题方法
    • 第一遍
      • 5分钟。读题+思考。
      • 直接看答案。注意多解法,对比。
      • 背诵+默写好的答案。
    • 第二遍
      • 马上默写背诵的答案-->提交LeetCode (寻找反馈)
      • 多种解法对比体会。
    • 第三遍
      • 24小时后重新做一遍
      • 针对不同解法的不熟练的要专项练习
    • 第四遍
      • 一周后反复练习相同的题目
    • 第五遍
      • 面试前反复练习

 

标签:怎么,第一周,int,复杂度,练习,算法,时间,代码
From: https://www.cnblogs.com/wangxiangstudy/p/18251819

相关文章

  • 近期火热的巴西推广casino游戏推广快手视频kwai广告怎么做
    近期火热的巴西推广casino游戏推广快手视频kwai广告怎么做在巴西这个充满活力的国度,casino游戏一直以其独特的魅力吸引着众多玩家的关注。近年来,随着数字媒体的兴起,越来越多的游戏开发者选择通过快手视频kwai平台投放广告,以拓展巴西市场的用户基础。本文将详细介绍在巴西推广c......
  • Midjourney和stable diffusion到底有什么区别?要怎么选?
    前言目前AIGC领域里最强的两款软件,Midjourney(MJ)和stablediffusion(SD)到底有什么区别?我们应该怎么选择呢?这是很多新手朋友经常问的问题,这篇文章对此问题专门进行解释说明。视频版在aigc界的地位MJ和SD在aigc界都算是“顶流”的存在。基本上没有能与之抗衡的其他主流产品......
  • 电脑屏幕录制怎么录制?这7个录制屏幕的技巧值得一试!
    电脑屏幕录制怎么录制?屏幕录制是什么? 简单地说,电脑屏幕录制就是在你的设备屏幕上录制视频。它可以捕捉屏幕上正在发生的事情,并让你与其他人分享。记录电脑、手机或笔记本电脑屏幕的原因有很多:1.一个简单的屏幕录制可以用来向潜在客户展示你的产品是如何工作的。2.在远程......
  • 针对数据出入境场景 怎么选择合适的跨国文件传输方案?
    数据出入境已经是一种非常普遍的业务场景,数据在跨国流转过程中,会面临种种问题和风险,所以寻找一套合适的跨国文件传输方案,是企业的当务之急!数据跨国传输可能会面临得挑战有如下几个:1、法律法规限制:不同国家和地区可能有不同的数据保护法律法规,要求在数据跨国传输过程中必须满足......
  • 怎么控制多个存储设备的访问权限?数据安全存储方案来了
    数据安全存储是指将数据以安全的方式存储在存储系统中,以确保数据的机密性、完整性和可用性。要控制数据安全存储的权限以保障安全,可以采取以下措施:访问控制列表(ACLs):使用ACLs来定义对存储数据的访问权限。ACLs允许你为每个文件或目录指定哪些用户或组有权访问它们,以及何种类型的......
  • 云租户数据交互时会遇到哪些问题?要怎么解决?
    云租户(CloudTenants)是指在云计算环境中使用云服务提供商所提供的资源和服务的用户。云租户数据交互时,通常会使用各种云计算平台和服务提供商所提供的工具和服务来进行数据传输。云租户在传输数据时可能会面临以下一些问题:1、安全性:数据传输过程中可能存在安全隐患,如数据泄露......
  • 人工智能入门-第一周
    人工智能入门-第一周神经网络什么是神经网络?神经网络(NeuralNetwork)是一种模拟生物神经系统的计算模型,由大量相互连接的人工神经元组成。这些神经元通过权重连接成多个层次,从而可以学习和处理复杂的非线性关系。神经网络的基本结构神经元通常包含三层:输入层(InputLayer):接......
  • 音频信号处理入门-第一周
    音频信号处理学习-第一周音频掩蔽效应音频掩蔽效应(AudioMaskingEffect)是指在特定条件下,一个声音(通常称为掩蔽声,Masker)能够掩盖另一个声音(通常称为被掩蔽声,Maskee),使得后者在听觉上不容易被听到或完全听不到的现象。音频掩蔽效应在听觉处理的过程中十分常见,并且在音频压缩和......
  • 遇到网页不让复制粘贴该怎么办?
    当我们在网上看到一些有用的信息时,通常会想要复制粘贴以便稍后查看或与他人分享。但是,有些网页使用了JavaScript或其他技术来防止用户复制其内容。这可能会导致一些不便,但有几种方法可以尝试解决这个问题。下面我们将讨论几种方法来应对这种情况。第一招:查看源代码我们在网......
  • 网络流复杂度证明
    EK(转)dinic(转)EK(未完)以此份代码为例//P3376【模板】网络最大流//EK算法#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;constintN=410,M=10010;intn,m,S,T,h[N],e[M],w[M],ne[M],idx,pre[N],dist[N],st[N],ans,g[N][N];voidadd(inta,intb,in......