Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- python sorted
- 알고리즘풀이
- 파이썬릿코드
- 파이썬 릿코드
- python Leetcode
- leetcode풀이
- 릿코드 풀기
- leetcode 풀기
- 알고리즘풀기
- 상가수익률계산기
- 파이썬알고리즘
- 파이썬 알고리즘
- python xor
- python priority queue
- 릿코드 파이썬
- 코틀린기초
- 릿코드
- 잇츠디모
- python zip_longest
- python 릿코드
- python 알고리즘
- 파이썬릿코드풀기
- 파이썬 프로그래머스
- 릿코드풀이
- binary search
- 파이썬알고리즘풀기
- 릿코드풀기
- 파이썬 알고리즘 풀기
- leetcode풀기
- LeetCode
Archives
- Today
- Total
소프트웨어에 대한 모든 것
2149. Rearrange Array Elements by Sign 본문
반응형
문제)
2149. Rearrange Array Elements by Sign
2149. Rearrange Array Elements by Sign
Medium
110664Add to ListShareYou are given a 0-indexed integer array nums of even length consisting of an equal number of positive and negative integers.
You should rearrange the elements of nums such that the modified array follows the given conditions:
- Every consecutive pair of integers have opposite signs.
- For all integers with the same sign, the order in which they were present in nums is preserved.
- The rearranged array begins with a positive integer.
Return the modified array after rearranging the elements to satisfy the aforementioned conditions.
Example 1:
Input: nums = [3,1,-2,-5,2,-4]
Output: [3,-2,1,-5,2,-4]
Explanation:
The positive integers in nums are [3,1,2]. The negative integers are [-2,-5,-4].
The only possible way to rearrange them such that they satisfy all conditions is [3,-2,1,-5,2,-4].
Other ways such as [1,-2,2,-5,3,-4], [3,1,2,-2,-5,-4], [-2,3,-5,1,-4,2] are incorrect because they do not satisfy one or more conditions.
Example 2:
Input: nums = [-1,1]
Output: [1,-1]
Explanation:
1 is the only positive integer and -1 the only negative integer in nums.
So nums is rearranged to [1,-1].
Constraints:
- 2 <= nums.length <= 2 * 105
- nums.length is even
- 1 <= |nums[i]| <= 105
- nums consists of equal number of positive and negative integers.
솔루션1)
class Solution:
def rearrangeArray(self, nums: List[int]) -> List[int]:
positives = []
negatives = []
for n in nums:
if n >= 0:
positives.append(n)
else:
negatives.append(n)
ret = []
for p, n in zip(positives, negatives):
ret.append(p)
ret.append(n)
return ret
솔루션2)
- 솔루션1을 최적화해서 반복문 한 개로 처리
class Solution:
def rearrangeArray(self, nums: List[int]) -> List[int]:
ret = [0] * len(nums)
p_idx = 0
n_idx = 1
for n in nums:
if n >= 0:
ret[p_idx] = n
p_idx += 2
else:
ret[n_idx] = n
n_idx += 2
return ret
반응형
'알고리즘 > LeetCode' 카테고리의 다른 글
404. Sum of Left Leaves (0) | 2022.12.28 |
---|---|
872. Leaf-Similar Trees (0) | 2022.12.27 |
2148. Count Elements With Strictly Smaller and Greater Elements (0) | 2022.12.27 |
2103. Rings and Rods (0) | 2022.12.27 |
1365. How Many Numbers Are Smaller Than the Current Number (0) | 2022.12.25 |
Comments