LeetCode初级算法的Python实现--数组

# -*- coding: utf-8 -*-
"""
@Created on 2018/6/3 17:06 @author: ZhifengFang
""" # 排列数组删除重复项
def removeDuplicates(nums):
if len(nums) <= 1:
return len(nums)
i = 1
while len(nums) != i:
if nums[i] == nums[i - 1]:
del nums[i]
i -= 1
i += 1
return len(nums) # 买卖股票最佳时机2
def maxProfit(prices):
max = 0
if len(prices) <= 1:
return 0
for i in range(len(prices) - 1):
if prices[i] < prices[i + 1]:
max += prices[i + 1] - prices[i]
return max # 旋转数组
def rotate(nums, k):
# nums = nums[-k:] + nums[:k + 1]
# print(nums)
if len(nums) > 1:
k = k % len(nums)
if k != 0:
temp = nums[-k:]
nums[k:] = nums[:len(nums) - k]
nums[0:k] = temp
print(nums) # 判断数组中是否有重复元素
def containsDuplicate(nums):
# if len(nums)>len(set(nums)):
# return True
# return False
for num in nums:
if nums.count(num) > 1:
return True
return False # 获得里面只出现一次的数字
def singleNumber(nums):
numCounts = {}
result = []
for num in nums:
numCounts[num] = numCounts.get(num, 0) + 1
for key in numCounts.keys():
if numCounts.get(key) == 1:
result.append(key)
break
return result[0] # 两个数组的交集 II
def intersect(nums1, nums2):
if len(nums2) < len(nums1):
nums1, nums2 = nums2, nums1
newNums = []
i = 0
while i < len(nums1):
j = 0
while j < len(nums2):
if nums1[i] == nums2[j]:
newNums.append(nums2[j])
del nums1[i], nums2[j]
i -= 1
j -= 1
break
j += 1
i += 1
return newNums # print(intersect([9],[7,8,3,9,0,0,9,1,5])) # 加1
def plusOne(digits):
strDigits = ''
for example in digits:
strDigits += str(example)
strDigits = int(strDigits) + 1
listDigits = [int(str) for str in str(strDigits)]
return listDigits # print(plusOne([1, 2, 3])) # 移动0
def moveZeroes(nums):
# for i in range(len(nums)):
i = 0
zeroesCount = 0
while i + zeroesCount < len(nums):
if nums[i] == 0:
nums[i:] = nums[i + 1:] + [0]
i -= 1
zeroesCount += 1
i += 1
return nums # 两数和
def twoSum(nums, target):
d = {}
for x in range(len(nums)):
a = target - nums[x]
if nums[x] in d:
return d[nums[x]], x
else:
d[a] = x nums = [3, 2, 4]
target = 6 # print(twoSum(nums, target)) def isXT(strs):
strSet = set(strs)
for s in strSet:
if s != ".":
if strs.count(s) > 1:
return False
return True # 有效的数独
def isValidSudoku(board):
for i in range(9):
boardLie = [example[i] for example in board]
key1 = int(i / 3) * 3 + 1
key2 = 1 + (i % 3) * 3
boardGe = [board[key1 - 1][key2 - 1], board[key1 - 1][key2], board[key1 - 1][key2 + 1],
board[key1][key2 - 1], board[key1][key2], board[key1][key2 + 1],
board[key1 + 1][key2 - 1], board[key1 + 1][key2], board[key1 + 1][key2 + 1]]
if isXT(board[i]) == False:
return False
if isXT(boardLie) == False:
return False
if isXT(boardGe) == False:
return False
return True board = [[".", ".", "4", ".", ".", ".", "6", "3", "."],
[".", ".", ".", ".", ".", ".", ".", ".", "."],
["5", ".", ".", ".", ".", ".", ".", "9", "."],
[".", ".", ".", "5", "6", ".", ".", ".", "."],
["4", ".", "3", ".", ".", ".", ".", ".", "1"],
[".", ".", ".", "7", ".", ".", ".", ".", "."],
[".", ".", ".", "5", ".", ".", ".", ".", "."],
[".", ".", ".", ".", ".", ".", ".", ".", "."],
[".", ".", ".", ".", ".", ".", ".", ".", "."]] # print(isValidSudoku(board))
# 旋转图像
def rotate(matrix):
for i in range(len(matrix)):
for j in range(i+1,len(matrix)):
matrix[i][j], matrix[j][i] = matrix[j][i], matrix[i][j]
matrix[i].reverse()
print(matrix) ma = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
rotate(ma)

LeetCode初级算法的Python实现--数组的更多相关文章

  1. LeetCode初级算法的Python实现--排序和搜索、设计问题、数学及其他

    LeetCode初级算法的Python实现--排序和搜索.设计问题.数学及其他 1.排序和搜索 class Solution(object): # 合并两个有序数组 def merge(self, n ...

  2. LeetCode初级算法的Python实现--链表

    LeetCode初级算法的Python实现--链表 之前没有接触过Python编写的链表,所以这里记录一下思路.这里前面的代码是和leetcode中的一样,因为做题需要调用,所以下面会给出. 首先定义 ...

  3. LeetCode初级算法的Python实现--字符串

    LeetCode初级算法的Python实现--字符串 # 反转字符串 def reverseString(s): return s[::-1] # 颠倒数字 def reverse(x): if x ...

  4. LeetCode初级算法的Python实现--动态规划

    动态规划的本质是递归:所以做题之前一定要会递归:递归式就是状态转移方程:这里将会介绍使用动态规划做题的思维方式. 统一的做题步骤: 1.用递归的方式写出代码:(此方法写的代码在leetcode中一定会 ...

  5. LeetCode初级算法之数组:48 旋转图像

    旋转图像 题目地址:https://leetcode-cn.com/problems/rotate-image/ 给定一个 n × n 的二维矩阵表示一个图像. 将图像顺时针旋转 90 度. 说明: ...

  6. LeetCode初级算法--数组01:只出现一次的数字

    LeetCode初级算法--数组01:只出现一次的数字 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn. ...

  7. LeetCode初级算法--数组02:旋转数组

    LeetCode初级算法--数组02:旋转数组 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn.net/ ...

  8. LeetCode初级算法--设计问题01:Shuffle an Array (打乱数组)

    LeetCode初级算法--设计问题01:Shuffle an Array (打乱数组) 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:h ...

  9. LeetCode初级算法(数组)解答

    这里记录了LeetCode初级算法中数组的一些题目: 加一 本来想先转成整数,加1后再转回去:耽美想到测试的例子考虑到了这个方法的笨重,所以int类型超了最大范围65536,导致程序出错. class ...

随机推荐

  1. wget 模拟 get post请求

    wget命令 默认采用GET请求, 如果使用POST请求, wget --post-data '' url              // 这样 POST 请求没有请求体.

  2. postgresql+postgis+pgrouting实现最短路径查询(2)---openlayers+geoserver实现最短路径

    自己的最短路径实现基本上是按照参考博文的1.2和3进行的,实现的时候也是问题不断,只能是一个一个解决. 问题1:自己发布的geoserver服务无法和OSM底图叠加到一起. 解决:参考博文2提到发布服 ...

  3. (一)自定义ViewGroup绘制出菜单

    从网上学习了hyman大神的卫星菜单实现,自己特意亲自又写了一编代码,对自定义ViewGroup的理解又深入了一点.我坚信只有自己写出来的知识才会有更加好的的掌握.因此也在自己的博客中将这个卫星菜单的 ...

  4. datetime中时间的formatter整理

    datetime是个很常用的模块,这个连python初学者都应该知道,datetime中有两个函数:strftime和strptime,里面都有个参数format,可以将输出的时间格式化.例如 pri ...

  5. 一切皆文件-文件是对IO的最简抽象

    引用<Linux Kernel Development>原书里面的一句话 in Unix, everything is a file.This simplifies the manipul ...

  6. 第三章.搭建MyBatis工程环境

    1.数据库的准备: 数据库: create DATABASE mybatis: 数据表: CREATE TABLE `user` ( `id` int(10) NOT NULL AUTO_INCREM ...

  7. mybatis查询缓存

    一级缓存针对每个sqlSession进行缓存,sqlSession销毁,一级缓存就不存在. ,使用Map存储了sql执行查询结果集(java对象) 二级缓存针对每个map的namespace进行缓存. ...

  8. VMware12上安装CentOS无法上网问题

    进入/etc/sysconfig/network-scripts目录下,查看有没有ifcfg-XXX的文件(ifcfg-lo除外), 没找到网卡设备,原因:由于Vmware虚拟网卡和Linux兼容问题 ...

  9. python中模块与包的概念

    在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护.为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多 ...

  10. Spring使用java代码配置Web.xml进行访问service

    方式一:继承WebMvcConfigurerAdapter类 1.使用一个类来继承 package com.wbg.springJavaConfig.spring; import org.spring ...