python 习题

def printer_error(s):
    regex=[chr(i) for i in range(97,110)]
    num2=0
    for x in s:
        if x in regex:
           pass
        else:
            num2 +=1
    return '{0}/{1}'.format(num2,len(s))

def twoSum(nums, target):
    result = []
    for x in range(len(nums)):
        sums = target - nums[x]
        if sums in nums:
            if sums !=nums[x]:
                result.append(x)
            elif nums.count(sums) >1 and sums ==nums[x]:
                result.append(x)
    return result

nums =[4,4]
print(twoSum(nums, 8))




def threeSum(nums):
    result = []
    result2=[]
    result3=[]
    for a in range(len(nums)):
        for b in range(len(nums)):
            if a != b:
                for c in range(len(nums)):
                    if a != b and b != c and c != a and nums[a] + nums[b] + nums[c] == 0:
                        result.append(['{0},{1},{2}'.format(nums[a],nums[b],nums[c])])
    for i in range(18):
        res=result[i][0].split(',')
        res.sort()
        result2.append(res)
    for index,item in enumerate(result2):
        result2[index]=list(map(int,item))
    result2.sort()
    for i in range(len(result2)):
        if result2[i] != result2[i-1]:
          result3.append(result2[i])
    return result3


    # return  result

nums = [-1, 0, 1, 2, -1, -4]
print(threeSum(nums))




    result = []
    result2=[]
    result3=[]
    for a in range(len(nums)):
        for b in range(len(nums)):
            if a != b:
                for c in range(len(nums)):
                    if a != b and b != c and c != a and nums[a] + nums[b] + nums[c] == 0:
                        result.append(['{0},{1},{2}'.format(nums[a],nums[b],nums[c])])
    for i in range(len(result)):
        res=result[i][0].split(',')
        res.sort()
        result2.append(res)
    for index,item in enumerate(result2):
        result2[index]=list(map(int,item))
    result2.sort()
    for i in range(len(result2)):
        if result2[i] not in result3:
            result3.append(result2[i])
    return result3

class Solution:
    def threeSum(self, nums):
        """
        :type nums: List[int]
        :rtype: List[List[int]]
        """
        if len(nums) < 3:
            return []
        result = []
        for a in range(len(nums)):
            for b in range(len(nums)):
                if a!=b:
                    for c in range(len(nums)):
                        if a != c and b != c:
                            if nums[a] + nums[b] + nums[c] == 0 and nums[a] <= nums[b] <= nums[c]:
                                   lists=[nums[a], nums[b], nums[c]]
                                   if lists not in result:
                                        result.append(lists)

        return result

给定一个未排序的整数数组,找出其中没有出现的最小的正整数。

示例 1:

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

输入: [3,4,-1,1]
输出: 2
示例 3:

输入: [7,8,9,11,12]
输出: 1
说明:

你的算法的时间复杂度应为O(n),并且只能使用常数级别的空间。
class Solution:
def firstMissingPositive(self, nums):
    """
    :type nums: List[int]
    :rtype: int
    """
    nums.sort()
    lists = [i for i in range(len(nums) + 1)]
    lists2 = [i for i in range(1,len(lists) + 1)]
    result=[]
    # return result
    for listNums in lists2:
        if listNums not in nums:
            result.append(listNums)
    return min(result)

**给定一个范围在 1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次。
找到所有在 [1, n] 范围之间没有出现在数组中的数字。
您能在不使用额外空间且时间复杂度为O(n)的情况下完成这个任务吗? 你可以假定返回的数组不算在额外空间内。
示例:
输入:
[4,3,2,7,8,2,3,1]
输出:
[5,6]**

class Solution:
    def findDisappearedNumbers(self, nums):
        """
        :type nums: List[int]
        :rtype: List[int]
        """
        result = []
        maxNums = len(nums)
        if nums == []:
            return result
        mainNums = min(nums)
        if maxNums not in nums:
            nums.append(maxNums)
            result.append(maxNums)
        if mainNums - 1 != 0:
            for x in range(1, mainNums):
                mins = mainNums - x
                result.append(mins)
        nums.sort()
        for x in range(len(nums) - 1, 0, -1):
            numsReduce = nums[x] - nums[x - 1]
            if numsReduce > 1:
                for y in range(1, numsReduce):
                    reduce = nums[x] - y
                    result.append(reduce)
        result.sort()
        return result
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值