leetcode题目整理,基本上不是最优解

1. 回文数
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例 1:
输入: 121
输出: true 示例 2:
输入: -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。 示例 3:
输入: 10
输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数。
# 思路:将整数转化为字符串,用字符串切片的方法,步长取-1,将字符串反转,与原数比较
def func(x):
if x == int(str(x)[::-1]):
return True
else:
return False res = func(121)
2. 两数之和
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 示例:
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
# 思路:用目标值target减去数组中的一个值,比较 得到的值是否在数组nums中,若在就返回这两个数的索引值
def two_sum(nums, target):
for i in range(len(nums)): # for 循环遍历,取出nums的索引值
sub = target - nums[i]
if sub in nums:
res = nums.index(sub) # 获取另一个值的索引
if res != i:
return [i, res]
3. 整数反转
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例 1:
输入: 123
输出: 321 示例 2:
输入: -123
输出: -321 示例 3:
输入: 120
输出: 21 注意:
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−2**31, 2**31 − 1]。
请根据这个假设,如果反转后整数溢出那么就返回 0。
3. 整数反转
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例 1:
输入: 123
输出: 321 示例 2:
输入: -123
输出: -321 示例 3:
输入: 120
输出: 21 注意:
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−2**31,  2**31 − 1]。
请根据这个假设,如果反转后整数溢出那么就返回 0。
# 思路:先转化为列表反转,用reverse方法。负整数有负号,先判断
def int_reverse(x):
lt = list(str(x))
if lt[0] == '-':
lt.reverse()
lt2 = lt[0:len(lt) - 1] # 负整数反转之后,不取"-"
res = -int(''.join(lt2))
if res < -2 ** 31:
return 0
else:
return res else:
lt.reverse()
lt2 = lt[0:len(lt)]
res = int(''.join(lt2))
if res > 2 ** 31 - 1:
return 0
else:
return res
4. 按奇偶排序数组
给定一个非负整数数组 A,返回一个数组,在该数组中, A 的所有偶数元素之后跟着所有奇数元素。
你可以返回满足此条件的任何数组作为答案。 示例:
输入:[3,1,2,4]
输出:[2,4,3,1]
输出 [4,2,3,1],[2,4,1,3] 和 [4,2,1,3] 也会被接受。 提示:
1 <= A.length <= 5000
0 <= A[i] <= 5000
def sort_A(A):
lt1 = []
lt2 = [] # 定义两个列表,分别接收奇数和偶数
for i in A:
if i % 2 == 0:
lt1.append(i)
else:
lt2.append(i)
return lt1 + lt2
'''
5. IP地址无效化
给你一个有效的 IPv4 地址 address,返回这个 IP 地址的无效化版本。
所谓无效化 IP 地址,其实就是用 "[.]" 代替了每个 "."。 示例 1:
输入:address = "1.1.1.1"
输出:"1[.]1[.]1[.]1" 示例 2:
输入:address = "255.100.50.0"
输出:"255[.]100[.]50[.]0" 提示:
给出的 address 是一个有效的 IPv4 地址
''' def ipaddr(s):
s2 = s.split('.')
res = '[.]'.join(s2)
return res
6.宝石与石头
给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头。
S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。
J 中的字母不重复,J 和 S中的所有字符都是字母。字母区分大小写,因此"a"和"A"是不同类型的石头。 示例 1:
输入: J = "aA", S = "aAAbbbb"
输出: 3 示例 2:
输入: J = "z", S = "ZZ"
输出: 0
注意:
S 和 J 最多含有50个字母。
J 中的字符不重复。
''' def func(J, S):
sum = 0
for i in J:
sum += S.count(i)
return sum
'''
7.有序数组的平方
给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。
示例 1:
输入:[-4,-1,0,3,10]
输出:[0,1,9,16,100] 示例 2:
输入:[-7,-3,2,3,11]
输出:[4,9,9,49,121] 提示:
1 <= A.length <= 10000
-10000 <= A[i] <= 10000
A 已按非递减顺序排序。
''' def sorted_square(A):
lt = []
for i in A:
lt.append(i ** 2)
lt.sort()
return lt
'''
8. 反转字符串中的单词
给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。 示例 1:
输入: "Let's take LeetCode contest"
输出: "s'teL ekat edoCteeL tsetnoc"
注意:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。
''' # 思路:转换为列表,遍历取出单词反转
def sorted_str(s):
lt = []
s_list = s.split(' ')
for i in s_list:
lt.append(i[::-1])
return ' '.join(lt)
'''
9. 按奇偶排序数组
给定一个非负整数数组 A, A 中一半整数是奇数,一半整数是偶数。
对数组进行排序,以便当 A[i] 为奇数时,i 也是奇数;当 A[i] 为偶数时, i 也是偶数。
你可以返回任何满足上述条件的数组作为答案。 示例:
输入:[4,2,5,7]
输出:[4,5,2,7]
解释:[4,7,2,5],[2,5,4,7],[2,7,4,5] 也会被接受。
提示:
2 <= A.length <= 20000
A.length % 2 == 0
0 <= A[i] <= 1000
''' def func3(A):
lt, lt1, lt2 = [], [], []
for i in A:
if i % 2 == 0:
lt1.append(i)
else:
lt2.append(i) # lt1 存储偶数,lt2 存储奇数
while lt1 and lt2:
lt.append(lt1.pop())
lt.append(lt2.pop()) # pop()默认删除最后一个,返回删除的数
return lt
'''
10. 各位相加
给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。 示例: 输入: 38
输出: 2
解释: 各位相加的过程为:3 + 8 = 11, 1 + 1 = 2。 由于 2 是一位数,所以返回 2。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/add-digits
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
''' def add_digit(num):
if num < 9:
return num
elif num == 9:
return 9
else:
return num % 9
'''
11. 存在重复元素
给定一个整数数组,判断是否存在重复元素。 如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。 示例 1: 输入: [1,2,3,1]
输出: true
示例 2: 输入: [1,2,3,4]
输出: false
示例 3: 输入: [1,1,1,3,3,4,3,2,4,2]
输出: true 来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/contains-duplicate
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
'''
# 思路:用集合set,重复元素删除,比较原数组和集合的长度
def func4(nums):
if len(nums) == len(set(nums)):
return True
else:
return False
func4([1,1,1,3,3,4,3,2,4,2])
'''
12. 只出现一次的数字
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? 示例 1: 输入: [2,2,1]
输出: 1
示例 2: 输入: [4,1,2,1,2]
输出: 4 来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/single-number
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
''' def func5(nums):
lt = []
for i in nums:
if i not in lt:
lt.append(i)
else:
lt.remove(i)
return lt[0]
func5([4,1,2,1,2])
'''
13. 移除元素
给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。 示例 1: 给定 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, 3, 0, 4。 注意这五个元素可为任意顺序。 你不需要考虑数组中超出新长度后面的元素。
说明: 为什么返回数值是整数,但输出的答案是数组呢? 请注意,输入数组是以“引用”方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。 你可以想象内部操作如下: // nums 是以“引用”方式传递的。也就是说,不对实参作任何拷贝
int len = removeElement(nums, val); // 在函数里修改输入数组对于调用者是可见的。
// 根据你的函数返回的长度, 它会打印出数组中该长度范围内的所有元素。
for (int i = 0; i < len; i++) {
print(nums[i]);
} 来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/remove-element
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
''' def remove_elemnet(nums, val):
i = 0 # i为数组长度
for j in range(0, len(nums)):
if nums[j] != val:
nums[i] = nums[j]
i += 1
return i

最新文章

  1. jQuery加载一个html页面到指定的div里
  2. P和NP问题
  3. List,Set,Map用法以及区别
  4. 解决eclipse中安装AIX2插件问题
  5. ADO.net 实体类 、数据访问类
  6. 用radio控制&lt;tr&gt;的隐藏和显示问题
  7. Java笔记——equals和==的区别
  8. Python3批量爬取网页图片
  9. 强制不使用“兼容性视图”的HTML代码(转)
  10. Objective-c 类的继承 方法重写 方法重载
  11. Socket开发时,Available为0,实际还有数据的问题
  12. 前端MVC Vue2学习总结(四)——条件渲染、列表渲染、事件处理器
  13. 【51】java设计模式-工厂设计模式剖析
  14. 面试题:int和Integer的区别
  15. 运维wiki
  16. c# webBrowser 转图片
  17. WORLD 合并多个WORLD中的文本
  18. java.net.UnknownHostException: www.terracotta.org
  19. ORACLE-SQL微妙之处
  20. 在Android上山寨了一个Ios9的LivePhotos,放Github上了

热门文章

  1. Web服务器—Apache
  2. 24.Java基础_IDEA类快捷键_Alt+insert
  3. win10python安装iis
  4. 密标与pdf有什么关系
  5. RAID几种方式
  6. MySQL学习笔记6——备份与恢复
  7. angular6.x 引入echarts
  8. [东西]neverOpen
  9. 【2019.7.25 NOIP模拟赛 T3】树(tree)(dfs序列上开线段树)
  10. 第02组 Beta冲刺(4/5)