leetcode-12双周赛-1243-数组变换

题目描述:

自己的提交:

class Solution:
    def transformArray(self, arr: List[int]) -> List[int]:
        if len(arr) < 3: return arr
        flag = True
        while flag:
            tmp = []
            tmp.append(arr[0])
            for i in range(1,len(arr)-1):
                if arr[i] > arr[i-1] and arr[i] > arr[i+1]:
                    tmp.append(arr[i] - 1)
                elif arr[i] < arr[i-1] and arr[i] < arr[i+1]:
                    tmp.append(arr[i] + 1)
                else:
                    tmp.append(arr[i])
            tmp.append(arr[-1])
            if arr == tmp:
                flag = False
            arr = tmp
        return arr

优化:

class Solution:
    def transformArray(self, A: List[int]) -> List[int]:
        change = 1
        n = len(A)
        while change:
            change = 0
            B = A[:]
            for i in range(1, n - 1):
                if A[i-1] < A[i] > A[i+1]:
                    B[i] -= 1
                    change = 1
                if A[i-1] > A[i] < A[i+1]:
                    B[i] += 1
                    change = 1
            A = B
        return B

原文地址:https://www.cnblogs.com/oldby/p/11797701.html

时间: 2024-11-01 12:15:00

leetcode-12双周赛-1243-数组变换的相关文章

[LeetCode]12. Rotate Array旋转数组

Rotate an array of n elements to the right by k steps. For example, with n = 7 and k = 3, the array [1,2,3,4,5,6,7] is rotated to [5,6,7,1,2,3,4]. Note:Try to come up as many solutions as you can, there are at least 3 different ways to solve this pro

LeetCode双周赛10

Leetcode双周赛10 5079.三个有序数组的交集 给出三个均为 严格递增排列 的整数数组 arr1,arr2 和 arr3. 返回一个由 仅 在这三个数组中 同时出现 的整数所构成的有序数组. 示例: 输入: arr1 = [1,2,3,4,5], arr2 = [1,2,5,7,9], arr3 = [1,3,4,5,8] 输出: [1,5] 解释: 只有 1 和 5 同时在这三个数组中出现. 提示: 1 <= arr1.length, arr2.length, arr3.length

leetCode 118. Pascal&#39;s Triangle 数组 (杨辉三角)

118. Pascal's Triangle Given numRows, generate the first numRows of Pascal's triangle. For example, given numRows = 5,Return [      [1],     [1,1],    [1,2,1],   [1,3,3,1],  [1,4,6,4,1] ] 题目大意: 输入行数,输出如上图所示的数组.(杨辉三角) 思路: 用双vector来处理当前行和下一行. 代码如下: cla

数组变换--全国模拟(三)

[编程题] 数组变换 时间限制:1秒 空间限制:32768K 牛牛有一个数组,里面的数可能不相等,现在他想把数组变为:所有的数都相等.问是否可行. 牛牛可以进行的操作是:将数组中的任意一个数改为这个数的两倍. 这个操作的使用次数不限,也可以不使用,并且可以对同一个位置使用多次. 输入描述: 输入一个正整数N (N <= 50) 接下来一行输入N个正整数,每个数均小于等于1e9. 输出描述: 假如经过若干次操作可以使得N个数都相等,那么输出"YES", 否则输出"NO&q

Leetcode 183场周赛

Leetcode 183场周赛 1 #include <algorithm> class Solution { public: vector<int> minSubsequence(vector<int>& nums) { sort(nums.begin(), nums.end());//升序排列 vector<int> ans; int sum[505]; memset(sum,0,sizeof(sum)); sum[0] = nums[0]; f

关于单双引号与数组冲突问题,解决方法

最近在写站群程序,想把配置都搞成文件存放起来.在开发过程中出现了单双引号与数组冲突的问题. 错误提示: Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING 给大家举个栗子: <?php $a['aaa'] = 'bbb'; echo "'$a['aaa']'"; ?> 解决方法:把中括号中的2个单引号

LeetCode 81——搜索旋转排序数组 II

1. 题目 2. 解答 2.1. 方法一 基于 LeetCode 33--搜索旋转排序数组 中的方法二. 当 nums[mid] = nums[right] 时,比如 [1, 1, 2, 1, 1],[1, 1, 0, 1, 1],为了找到正确的转折点,我们查看 [mid, right] 之间有没有不等于 nums[mid] 的值,若有,则继续向右查找:否则向左查找. class Solution { public: int Binary_Search(vector<int>& num

[leetcode 双周赛 11] 1228 等差数列中缺失的数字

1228 Missing Number In Arithmetic Progression 等差数列中缺失的数字 问题描述 有一个数组, 其中的值符合等差数列的数值规律, 也就是说: 在?0 <= i < arr.length - 1?的前提下, arr[i+1] - arr[i]?的值都相等. 我们会从该数组中删除一个 既不是第一个 也 不是最后一个的值, 得到一个新的数组??arr. 给你这个缺值的数组?arr, 请你帮忙找出被删除的那个数. 示例 1: 输入: arr = [5,7,11

LeetCode 5096. 数组变换

地址 https://leetcode-cn.com/contest/biweekly-contest-12/problems/array-transformation/ 首先,给你一个初始数组 arr.然后,每天你都要根据前一天的数组生成一个新的数组. 第 i 天所生成的数组,是由你对第 i-1 天的数组进行如下操作所得的: 假如一个元素小于它的左右邻居,那么该元素自增 1.假如一个元素大于它的左右邻居,那么该元素自减 1.首.尾元素 永不 改变.过些时日,你会发现数组将会不再发生变化,请返回