python算法面试题(一)

在这里插入图片描述


1、给定一个包含红色、白色和蓝色、共n 个元素的数组nums,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。 我们使用整数 0、1 和 2 分别表示红色、白色和蓝色;必须在不使用库的sort函数的情况下解决这个问题。(解决:冒泡排序、选择排序)

不能是快速排序,因为快速排序改变了内存地址

选择排序

def select(nums):n=len(nums)for i in range(n):min_idx=ifor j in range(i+1,n):if nums[j]<nums[min_idx]:min_idx=jnums[i],nums[min_idx]=nums[min_idx],nums[i]
test=[4,6,3,8,1,2,5]
select(test)
print(test)

冒泡排序

def mappao(nums):n=len(nums)for i in range(n-1):flag=Falsefor j in range(0,n-1-i):if nums[j]>nums[j+1]:nums[j],nums[j+1]=nums[j+1],nums[j]flag=Trueif not flag:breaktest=[4,6,3,8,1,2,5]
mappao(test)
print(test)

2、编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。

def solution(nums):n=len(nums)i=0while i<n//2:s[i],s[n-i-1]=s[n-i-1],s[i]i+=1s = ["h","e","l","l","o"]
solution(s)
print(s)

3、给你一个字符串 s ,请你去除字符串中重复的字母,使得每个字母只出现一次。需保证 返回结果的字典序最小(要求不能打乱其他字符的相对位置)。

class Solution:def __init__(self,s,k):self.s=sself.k=kdef topKFrequent(self):d={}for item in self.s:if item not in d:d[item]=1else:d[item]+=1return ddef topKFrequent1(self):d=self.topKFrequent()d1 = sorted(d.items(), key=lambda x: x[1],reverse=True)d2={}for i in d1[0:self.k]:d2[i[0]]=i[1]return d2def topKFrequent2(self):d2=self.topKFrequent1()l=list(d2.keys())return ls=['o', 'l', 'l', 'e', 'h']
res=Solution(s,2)
print(res.topKFrequent2())

4、给定一个字符串 s ,找到 它的第一个不重复的字符,并返回它的索引 。如果不存在,则返回 -1 。

输入: s = “leetcode”
输出: 0

输入: s = “loveleetcode”
输出: 2

输入: s = “aabb”
输出: -1

def demo2(str1):#str=''for i in str1:if i not in str1[str1.index(i)+1:]:return str1.index(i)else:return -1s = "aabb"
res=demo2(s)
print(res)

5、给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。

输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。

def demo4(nums,target):nums1=[]for i in nums:if i<target:nums1.append(i)n=len(nums1)for j in range(n):for z in range(n-1):if nums1[j]+nums1[z]==target:return [z,j]
nums=[2,7,11,15,30,35]
res=demo4(nums,45)
print(res)

6、给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。

有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
每个右括号都有一个对应的相同类型的左括号。

class Solution:def isValid(self, s):dic = {'{': '}', '[': ']', '(': ')', '?': '?'}stack = ['?']for c in s:if c in dic:stack.append(c)elif dic[stack.pop()]!=c:return Falseprint(stack)return len(stack)==1res=Solution()
#s = "()"
s = "()[]{}"
#s = "(]"
print(res.isValid(s))

7、给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。

输入:nums = [3,2,2,3], val = 3
输出:2, nums = [2,2]

输入:nums = [0,1,2,2,3,0,4,2], val = 2
输出:5, nums = [0,1,4,0,3]

def demo5(nums,target):print(id(nums))for i in nums:if i==target:nums.remove(target)return len(nums),numsnums = [3,2,2,3]
val = 3
len,nums=demo5(nums,val)
print(len,nums)
print(id(nums))

2898355569792
2 [2, 2]
2898355569792

8、给你两个字符串haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回 -1 。

输入:haystack = “hello”, needle = “ll”
输出:2

class Solution:def strStr(self, haystack,needle):if needle is None:return 0for i in haystack:if i==needle[0]:return haystack.index(i)else:return -1s=Solution()
haystack = "hello"
needle = "ll"
haystack = "aaaaa"
needle = "bba"
res=s.strStr(haystack,needle)
print(res)

9、给定一个不含重复数字的数组nums ,返回其所有可能的全排列 。你可以 按任意顺序 返回答案。

示例 1:
输入:nums = [1,2,3]
输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]

示例 2:
输入:nums = [0,1]
输出:[[0,1],[1,0]]

示例 3:
输入:nums = [1]
输出:[[1]]

import itertools
def permute(nums):return list(itertools.permutations(nums))
nums = [1,2,3]
print(permute(nums))

[(1, 2, 3), (1, 3, 2), (2, 1, 3), (2, 3, 1), (3, 1, 2), (3, 2, 1)]

10、给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。字母异位词 是由重新排列源单词的字母得到的一个新单词,所有源单词中的字母通常恰好只用一次。

示例 1:
输入: strs = [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]
输出: [[“bat”],[“nat”,“tan”],[“ate”,“eat”,“tea”]]
示例 2:

输入: strs = [“”]
输出: [[“”]]
示例 3:

输入: strs = [“a”]
输出: [[“a”]]

class Solution:def groupAnagrams(self, strs):res=[]dic={}for s in strs:keys="".join(sorted(s))if keys not in dic:dic[keys]=[s]else:dic[keys].append(s)return list(dic.values())
s=Solution()
strs = ["eat", "tea", "tan", "ate", "nat", "bat"]
res=s.groupAnagrams(strs)
print(res)

[[‘eat’, ‘tea’, ‘ate’], [‘tan’, ‘nat’], [‘bat’]]

11、反转字符串中的单词

输入:s = “the sky is blue”
输出:“blue is sky the”
示例 2:

输入:s = " hello world "
输出:“world hello”
解释:反转后的字符串中不能存在前导空格和尾随空格。
示例 3:

输入:s = “a good example”
输出:“example good a”
解释:如果两个单词间有多余的空格,反转后的字符串需要将单词间的空格减少到仅有一个。

def demo7(strs):li=strs.split(" ")[::-1]li1 = []print(li)for item in li:if bool(item) is not False:li1.append(item)l=' '.join(li1)return l
res=demo7(s)
print(res)

12、给你一个数组,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。

输入: nums = [1,2,3,4,5,6,7], k = 3
输出: [5,6,7,1,2,3,4]
解释:
向右轮转 1 步: [7,1,2,3,4,5,6]
向右轮转 2 步: [6,7,1,2,3,4,5]
向右轮转 3 步: [5,6,7,1,2,3,4]

def demo8(nums,k):j=0while j<k:nums.insert(0,nums[-1])nums.pop(-1)j+=1return numsnums = [1,2,3,4,5,6,7]
k = 3
res=demo8(nums,k)
print(res)

[5, 6, 7, 1, 2, 3, 4]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/9470.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实用版ChatBing论文阅读助手教程+新测评

实用版ChatBing论文阅读助手新测评 AI进化&#xff08;更新&#xff09;的速度太快了&#xff01;距离我上次的【Chat嘴硬&#xff01;基于NewBing的论文调研评测报告】&#xff0c;才四天&#xff0c;它已经进化到快能用的地步了&#xff01; 这次是我刷B站看到热门推荐&…

ChatGPT与Midjourney:用AI在Youtube和抖音上疯狂传播

释放被动收入和病毒式增长:2023年利用人工智能、YouTube短片、抖音、ChatGPT和Midjourney的力量&#xff0c;解锁被动收入和。病毒式增长:2023年利用人工智能、YouTube短片、抖音、ChatGPT和Midjourney的力量。你渴望挖掘YouTube短片和抖音的病毒潜力吗&#xff1f;想利用ChatG…

电脑使用代理连接,关掉代理之后连接不了网络的解决方法

关掉IP代理之后&#xff0c;IE浏览器代理状态还在&#xff0c;没有取消。需要取消的话&#xff0c;方法是点击IE浏览器上面的工具选项&#xff0c;如果是IE9及以上的版本&#xff0c;点击IE浏览器右上角的小齿轮图标。 具体的操作是&#xff1a;工具-Internet选项-连接-局域网设…

Huggingface的from pretrained的下载代理服务器方法设置

笔者需要用到下载预训练模型&#xff0c;但是此时TUNA和BSFU的镜像已经停止了&#xff0c;希望有可用的途径下载到位于网上的预训练模型。 此时查找了huggingface的文档Configuration 根据文档&#xff0c;该参数proxies (Dict, optional) A dictionary of proxy servers to …

内网服务器设置代理访问外网

内网服务器设置代理访问外网 背景 首先需要两台云服务器&#xff0c;其中服务器A无公网IP&#xff0c;服务器B有公网IP。 AB公网IP/110.40.255.180内网IP172.17.64.11172.17.64.17 配置A代理 直接配置环境变量即可。 cd /etc/profile.d/ vim proxy.sh进入proxy.sh文件后&…

HttpClient内外访问外网,添加代理(二)

HttpClient内外访问外网&#xff0c;添加代理&#xff08;二&#xff09; 问题背景HttpClient工具类调用url实例&#xff0c;附源码&#xff08;一&#xff09;HttpClient内外访问外网&#xff0c;添加代理&#xff08;二&#xff09; 项目搭建Lyric&#xff1a; 你已走得很远 …

Thinkphp5设置反代理

目的&#xff1a;节省OSS外网访问流出流量 购买了阿里云OSS的存储资源包后&#xff0c;发现还需要外网访问流出费用&#xff0c;内网访问是免费的。 百度得相关方法&#xff0c;即设置反向代理。前提是服务器和OSS存储桶需要属于同一个地区。 一、环境 服务器环境 Nginx 1.20…

端口转发与代理工具 内网代理 内网反弹代理

目录 一、LCX 二、nc 反弹 三、socks代理工具 四、frp 内网穿透利器 五、ngrok 内网穿透 理论上&#xff0c;任何接入互联网的计算机都是可访问的&#xff0c;但是如果目标主机处于内网&#xff0c;而我们又想和该目标主机进行通信的话&#xff0c;就需要借助一些端口转发…

Langchain对设置代理地址

可以通过如下方式对ChatOpenAI设置代理地址api_base from langchain.chat_models import ChatOpenAI import os OPENAI_API_BASEhttps://xxx/v1 openaichat ChatOpenAI(model_name"gpt-3.5-turbo", api_baseOPENAI_API_BASE) 参考源码如下 langchain源码 openai源…

巧用chatGPT解决生产者消费者问题

背景 学校的操作系统课程布置了一项实验&#xff0c;是关于生产者消费者问题的&#xff0c;一开始毫无头绪&#xff0c;通过搜索引擎搜索出来的内容也五花八门&#xff0c;之后就想着能不能借助chatGPT解决这一个实验。 实验要求 1.编写程序解决生产者与消费者问题&#xff…

用户注册页面接入短信验证功能的注意点?

网站或者app的用户注册页面&#xff0c;在接入手机短信验证接口的时候&#xff0c;多少都会遇到一些问题&#xff0c;这里就将这些问题及处理方案分享一下&#xff1a; 一、注册页面被刷 如果注册页面未做必要的防范的话&#xff0c;页面上的短信接口很容易被刷&#xff0c;造…

tp短信验证码(配置以及使用)

阿里云短信验证码 今天搞了一个短信的验证码&#xff0c;用的是阿里云的平台&#xff0c;https://cn.aliyun.com/ss/?k%E7%9F%AD%E4%BF%A1api&#xff0c;免费的验证码测试&#xff0c;不用充钱了。阿里的api有很多也有很多免费测试的接口&#xff08;其实冲一块钱&#xff0c…

tp6 短信发送验证码

更改配置文件 app.php 里添加 //前端模块default_module >home,在config文件下cache.php里面去添加redis配置 // 缓存连接方式配置stores > [file > [// 驱动方式type > File,// 缓存保存目录path > ,// 缓存前缀prefix > ,// 缓存有效期…

有了域名想绑定域名邮箱?拥有域名后,如何免费绑定邮箱呢?如何使用【昵称@你的.域名】收发邮件

有了域名想绑定域名邮箱&#xff1f;拥有域名后&#xff0c;如何免费绑定邮箱呢&#xff1f;如何使用【昵称你的.域名】收发邮件 前提&#xff1a; 如文章标题&#xff0c;此篇文章的前提是“已经拥有了自己的域名” 有了自己的域名后&#xff0c;采用本篇文章的方式&#xf…

ios系统邮件怎么绑定QQ邮箱

一、做准备工作&#xff0c;开启IMAP/SMTP服务&#xff0c;怎么开启的教程就在↓如何开启QQ邮箱IMAP/SMTP服务&#xff1f;分享开启方法 - 三好电商网 然后你就获得了一串授权码 二、选择“邮件”app打开以下页面 三、选择QQ邮箱打开以下页面 四、电子邮件就填你的QQ邮箱账号…

其他邮箱如何绑定到常用的邮箱

背景介绍&#xff01; 一般我们国人最最最常用的邮箱就是QQ邮箱了&#xff0c;能推送到QQ、能搞成自己喜好的风格等等功能确实值得青睐。 最大的优点还是&#xff1a;可以及时收到别人发来的消息 当然&#xff0c;还有其他的邮箱各有各自的用处。例如大学生母校为学生准备的…

ChatGPT 掀起抢人大战,提示词工程师年薪近34万

火爆的ChatGPT ChatGPT 引发的资本盛宴还在持续上演&#xff0c;每个人都在谈论它背后的AI技术&#xff0c;每个人都在担心自己会不会被AI替代&#xff0c;但很少有人注意到&#xff0c;这项技术带来的新就业岗位。 这种岗位被称为“提示工程师”(Prompt Engineer)&#xff0c;…

ChatGPT之父传奇:8岁会编程,16岁出柜,2个月做到月活过亿

雷递网 雷建平 2月5日 聊天机器人ChatGPT的爆火&#xff0c;推出仅仅2个月&#xff0c;就达到月活过亿&#xff0c;成为历史上增长最快的消费者应用程序。 根据Sensor Tower数据&#xff0c;TikTok在全球推出后用约9个月时间达到1亿用户&#xff0c;Instagram用了30个月才达到同…

最爱 ChatGPT,每天编码 300 行,月薪 8k-17k 占比骤减!揭晓中国开发者真实现状...

作者 | 郑丽媛 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 瞬息万变的技术圈&#xff0c;似乎随时都在给予技术人数不清的机遇与挑战&#xff1a; 过去一年&#xff0c;频繁出圈的虚拟人曾一度将元宇宙的热度推至巅峰&#xff0c;如今却逐渐“悄无声息”&…

ChatGPT爆火至今,国内十余家知名公司竞相入局!高质量文本标注需求不断

2022年底OpenAi推出chatGpt&#xff0c;爆火至今。 据《华尔街日报》报道&#xff0c;百度将于3月16日左右推出类似ChatGPT的聊天机器人。科大讯飞预计今年5月落地ChatGPT相关AI学习机 。与此同时&#xff0c;更有腾讯、华为、字节、京东、360、网易、快手等 10 余家企业宣布有…