-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
5e9c218
commit e636cbe
Showing
3 changed files
with
137 additions
and
0 deletions.
There are no files selected for viewing
47 changes: 47 additions & 0 deletions
47
codewars_solns/python_challanges/FindtheDifferenceofTwoArrays.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
"""Find the Difference of Two Arrays | ||
Easy | ||
Topics | ||
Companies | ||
Hint | ||
Given two 0-indexed integer arrays nums1 and nums2, return a list answer of size 2 where: | ||
answer[0] is a list of all distinct integers in nums1 which are not present in nums2. | ||
answer[1] is a list of all distinct integers in nums2 which are not present in nums1. | ||
Note that the integers in the lists may be returned in any order. | ||
Example 1: | ||
Input: nums1 = [1,2,3], nums2 = [2,4,6] | ||
Output: [[1,3],[4,6]] | ||
Explanation: | ||
For nums1, nums1[1] = 2 is present at index 0 of nums2, whereas nums1[0] = 1 and nums1[2] = 3 are not present in nums2. Therefore, answer[0] = [1,3]. | ||
For nums2, nums2[0] = 2 is present at index 1 of nums1, whereas nums2[1] = 4 and nums2[2] = 6 are not present in nums2. Therefore, answer[1] = [4,6]. | ||
Example 2: | ||
Input: nums1 = [1,2,3,3], nums2 = [1,1,2,2] | ||
Output: [[3],[]] | ||
Explanation: | ||
For nums1, nums1[2] and nums1[3] are not present in nums2. Since nums1[2] == nums1[3], their value is only included once and answer[0] = [3]. | ||
Every integer in nums2 is present in nums1. Therefore, answer[1] = []. | ||
Constraints: | ||
1 <= nums1.length, nums2.length <= 1000 | ||
-1000 <= nums1[i], nums2[i] <= 1000""" | ||
|
||
from typing import List | ||
class Solution: | ||
def findDifference(self, nums1: List[int], nums2: List[int]) -> List[List[int]]: | ||
new_list=[[],[]] | ||
n1_l=len(nums1) | ||
n2_l=len(nums2) | ||
if n1_l>n2_l: | ||
nums2+=[nums2[0]]*(n1_l-n2_l) | ||
elif n2_l>n1_l: | ||
nums1+=[nums1[0]]*(n2_l-n1_l) | ||
|
||
for i,j in zip(nums1,nums2): | ||
if not j in nums1: | ||
new_list[1]+=[j] | ||
if not i in nums2: | ||
new_list[0]+=[i] | ||
new_list[0]=list(set(new_list[0])) | ||
new_list[1]=list(set(new_list[1])) | ||
return new_list |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,78 @@ | ||
myarr=[6, 3, 0, 5] | ||
|
||
|
||
def sort_buble_sort(myarr): | ||
n=len(myarr) | ||
for i in range(n): | ||
swapped=False | ||
for j in range(n-i-1): | ||
if myarr[j]>myarr[j+1]: | ||
myarr[j],myarr[j+1]=myarr[j+1],myarr[j] | ||
swapped=True | ||
if swapped == False: | ||
break | ||
return myarr | ||
print("buble_sort \n",sort_buble_sort(myarr)) | ||
|
||
myarr=[6, 3, 0, 5] | ||
def selection_sort(myarr): | ||
n=len(myarr) | ||
for i in range(n): | ||
min_ind=i | ||
for j in range(i+1,n): | ||
if myarr[min_ind]>myarr[j]: | ||
min_ind=j | ||
myarr[i],myarr[min_ind]=myarr[min_ind],myarr[i] | ||
return myarr | ||
print("selection_sort \n",selection_sort(myarr)) | ||
|
||
myarr=[6, 3, 0, 5] | ||
def mergesort(myarr): | ||
if len(myarr)>1: | ||
mid = len(myarr)//2 | ||
L=myarr[:mid] | ||
R=myarr[mid:] | ||
mergesort(L) | ||
mergesort(R) | ||
i=j=k=0 | ||
while i<len(L) and j < len(R): | ||
if L[i]<R[j]: | ||
myarr[k]=L[i] | ||
i+=1 | ||
else: | ||
myarr[k]=R[j] | ||
j+=1 | ||
k+=1 | ||
while i<len(L): | ||
myarr[k]=L[i] | ||
i+=1 | ||
k+=1 | ||
while j<len(R): | ||
myarr[k]=R[j] | ||
j+=1 | ||
k+=1 | ||
return myarr | ||
print("merge_sort \n",mergesort(myarr)) | ||
|
||
myarr=[6, 3, 0, 5] | ||
def quicksort(myarr): | ||
def partition(arr,low,high): | ||
pivot=arr[high] | ||
i=low-1 | ||
for j in range(low,high): | ||
if arr[j]<=pivot: | ||
i=i+1 | ||
arr[i],arr[j]=arr[j],arr[i] | ||
arr[i+1],arr[high]=arr[high],arr[i+1] | ||
return i+1 | ||
|
||
def sort(arr,low,high): | ||
if low<high: | ||
pi=partition(arr,low,high) | ||
sort(arr,low,pi-1) | ||
sort(arr,pi+1,high) | ||
|
||
sort(myarr,0,len(myarr)-1) | ||
return myarr | ||
|
||
print("quicksort \n",quicksort(myarr)) |
12 changes: 12 additions & 0 deletions
12
codewars_solns/python_challanges/test_FindtheDifferenceofTwoArrays.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
import unittest | ||
from FindtheDifferenceofTwoArrays import Solution | ||
|
||
class test_FindtheDifferenceofTwoArrays(unittest.TestCase): | ||
def test(self): | ||
soln=Solution() | ||
self.assertEqual(soln.findDifference(nums1 = [1,2,3], nums2 = [2,4,6]),[[1,3],[4,6]]) | ||
self.assertEqual(soln.findDifference(nums1 = [1,2,3,3], nums2 = [1,1,2,2]),[[3],[]]) | ||
self.assertEqual(soln.findDifference(nums1 = [-68,-80,-19,-94,82,21,-43], nums2 = [-63]),[[-94, -19, -80, 82, 21, -43, -68],[-63]]) | ||
|
||
if __name__ == '__main__': | ||
unittest.main() |