민여위-

[Leetcode] Duplicate Zeros (Explore Arrays 101) / 릿코드 활용, 코딩테스트 본문

Tech

[Leetcode] Duplicate Zeros (Explore Arrays 101) / 릿코드 활용, 코딩테스트

꿀땡이 2021. 10. 9. 22:39
728x90
반응형

1. 문제설명

Given a fixed-length integer array arr, duplicate each occurrence of zero, shifting the remaining elements to the right.

Note that elements beyond the length of the original array are not written. Do the above modifications to the input array in place and do not return anything.

 

Example 1:

Input: arr = [1,0,2,3,0,4,5,0] Output: [1,0,0,2,3,0,0,4] Explanation: After calling your function, the input array is modified to: [1,0,0,2,3,0,0,4]

Example 2:

Input: arr = [1,2,3] Output: [1,2,3] Explanation: After calling your function, the input array is modified to: [1,2,3]

 

Constraints:

  • 1 <= arr.length <= 104
  • 0 <= arr[i] <= 9

2. 내 풀이

class Solution {
public:
    bool checkException(vector<int> _arr) {
        // Exception 1
        if (_arr.size() < 1 || _arr.size() > 10000) {
            return false;
        }
        
        // Exception 2
        for (int i = 0; i < _arr.size(); i++) {
            if (_arr[i] < 0 || _arr[i] > 9) {
                return false;
            }
        }

        return true;
    }
    
    void arrShifting(vector<int>& _arr, int _index) {       
        for (int i = _arr.size() - 1; i > _index; i--) {
            _arr[i] = _arr[i - 1];
        }
    }
    
    void duplicateZeros(vector<int>& arr) {
        if (checkException(arr)) {
            for (int i = 0; i < arr.size(); i++) {
                if (0 == arr[i]) {
                    arrShifting(arr, i);
                    i++;
                }
            }
        }
    }
};
728x90
반응형
Comments