Giải bài 27 Remove Element O(N)

Đề bài:

Bài giải:

Code python

class Solution(object):
    def removeElement(self, nums, val):
        """
        :type nums: List[int]
        :type val: int
        :rtype: int
        """
        if not nums: return 0
        i = 0
        n = len(nums)
        for j in xrange(n):
            if nums[j] != val:
                nums[i] = nums[j]
                i += 1
        return i

Nhờ các bạn giải với các ngôn ngữ khác.

2 Likes

Hay quá anh ạ. Mấy hôm nay em đang luyện cái này. Nhưng submit code thì chỉ hơn đc 30% số người submit trước mình. Kém quá ko dám post code :joy:

Java code:

     public int removeElement(int[] nums, int val) {
             if (nums.length == 0) return 0;
             int len = nums.length;
             int result = 0;
             int index = -1;
             for (int i = 0; i < len; i++) {
                 if (nums[i] != val) {
                     nums[++index] = nums[i];
                     result++;
                 }
             }
             return result;
     }

Chào mọi người, mình có một thắc mắc như sau:
Dựa vào code của anh Đạt: nums[i] = nums[j]
Giả sử có nums = [4,2,3,2] và val = 3, với i=0, j=1 thì:
nums = [2,2,3,2]
Ý mình là giá trị 4 đã bị ghi đè, mình chưa hiểu điểm này lắm. Mong mọi người giúp !

Ban đầu cả i và j đều bằng 0 mà :smiley: vì mặc định số đầu của xrange là 0.

Cảm ơn bạn, mình bỏ sót điều này :smiley:

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?