首页 > 其他分享 >肖sir__面试笔试题__阿里笔试题

肖sir__面试笔试题__阿里笔试题

时间:2023-02-08 17:24:34浏览次数:31  
标签:__ sir dict1 target nums 笔试 num result

第一题:

#给定一个无序数组nums和一个目标值target,返回数组中两个元素的和为target的算法,时间复杂度为O(1);
def func1(nums,target):
    dict1 = {}
    for i in range(len(nums)):
        num = target - nums[i]
        if num not in dict1:
            dict1[nums[i]] = i
        else:
            return (dict1[num],i)

 

===================================

//给定一个整数数组 nums 和一个整数目标值 target,请在该数组中找 和为目标值 target 的三个整数,并返回它们的数组下标?

方法1:

class Foo(object):

    @staticmethod
    def sum(nums, target):
        result = []
        n = len(nums)
        for i in range(n):
            for j in range(i+1,n):
                for k in range(j+1,n):
                    num = nums[i] + nums[j] +nums[k]
                    if num == target:
                        result.append(i)
                        result.append(j)
                        result.append(k)
                        break
        return result

n = [5,1,2,4]
print(Foo.sum(n,7))

 

方法2:

可以用列表推导式
nums = [1,2,3,4,5,6,7,8,9]
target=9
list1 = [(x,y,z) for x,x1 in enumerate(nums)  for y,y1 in enumerate(nums) for z,z1 in enumerate(nums) if x1!=y1!=z1 and x1+y1+z1==9]
print(list1)

 

方法3:

def func1(nums,target):
    i = 0
    while i < len(nums)-2:
        j = i+1
        k = len(nums)-1
        while j < k:
            if nums[i]+nums[j]+nums[k] > target:
                k -= 1
            elif nums[i] + nums[j] + nums[k] < target:
                j += 1
            else:
                return [i,j,k]
        i += 1

nums = [1,2,2,3,5]
a = func1(nums,7)

标签:__,sir,dict1,target,nums,笔试,num,result
From: https://www.cnblogs.com/xiaolehong/p/17102557.html

相关文章

  • java8排序stream().sorted()
    默认升序 先以年龄升序排序年龄相同是按分数降序List<Student>list=userList.stream().sorted(Comparator.comparing(Student::getAge).thenComparing(Student::g......
  • 初识Sentry前端监控
    前言今早偶尔读到方神发表了一篇sentry(一)初探 的文章,正是我最近需要的,于是自己动手丰衣足食,搭建了一个属于自己的基于Sentry的前端监控平台。为什么要做前端监控?相信每......
  • Linux几种网络模式介绍
    简单介绍Linux几种网络模式​ 虚拟化层次:​ 打开vmware虚拟机,我们可以在选项栏的“编辑”下的“虚拟网络编辑器"中看到VMnet0(桥接模式)、VMnet1(仅主机模式)、V......
  • Linux 安装 go 环境
    目录安装运行go程序编译go程序安装wgethttps://dl.google.com/go/go1.19.5.linux-amd64.tar.gztarzxvfgo1.19.5.linux-amd64.tar.gz-C/usr/local/#vim/etc/pr......
  • gateway配置详解
    Gateway网关,通过检查请求地址匹配相应的服务请求,访问时直接请求网关的请求地址,会转发到相应的服务;可通过yml文件配置或者代码配置pom:<dependency>......
  • TypeScript入门
    TypeScript入门​一、什么是TypeScriptJavaScript的超集,可以编译成JavaScript。添加了类型系统的JavaScript,可以适用于任何规模的项目。TypeScript特性类型系统从......
  • Linux之ssh远程连接
    Linux之ssh远程连接一、下载远程连接工具XshellXshell是一种远程连接工具,可用来远程连接虚拟机。Xshell免费版下载地址输入名字和邮箱,可以在邮箱看到下载Xshell的链接......
  • Spring30 - Resource资源读取
    资源操作:Resources8.1、SpringResources概述Java的标准java.net.URL类和各种URL前缀的标准处理程序无法满足所有对low-level资源的访问,比如:没有标准化的URL实现可用......
  • 在VSCode中的markdown里插入混淆矩阵HTML源码
    最近在看论文的时候习惯用markdown记录笔记,就有了如题的需求。由于原生的markdown不能合并表格的单元格(或者我不知道,OS:真菜),但是markdown支持HTML,直接写一段代码扔进去就......
  • Linux命令-top
    top命令总览系统时间相关依次显示了系统当前时间、系统到目前为止已运行的时间、当前登录系统的用户数量平均负载系统负载(任务队列的平均长度)三个值分别为1分钟......