程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如果我们在 while 循环内有一个 while 循环,我们是否会乘以复杂性? (即使使用了指针)大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决如果我们在 while 循环内有一个 while 循环,我们是否会乘以复杂性? (即使使用了指针)?

开发过程中遇到如果我们在 while 循环内有一个 while 循环,我们是否会乘以复杂性? (即使使用了指针)的问题如何解决?下面主要结合日常开发的经验,给出你关于如果我们在 while 循环内有一个 while 循环,我们是否会乘以复杂性? (即使使用了指针)的解决方法建议,希望对你解决如果我们在 while 循环内有一个 while 循环,我们是否会乘以复杂性? (即使使用了指针)有所启发或帮助;

下面是一些代码,它接受一个整数 nums 和一个目标整数 target 的列表,并返回 nums 中的两个整数加起来为目标:

def twoSum(nums,target):
    pointer_stat = 0
    pointer_run = 1

    while pointer_stat < len(nums):

        while pointer_run and pointer_stat < len(nums):
            if nums[pointer_stat] + nums[pointer_run] == target:
                return [nums[pointer_run],nums[pointer_stat]]

            pointer_run +=1

        pointer_run = 1
        pointer_stat +=1


print(twoSum(nums,target))

我的问题是,或者更确切地说,我想确认以上是否为 O(n^2) 运行时?

我的推理是我们有两个指针指向列表中的每个整数,并且两个指针每个都会遍历列表一次(因此复杂度为 O(N)),并且因为我们在循环中有一个循环,我们乘以 O(N) 和 O(N) 得到 O(N^2)

空间复杂度为 O(1)

解决方法

您是对的,但是 O(n^2) 是最坏情况时间复杂度,因为您在循环中包含一个 return 语句,这可能导致提前退出双循环。

请注意,您可能需

while pointer_run < len(nums) and pointer_stat < len(nums):

代替

while pointer_run and pointer_stat < len(nums):

因为这会导致不停止循环(小于绑定比“and”强)并无限期运行。

,

您可以实际测试并亲自查看:

import matplotlib.pyplot as plt
x=[]
y=[]
n=[1]
def twoSum(nums,target):
    pointer_stat = 0
    pointer_run = 1
    iterations = 0

    while pointer_stat < len(nums):

        while pointer_run < len(nums) and pointer_stat < len(nums):
            if nums[pointer_stat] + nums[pointer_run] == target:
                return [nums[pointer_run],nums[pointer_stat]]
            iterations +=1 
            pointer_run +=1

        pointer_run = 1
        pointer_stat +=1
        x.append(len(nums))
        y.append(iterations)
    return True

for i in range(100):
    n.append(1)
    twoSum(n,10000)

plt.plot(x,y)
plt.xlabel('N')
plt.ylabel('Iterations')
plt.show()

如果我们在 while 循环内有一个 while 循环,我们是否会乘以复杂性? (即使使用了指针)

@H_801_47@

大佬总结

以上是大佬教程为你收集整理的如果我们在 while 循环内有一个 while 循环,我们是否会乘以复杂性? (即使使用了指针)全部内容,希望文章能够帮你解决如果我们在 while 循环内有一个 while 循环,我们是否会乘以复杂性? (即使使用了指针)所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。