【leecode刷题】初级算法-数组

1、删除排序数组中的重复项

在这里插入图片描述

class Solution(object):
    def removeDuplicates(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        if len(nums)==0:
            return 0
        else:
            i = 0
            for j in range(len(nums)):
                if nums[j]!=nums[i]:
                    i = i+1
                    nums[i]=nums[j]
            return i+1

2、买卖股票的最佳时机 II

在这里插入图片描述

class Solution(object):
    def maxProfit(self, prices):
        profit = 0
        for i in range(1, len(prices)):
            tmp = prices[i] - prices[i - 1]
            if tmp > 0: 
                profit += tmp
        return profit

3、旋转数组

在这里插入图片描述

class Solution(object):
    def rotate(self, nums, k):
        """
        :type nums: List[int]
        :type k: int
        :rtype: None Do not return anything, modify nums in-place instead.
        """
        numsRotate = [0]*len(nums)
        for i in range(len(nums)):
            numsRotate[(i+k)%len(nums)] = nums[i]
        for i in range(len(nums)):
            nums[i] = numsRotate[i]

4、存在重复元素

在这里插入图片描述

class Solution(object):
    def containsDuplicate(self, nums):
        if len(nums)!=len(set(nums)):
            return True
        else:
            return False

5、只出现一次的数字

在这里插入图片描述

class Solution(object):
    def singleNumber(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        dic = {}
        for i in nums:
            if i in dic:
                dic[i] = dic[i]+1
            else:
                dic[i] = 1
        return list(dic.keys())[list(dic.values()).index(1)]

6、两个数组的交集 II

在这里插入图片描述

class Solution(object):
    def intersect(self, nums1, nums2):
        """
        :type nums1: List[int]
        :type nums2: List[int]
        :rtype: List[int]
        """
        nums1.sort()
        nums2.sort()

        length1, length2 = len(nums1), len(nums2)
        intersection = list()
        index1 = index2 = 0
        while index1 < length1 and index2 < length2:
            if nums1[index1] < nums2[index2]:
                index1 += 1
            elif nums1[index1] > nums2[index2]:
                index2 += 1
            else:
                intersection.append(nums1[index1])
                index1 += 1
                index2 += 1
        
        return intersection

7、加一

在这里插入图片描述

class Solution(object):
    def plusOne(self, digits):
        """
        :type digits: List[int]
        :rtype: List[int]
        """
        result = []
        for i in str(int("".join([str(i) for i in digits]))+1):
            result.append(int(i))
        return result

8、移动零

在这里插入图片描述

class Solution(object):
    def moveZeroes(self, nums):
        """
        :type nums: List[int]
        :rtype: None Do not return anything, modify nums in-place instead.
        """
        if not nums:
            return 0
		# 第一次遍历的时候,j指针记录非0的个数,只要是非0的统统都赋给nums[j]	
        j = 0
        for i in range(len(nums)):
            if nums[i]:
                nums[j] = nums[i]
                j += 1
		# 非0元素统计完了,剩下的都是0了
		# 所以第二次遍历把末尾的元素都赋为0即可
        for i in range(j,len(nums)):
            nums[i] = 0

9、两数之和

在这里插入图片描述

class Solution(object):
    def twoSum(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: List[int]
        """
        result = []
        for i in range(len(nums)):
            for j in range(i+1,len(nums)):
                if nums[i]+nums[j]==target:
                    result.append(i)
                    result.append(j)
        return result

10、有效的数独

在这里插入图片描述

class Solution(object):
    def isValidSudoku(self, board):
        """
        :type board: List[List[str]]
        :rtype: bool
        """
        charList = [str(i) for i in range(1,10)]
        charList.append(".")
        # 检查每一行
        flag = True
        for List in board:
            # 是否存在重复元素
            temp = [i for i in List if i!='.']
            if len(set(temp))!=len(temp):
                flag = False
                break
            # 是否属于字符集合
            for i in List:
                if i not in charList:
                    flag = False
                    break

        # 检查每一列
        for i in range(9):
            # 构建每一列的列表
            ListColumn = []
            for j in range(9):
                ListColumn.append(board[j][i])
            # 是否存在重复元素
            temp = [i for i in ListColumn if i!='.']
            if len(set(temp))!=len(temp):
                flag = False
                break

            # 是否属于字符集合
            for i in ListColumn:
                if i not in charList:
                    flag = False
                    break

        # 检查每一个九宫格
        L1 = [0,1,2]
        L2 = [3,4,5]
        L3 = [6,7,8]
        for i in range(1,10):
            if i==1:
                List1 = L1
                List2 = L1
            elif  i==2:
                List1 = L1
                List2 = L2    
            elif  i==3:
                List1 = L1
                List2 = L3  
            elif i==4:
                List1 = L2
                List2 = L1
            elif  i==5:
                List1 = L2
                List2 = L2    
            elif  i==6:
                List1 = L2
                List2 = L3  
            elif i==7:
                List1 = L3
                List2 = L1
            elif  i==8:
                List1 = L3
                List2 = L2    
            else:
                List1 = L3
                List2 = L3  

            ListColumn = []
            for j in List1:
                # 构建每一九宫格的列表
                for k in List2:
                    ListColumn.append(board[j][k])

            # 是否存在重复元素
            temp = [i for i in ListColumn if i!='.']
            if len(set(temp))!=len(temp):
                flag = False
                break

            # 是否属于字符集合
            for i in ListColumn:
                if i not in charList:
                    flag = False
                    break         


        # 返回结果
        return flag

11、旋转图像

在这里插入图片描述

class Solution(object):
    def rotate(self, matrix):
        """
        :type matrix: List[List[int]]
        :rtype: None Do not return anything, modify matrix in-place instead.
        """
        import numpy as np
        temp = np.zeros((len(matrix),len(matrix)))
        for i in range(len(matrix)):
            for j in range(len(matrix)):
                temp[i][j] = matrix[len(matrix)-1-j][i]
                
        for i in range(len(temp)):
            for j in range(len(temp)):
                matrix[i][j] = int(temp[i][j])
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值