
这里写目录标题
- 一、非自身以外数字的乘积
 - 二、最大数
 - 三、奇数排序
 
一、非自身以外数字的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。
 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。
 请不要使用除法,且在 O(n) 时间复杂度内完成此题。
示例 1:
 输入: nums = [1,2,3,4]
 输出: [24,12,8,6]
示例 2:
 输入: nums = [-1,1,0,-3,3]
 输出: [0,0,9,0,0]
def test2(nums):
    n = len(nums)
    res = [0] * n
    k = 1
    for i in range(n):
        res[i] = k
        k = k * nums[i]
    k = 1
    for i in range(n - 1, -1, -1):
        res[i] = k * res[i]
        k = k * nums[i]
    return res
nums = [1, 2, 3, 4]
res = test2(nums)
print(res)
 
二、最大数
给定一个list 由一些非负整数组成 ,重新排列他们的顺序把他们组成一个最大的整数。
 例子:
 输入:
 [30,1]
 返回值:
 “301”
import itertools
nums = [1, 201, 20, 9, 8]
s = list(map(str, nums))
print(s)
ordered = sorted(s, key=lambda x: x, reverse=True)
print(ordered)
def fn(nums):
    s = list(map(str, nums))  # [30,1] ——》 ['30', '1']
    ordered = sorted(s, key=lambda x: x, reverse=True)  # 根据首位排序
    # 首位相同的,进行二次排序
    for i in range(len(ordered) - 1):
        if ordered[i][0] == ordered[i + 1][0]:
            if int(ordered[i][-1]) < int(ordered[i + 1][-1]):
                ordered[i], ordered[i + 1] = ordered[i + 1], ordered[i]
    return int(''.join(ordered))
nums = [301, 302, 34]
print(fn(nums))
 
三、奇数排序
哈利波特获得了一个数字列表,他的任务是必须将奇数按升序排序,同时将偶数保留在原来的位置。魔法师们,快来帮帮他吧~
nums = [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
def test(nums):
    res1 = sorted([i for i in nums if i % 2 == 1])
    for index in range(len(nums)):
        if nums[index] % 2 != 0:
            nums[index] = res1[0]
            res1.pop(0)
    return nums
r = test(nums)
print(r)
 


















![[wordpiece]论文分析:Google’s Neural Machine Translation System](https://img-blog.csdnimg.cn/direct/2308b76a075047bf9150125761a11ea1.png)

