You are on page 1of 6

class Solution:

def removeElement(self, nums: List[int], val: int) -> int:


start = 0
n = len(nums)
end = n - 1
while(start<end):
while(start<n):
if nums[start] != val:
start += 1
while(end >= 0):
if nums[end] == val:
end -=1
if start<end:
return nums[0:start]
if start==end and nums[start]!=val:
return n
if start==end and nums[start]==val:
return 0
temp = nums[start]
nums[start] = nums[end]
nums[end] = temp
start+=1
end-=1
return start

class Solution:
def removeElement(self, nums: List[int], val: int) -> int:
n = len(nums)
indices_to_replace = []
for x in range(n):
if nums[x]==val:
indices_to_replace.append(x)
if len(indices_to_replace)==0:
return n
if len(indices_to_replace)==n:
return 0
for y in range(n-1,-1,-1):
if nums[y]!=val:
z = y +1
while z>y:
z = indices_to_replace.pop(-1)
else:
continue
nums[y], nums[z] = nums[z], nums[y]
if len(indices_to_replace)==0:
return y

Given an integer array nums and an integer val, remove all occurrences of val in
nums in-place. The relative order of the elements may be changed.

Since it is impossible to change the length of the array in some languages, you
must instead have the result be placed in the first part of the array nums. More
formally, if there are k elements after removing the duplicates, then the first k
elements of nums should hold the final result. It does not matter what you leave
beyond the first k elements.

Return k after placing the final result in the first k slots of nums.

Do not allocate extra space for another array. You must do this by modifying the
input array in-place with O(1) extra memory.

Custom Judge:

The judge will test your solution with the following code:

int[] nums = [...]; // Input array


int val = ...; // Value to remove
int[] expectedNums = [...]; // The expected answer with correct length.
// It is sorted with no values equaling val.

int k = removeElement(nums, val); // Calls your implementation

assert k == expectedNums.length;
sort(nums, 0, k); // Sort the first k elements of nums
for (int i = 0; i < actualLength; i++) {
assert nums[i] == expectedNums[i];
}
If all assertions pass, then your solution will be accepted.

Example 1:

Input: nums = [3,2,2,3], val = 3


Output: 2, nums = [2,2,_,_]
Explanation: Your function should return k = 2, with the first two elements of nums
being 2.
It does not matter what you leave beyond the returned k (hence they are
underscores).
Example 2:

Input: nums = [0,1,2,2,3,0,4,2], val = 2


Output: 5, nums = [0,1,4,0,3,_,_,_]
Explanation: Your function should return k = 5, with the first five elements of
nums containing 0, 0, 1, 3, and 4.
Note that the five elements can be returned in any order.
It does not matter what you leave beyond the returned k (hence they are
underscores).

Constraints:

0 <= nums.length <= 100


0 <= nums[i] <= 50
0 <= val <= 100

class Solution:
def removeElement(self, nums: List[int], val: int) -> int:
n = len(nums)
indices_to_replace = []
for x in range(n):
if nums[x]==val:
indices_to_replace.append(x)
if len(indices_to_replace)==0:
return n
if len(indices_to_replace)==n:
return 0
for y in range(n-1,-1,-1):
if nums[y]!=val:
z = y +1
while z>y and len(indices_to_replace)>0:
z = indices_to_replace.pop(-1)
if z>y:
continue
else:
continue
nums[y], nums[z] = nums[z], nums[y]
if len(indices_to_replace)==0:
return y

ONLY CORRECT SOLUTION!!!

class Solution:
def removeElement(self, nums: List[int], val: int) -> int:
n = len(nums)
indices_to_replace = []
for x in range(n):
if nums[x]==val:
indices_to_replace.append(x)
if len(indices_to_replace)==0:
return n
if len(indices_to_replace)==n:
return 0
for y in range(n-1,-1,-1):
if nums[y]!=val:
z = y +1
while z>y and len(indices_to_replace)>0:
z = indices_to_replace.pop(-1)
if z>y:
return y+1
else:
continue
nums[y], nums[z] = nums[z], nums[y]
if len(indices_to_replace)==0:
return y
Given an array of distinct integers candidates and a target integer target, return
a list of all unique combinations of candidates where the chosen numbers sum to
target. You may return the combinations in any order.

The same number may be chosen from candidates an unlimited number of times. Two
combinations are unique if the frequency of at least one of the chosen numbers is
different.

It is guaranteed that the number of unique combinations that sum up to target is


less than 150 combinations for the given input.

Example 1:

Input: candidates = [2,3,6,7], target = 7


Output: [[2,2,3],[7]]
Explanation:
2 and 3 are candidates, and 2 + 2 + 3 = 7. Note that 2 can be used multiple times.
7 is a candidate, and 7 = 7.
These are the only two combinations.
Example 2:

Input: candidates = [2,3,5], target = 8


Output: [[2,2,2,2],[2,3,3],[3,5]]
Example 3:

Input: candidates = [2], target = 1


Output: []

Constraints:

1 <= candidates.length <= 30


1 <= candidates[i] <= 200
All elements of candidates are distinct.
1 <= target <= 500

class Solution:
def combinationSum(self, candidates: List[int], target: int) ->
List[List[int]]:
candidates.sort()
n = len(candidates)
for start in range(n):
start2 = start
while start2<n:
current_count = 0

class Solution:
def combinationSum(self, candidates: List[int], target: int) ->
List[List[int]]:
candidates.sort()
n = len(candidates)
possible_sums = []
possible_sums.append([[]])
possible_1 = []
if 1 in candidates:
possible_1.append([1])
possible_sums.append(possible_1)
if 2 in candidates:
possible_2.append([2])
if 1 in candidates:
possible_2.append([1,1])
possible_sums.append(possible_2)

for target2 in range(3,target+1):

class Solution:
def combinationSum(self, candidates: List[int], target: int) ->
List[List[int]]:
candidates.sort()
n = len(candidates)
possible_sums = []
possible_sums.append([[]])
possible_1 = []
candidate_exist = [0]*30
for x in range(n):
candidate_exist[candidate[x]] = 1
if candidate_exist[1]==1:
possible_1.append([1])
possible_sums.append(possible_1)
if candidate_exist[2]==1:
possible_2.append([2])
if candidate_exist[1]==1:
possible_2.append([1,1])
possible_sums.append(possible_2)

for target2 in range(3,target+1):


possible = []
used_num = [0]*30
if candidate_exist[target2]==1:
possible.append([target2])
for add1 in range(target2-1,1,-1):
if used_num[add1]=1:
continue
addd2 = target - add1
used_num[]

LAST SUBMISSION

ast Submission
Last Saved Code
class Solution:
def combinationSum(self, candidates: List[int], target: int) ->
List[List[int]]:
candidates.sort()
n = len(candidates)
possible_sums = []
possible_sums.append([[]])
possible_1 = []
candidate_exist = [0]*30
for x in range(n):
candidate_exist[candidate[x]] = 1
if candidate_exist[1]==1:
possible_1.append([1])
possible_sums.append(possible_1)
if candidate_exist[2]==1:
possible_2.append([2])
if candidate_exist[1]==1:
possible_2.append([1,1])
possible_sums.append(possible_2)

def get_combinations(ll1,ll2):
combos = []
for l1 in ll1:
for l2 in ll2:
combos.append(l1+l2)
return combos
for target2 in range(3,target+1):
possible = []
used_num = [0]*30
if candidate_exist[target2]==1:
possible.append([target2])
for add1 in range(target2-1,1,-1):
if used_num[add1]=1:
continue
add2 = target - add1
used_num[add1] = 1
used_num[add2] = 1

You might also like