LeetCode - 283 이동 0 - 배열 (python) (c)

2906 단어 pythonleetcode독학
원제 사이트 주소: 클릭 하여 링크 열기
문제 풀이 github
하나의 배열 nums 을 지정 하고 함 수 를 만들어 서 모든 0 을 배열 의 끝으로 이동 시 키 는 동시에 0 요소 가 아 닌 상대 적 인 순 서 를 유지 합 니 다.
예시:
  : [0,1,0,3,12]
  : [1,3,12,0,0]

:

  1. , 。

: , , ,

nums【a,b,c,d,e,f,g,h,i,j,k】, l1 l2 = len(nums)-1, l1 l2

l2

l1 ,l2 .

[l2+1,l2+2,,,,,,,l1] nums[l2]=0

l1 - 1 l1 ,l2 。

( l1 , ,l1 l2 )

(python):

class Solution:
    def moveZeroes(self, nums):
        """
        :type nums: List[int]
        :rtype: void Do not return anything, modify nums in-place instead.
        """
        pos = 0   #           
        count = 0
        l = len(nums)
        l1 = l2 = l - 1
        if l == 0:
            return
        else:
            count = nums.count(0)
            if count == l:  #        
                return
            else:
                if count == 0:   #          
                    return
                else:
                    while(l2 >= 0):
                        if nums[l2] == 0:
                            pos = l1 - l2
                            for i in range(pos):
                                nums[l2 + i] = nums[l2 + i + 1]
                            nums[l1] = 0
                            l1 -= 1
                        l2 -= 1

, 。 ( ), 。

class Solution:
    def moveZeroes(self, nums: List[int]) -> None:
        """
        Do not return anything, modify nums in-place instead.
        """
        pre = 0
        for post in range(len(nums)):
            if nums[post]:
                nums[pre], nums[post] = nums[post], nums[pre]
                pre += 1

 

  (C): , , C

void moveZeroes(int* nums, int numsSize) {
    int j = 0;
    for(int i = 0; i < numsSize; i++) {
        if(nums[i] != 0) {
            nums[j++] = nums[i];
        }
    }
    for(; j < numsSize; j++) {
        nums[j] = 0;
    }
}

 

좋은 웹페이지 즐겨찾기