From 6eab27733847924e5f93fc7777c95cb05a1a1b28 Mon Sep 17 00:00:00 2001 From: Naman Paliwal <112724171+NamanGIT32@users.noreply.github.com> Date: Sat, 1 Oct 2022 23:12:14 +0530 Subject: [PATCH 001/448] Leetcode-Search2DMatrix.cpp --- Leetcode-Search2DMatrix.cpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 Leetcode-Search2DMatrix.cpp diff --git a/Leetcode-Search2DMatrix.cpp b/Leetcode-Search2DMatrix.cpp new file mode 100644 index 00000000..3939bd7e --- /dev/null +++ b/Leetcode-Search2DMatrix.cpp @@ -0,0 +1,22 @@ +class Solution { +public: + bool searchMatrix(vector>& matrix, int target) { + int m=matrix.size(); + int n= matrix[0].size(); + int r=0; + int c=n-1; + while(r=0){ + if(matrix[r][c]==target){ + return true; + } + if(matrix[r][c]>target){ + c--; + } + else{ + r++; + } + + } + return false; + } +}; From 23ad1c4fddd642505bd54547ac257dc86ce4b6b1 Mon Sep 17 00:00:00 2001 From: Naman Paliwal <112724171+NamanGIT32@users.noreply.github.com> Date: Sat, 1 Oct 2022 23:17:03 +0530 Subject: [PATCH 002/448] Delete Leetcode-Search2DMatrix.cpp --- Leetcode-Search2DMatrix.cpp | 22 ---------------------- 1 file changed, 22 deletions(-) delete mode 100644 Leetcode-Search2DMatrix.cpp diff --git a/Leetcode-Search2DMatrix.cpp b/Leetcode-Search2DMatrix.cpp deleted file mode 100644 index 3939bd7e..00000000 --- a/Leetcode-Search2DMatrix.cpp +++ /dev/null @@ -1,22 +0,0 @@ -class Solution { -public: - bool searchMatrix(vector>& matrix, int target) { - int m=matrix.size(); - int n= matrix[0].size(); - int r=0; - int c=n-1; - while(r=0){ - if(matrix[r][c]==target){ - return true; - } - if(matrix[r][c]>target){ - c--; - } - else{ - r++; - } - - } - return false; - } -}; From 127c229d480ee276b3ea79a6a2b1eecdb7d30074 Mon Sep 17 00:00:00 2001 From: tkirtan Date: Sat, 1 Oct 2022 23:23:24 +0530 Subject: [PATCH 003/448] Added search in 2-d Matrix --- CPP/array-2d/search_in_2d_matrix.cpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 CPP/array-2d/search_in_2d_matrix.cpp diff --git a/CPP/array-2d/search_in_2d_matrix.cpp b/CPP/array-2d/search_in_2d_matrix.cpp new file mode 100644 index 00000000..3939bd7e --- /dev/null +++ b/CPP/array-2d/search_in_2d_matrix.cpp @@ -0,0 +1,22 @@ +class Solution { +public: + bool searchMatrix(vector>& matrix, int target) { + int m=matrix.size(); + int n= matrix[0].size(); + int r=0; + int c=n-1; + while(r=0){ + if(matrix[r][c]==target){ + return true; + } + if(matrix[r][c]>target){ + c--; + } + else{ + r++; + } + + } + return false; + } +}; From 467323276c35cee1b236bb0a979389ff67b5f175 Mon Sep 17 00:00:00 2001 From: Narpat Aanjana Date: Mon, 3 Oct 2022 08:37:47 +0530 Subject: [PATCH 004/448] Number of dice rolls with target sum --- .../Number of Dice Rolls With Target Sum.cpp | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 CPP/Problems/Number of Dice Rolls With Target Sum.cpp diff --git a/CPP/Problems/Number of Dice Rolls With Target Sum.cpp b/CPP/Problems/Number of Dice Rolls With Target Sum.cpp new file mode 100644 index 00000000..fc091137 --- /dev/null +++ b/CPP/Problems/Number of Dice Rolls With Target Sum.cpp @@ -0,0 +1,30 @@ +class Solution { +public: + + int solve(int n, int k ,int t,vector>&dp){ + if(n == 0 && t == 0 ) + return 1; + + if(n == 0) + return 0; + + int take = 0; + + if(dp[n][t] != -1) + return dp[n][t]; + + for(int i = 1;i<=k;i++) { + if(t >= i) { + take += solve(n-1,k,t-i , dp); + take %= 1000000007; + } + } + return dp[n][t] = take; + } + + int numRollsToTarget(int n, int k, int target) { + vector> dp(n+1 , vector (target+1,-1)); + return solve(n , k ,target , dp); + } + +}; From 697ff992b77dd78fd6745108b06500bcf3c2293c Mon Sep 17 00:00:00 2001 From: Dhruv Solanki <71400881+Dhruvsolanki345@users.noreply.github.com> Date: Mon, 3 Oct 2022 09:17:21 +0530 Subject: [PATCH 005/448] Create Reverse_Nodes_in_k-Group.java --- .../Linked List/Reverse_Nodes_in_k-Group.java | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 Java/Linked List/Reverse_Nodes_in_k-Group.java diff --git a/Java/Linked List/Reverse_Nodes_in_k-Group.java b/Java/Linked List/Reverse_Nodes_in_k-Group.java new file mode 100644 index 00000000..192f99f0 --- /dev/null +++ b/Java/Linked List/Reverse_Nodes_in_k-Group.java @@ -0,0 +1,52 @@ +// https://leetcode.com/problems/reverse-nodes-in-k-group/ + +/** + * Definition for singly-linked list. + * public class ListNode { + * int val; + * ListNode next; + * ListNode() {} + * ListNode(int val) { this.val = val; } + * ListNode(int val, ListNode next) { this.val = val; this.next = next; } + * } + */ +class Solution { + public ListNode reverseKGroup(ListNode head, int k) { + if (k == 1) return head; + + ListNode slow = head, fast = head, newHead = head; + ListNode prev = null, next = head; + int count = 0; + boolean isStart = true; + + while (fast != null) { + count++; + + if (count != k) fast = fast.next; + else { + if (!isStart) { + next = slow.next; + slow.next = fast; + slow = next; + } else { + isStart = false; + newHead = fast; + } + + prev = fast.next; + ListNode tempFast = fast.next, tempSlow = slow; + while (count > 0) { + count--; + next = slow.next; + slow.next = prev; + prev = slow; + slow = next; + } + slow = tempSlow; + fast = tempFast; + } + } + + return newHead; + } +} From 15c1a9233b96aeae064d67f7efb0e725f4875bd6 Mon Sep 17 00:00:00 2001 From: alex-2003-47 <114850023+alex-2003-47@users.noreply.github.com> Date: Mon, 3 Oct 2022 10:57:37 +0530 Subject: [PATCH 006/448] Added Kadane's Algorithm for array --- Java/Array/Kadane_Algorithm.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 Java/Array/Kadane_Algorithm.java diff --git a/Java/Array/Kadane_Algorithm.java b/Java/Array/Kadane_Algorithm.java new file mode 100644 index 00000000..89f4a70a --- /dev/null +++ b/Java/Array/Kadane_Algorithm.java @@ -0,0 +1,18 @@ +import java.util.*; +public class KadaneAlgo { + public static void main(String[] args) { + Scanner sc= new Scanner(System.in); + int i,sum=0,maxsum=0,n=sc.nextInt(); + int[] a=new int[n]; + for(i=0;imaxsum) + maxsum=sum; + if(sum<0) + sum=0; + } + System.out.println(maxsum); + } +} From ad271c07cdb52bb9195de1f1a798ab78eae17d86 Mon Sep 17 00:00:00 2001 From: Vishwajeet Shivaji Hogale Date: Mon, 3 Oct 2022 11:34:04 +0530 Subject: [PATCH 007/448] Oct 2nd : Number of dice rolls with target sum --- .../number_of_dice_rolls_with_target_sum.cpp | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 Dynamic Programming/number_of_dice_rolls_with_target_sum.cpp diff --git a/Dynamic Programming/number_of_dice_rolls_with_target_sum.cpp b/Dynamic Programming/number_of_dice_rolls_with_target_sum.cpp new file mode 100644 index 00000000..14ee230f --- /dev/null +++ b/Dynamic Programming/number_of_dice_rolls_with_target_sum.cpp @@ -0,0 +1,39 @@ +#include +#include +using namespace std; +int dp[31][1001] = {0}; // Table of n * target sum ; This is used to save the results in bottom up approach +int numRollsToTarget(int n, int k, int target) { + dp[0][0] = 1; // When you have 0 dices and target sum = 0; the number of ways to get the answer is 1 + + for(int i = 1;i<=target;i++){ // when you have 0 dices; [1,targetsum] numbers there are zero ways to get the answer + dp[0][i] = 0; + } + for(int i=1;i<=n;i++){ // when you have 0 target; n =[1,n] dices there are zero ways to get the answer + dp[i][0] = 0; + } + + /* + The below loop has Time complexity = O(n*targetSum*k) + It finds the answer for smaller target sums and build up to find the solution of the targetSum + */ + for(int i=1;i<=n;i++){ + for(int j=1;j<=target;j++){ + long long res = 0; + for(int x=1;x<=k;x++){ + if(j>=x){ + res = (res % 1000000007) + (dp[i-1][j-x] % 1000000007); + // res = res % 1000000007; + } + } + dp[i][j] = res ; + } + } + return dp[n][target] % 1000000007; +} + +int main(){ + + int n = 7,k=6,target = 30; + cout< Date: Mon, 3 Oct 2022 11:42:53 +0530 Subject: [PATCH 008/448] Oct 2nd : Decode ways --- Python/decodeWays.py | 46 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 Python/decodeWays.py diff --git a/Python/decodeWays.py b/Python/decodeWays.py new file mode 100644 index 00000000..b8f56184 --- /dev/null +++ b/Python/decodeWays.py @@ -0,0 +1,46 @@ +""" + Leetcode 91. Decode ways + Method used : Memoization +""" + + +def check(s,mp): # Checks if the string is a valid number in the map of numbers + return int(s in mp.keys()) +g_d = dict() +class Solution(): + def helper(self,s,mp): + if(s in g_d): + return g_d[s] + if(s[0] == '0'): # if the string starts with 0, you cannot decode + return 0 + if(len(s) == 2): # len(s) == 2; two cases : checking two characters(s[0] && s[1]) seperately and the s[0:2] + return check(s[0:2],mp) + self.helper(s[1:],mp) + if(len(s) == 1 ): + return int(s in mp.keys()) + """ + There are two cases + * Pick one character from the front + * Check if the charcater chosen is valid + * Pick two character from the front + * Check if the charcater chosen is valid + the conditions below help to validate the conditions mentioned here. + """ + if not check(s[0:2],mp) and check(s[0:1],mp): + g_d[s] = self.helper(s[1:],mp) + return g_d[s] + if not check(s[0:1],mp) and check(s[0:2],mp): + g_d[s] = self.helper(s[2:],mp) + return g_d[s] + g_d[s] = self.helper(s[1:],mp) + self.helper(s[2:],mp) + + return g_d[s] + def numDecodings(self, s): + """ + :type s: str + :rtype: int + """ + mp = dict() + for i in range(1,27): + mp[str(i)] = chr(64+i) + # print(mp) + return self.helper(s,mp) \ No newline at end of file From 2684c7d583484af6264b524481d2defb26b46025 Mon Sep 17 00:00:00 2001 From: divyaa1511 <102688183+divyaa1511@users.noreply.github.com> Date: Mon, 3 Oct 2022 11:50:47 +0530 Subject: [PATCH 009/448] pairs of integers whose sum is equal to number. find all pairs of integers whose sum is equal to a given number. --- Python/find pairs.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 Python/find pairs.py diff --git a/Python/find pairs.py b/Python/find pairs.py new file mode 100644 index 00000000..79c03826 --- /dev/null +++ b/Python/find pairs.py @@ -0,0 +1,13 @@ +# write a program to find all pairs of integers whose sum is equal to a given number. + +def findpairs(arr,target): + for i in range(len(arr)): + for j in range(i+1,len(arr)): + if arr[i]==arr[j]: + continue + elif arr[i]+arr[j]==target: + print(i,j) + + + +findpairs([1,2,3,2,3,4,5,6],6) From 8070cbbe01b66bbe9453b7f1f870a230a7e9235c Mon Sep 17 00:00:00 2001 From: divyaa1511 <102688183+divyaa1511@users.noreply.github.com> Date: Mon, 3 Oct 2022 11:59:52 +0530 Subject: [PATCH 010/448] permutation if two strings are in permutation , they have the same characters but in different order. --- Python/permutation.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 Python/permutation.py diff --git a/Python/permutation.py b/Python/permutation.py new file mode 100644 index 00000000..454c6e4b --- /dev/null +++ b/Python/permutation.py @@ -0,0 +1,12 @@ +# permutation + +def per(list1,list2): + list1.sort() + list2.sort() + if list1==list2: + return "permutation" + return "not" + +print(per([1,2,3,5],[5,2,1,3])) +print(per(['a','c','e','d'],['d','c','a','e'])) + From e23395a5646f05440456372307c21acba968c204 Mon Sep 17 00:00:00 2001 From: divyaa1511 <102688183+divyaa1511@users.noreply.github.com> Date: Mon, 3 Oct 2022 12:07:25 +0530 Subject: [PATCH 011/448] add two sorted linked list add two sorted linked list and the new linked list too will be sorted. --- Python/add two linked list.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 Python/add two linked list.py diff --git a/Python/add two linked list.py b/Python/add two linked list.py new file mode 100644 index 00000000..5dc31e45 --- /dev/null +++ b/Python/add two linked list.py @@ -0,0 +1,26 @@ +# ADD TWO SORTED LINKED LIST + +class ListNode: + def __init__(self, val=0, next=None): + self.val = val + self.next = next +class Solution: + def mergeTwoLists(self,l1:ListNode,l2:ListNode)->ListNode: + cur=ListNode(0) + ans=cur + while(l1 and l2): + if(l1.val>l2.val): + cur.next=l2 + l2=l2.next + else: + cur.next=l1 + l1=l1.next + cur=cur.next + while(l2): + cur.next=l2 + l2=l2.next + cur=cur.next + while(l1): + cur.next=l1 + l1=l1.next + cur=cur.next \ No newline at end of file From d4cd7c5325057b4a9b4fc91420ae043b044e4988 Mon Sep 17 00:00:00 2001 From: Narpat Aanjana Date: Mon, 3 Oct 2022 15:54:28 +0530 Subject: [PATCH 012/448] Algorithms with there time complexity --- Quick Review.pdf | Bin 0 -> 206530 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Quick Review.pdf diff --git a/Quick Review.pdf b/Quick Review.pdf new file mode 100644 index 0000000000000000000000000000000000000000..77d814a1e2b2045b44122cae4e296ad221283606 GIT binary patch literal 206530 zcmbrk1yo#1)-Z|(5AN;+r*R9?5Zv8DBTeJ(65QS0-GUP|xVt;ST@oxx{w80$t`7GLI zXDTjkF)lD8SDJ;N#_!lI9nbmf+zP;Fgf!l$HYW2>>MdC4tgnMjUeX<`$j?e^>|b zJl}#Ho>}CE5~B1)$=BO2Ng|*#cyTfeP6+H8nTEGBGhVF=<6iM6VX7(;(HQ!=KDUVi*#q zD<+6ASA&_bhl!>Ol)mdLVbcAHmT>@^d@WJZCtY776cKX`mlUIsAG8`6Lp9GqB>O~| zH_$sc+N+J=4i8T|cJMCjb=3|m96HReZ7dB8RH*F#@#cSM!NnEi?CR-k0meY(#6YE| zmsXL%K>deip4B4A_b;_bQE~GN{H@ff0GyovlnOUDAJiPU`M5bWo`vxrteTjZz!lY^ z*Px^SbRa??#u85mL}VK8@8t@NECikIm=Dtw6rcn*29X7S6;oc@vYdA9)%+qd=FfC$ z*2KSJm;Whczzw9+yJ-`;A-?H$I&Z?BV`8FueF8BtsW^cl=|yHBo|R)7uE!ru1e@r? zy0Qf$V+DUjk0C*aLw8baMfXC#Cd$b0=XB@PFRa@I?yZ`l*3d@EIs5{~DGF3)1; z`pX8PxXfHNoh>Z>*rwpKkE#DrsRo4cT6!EOG|Ios}dEDPbI2kKv7gs7l?ti))R4dSE%LT>x9A%)iXt>(_yU*pM891zS z;syMUqU6`gg+Q78ia+VaznHDyUE+S#Jf1A*f`vwRgX zledlmFb|DnA%MdI}(;PQ22f#Tezi0JiX08awh7y>P;ja6uUh+~Q0GpZ4I~ z9pG;?q%*_1smbV1<)!O)5Wk`YJ?^W!yrzId4`v@-*dalZO8v!M))2PP))J=k{+nAu zwc$X!v;SDf&AF@XPuseEGLu1pi|YGWOu`AWuNeahMitYd`2!Lq1jIMUWOPp3=k)JY zj&qR90dlkla3aE&;RwoL_$VtH}(URk4I1G8)SQu)ZNmB#vl3X9hMVsHKx(-Q7DHZOz2?x;Cl~LQRP*SpeqYtxH@LX>7{6Ht;6-%u zQc4aN;Mr|<`V>0A@V04Np=UBLf&*sVOJv5SIIl3Ryz&;ss->3FUVWFS?TmOo_N|TG zo78GQG&5I=hU-wh{M1YInsIa|DYa zUx}<@rBy-|`KW2%P~lRBPNv18oXP9sy{~7RXrsh3`xu%;OwdIl#)7X_GcAM7(AdQF zHn-br!zcW=E-4l+<~F;?bIFRU;2don-rqAs z;DEjF`ey!Xh2I0IPgDd}lFup7C)Fwh45~FpZrhZP^I_m&905I9e;<^eqticv^4~bw zKR)mP0MEZ%NjB0jY07$l6Mf{`AC+=LN-n$A9gRU%9aZom*up1ZQM;pekBCw9;F3|V zG?}FG3L6)m%_lf91X-38~hUH8HO|a z2!4kf5=693FJ0p_at`+n!dO_P9|*_?r*{tas%z4@tFNhliof(vveCnvmxvBE&bnE@ zqiRZNts?v0X=MzWemi(fCVq6<4dQZlHSPZ-^;Q4X^lN(#LeF zCQ>h$1|y1>X}&=IC@JHfX}*|!alxr%VXsRu>gJ6WQjLDr5vod8&vaJqtzf3KD2p!{F8!ovqm{{ERiLA8>+ zWxXMe6?%P-=aXrOu=eFb5w8E!D$3WQ*Nd0%qx0+di!2Rk96uknigDE|dbd>|?sw!| z2KJAgeiw{7{wh*F$jQR@4GOzLo9d*STsc26gVNNiz>>GdOy z&$bZ$)&AqJ1DCtncNfg&vkqii0mNnEc}}sU!Xenl;%DnYFWD)Lwzf=@=iy%d$Z|Th ziW(=Hy{4(l^bipJDzK+_s`D@!2o~_$4g;Kk6i!JAOVBY~$vtxp3N5pZFMy*zQ(WcH;MYsT z0k_+e7Y6Kgm?M`9)_x&6?+J89_N{+;{6Kz;2LDEX8GY#d8~!TPbeRQl85P|8BD5Oe zT*O6w&%k5nN$APf9`xC#)7$oCJ!Eeod*2UGC7;` zY~v0MD)n8or>(}V9Y2h;@-+)55wGNb{Pkv<9I2G7Q(V9+;zFW3LaZ4Z$%u!WS=8R% z36sE~E!!bHP3G$1dp!S1!V3hy%rugBb^!xnc@kd&E?tvwM;YlPf0vB>@v;s1L^S974m}LYV>m?s5sdAtK)=z&{Wwpep%{(`AVKiQi=SLtRpOfo<-^)1 zk;hX^?G%(R?*L+)<$X3)ZNsYGn^c(-Q$M^%j2>F&o2XQ(#po|Px)ucFhX)DLMVu(l z+Y10K<@j%|ZX{`s_9})nkeud^epy|v-`?aB^NWg5{KM^x1#$zbE@Bv^{2 z^Bz@lTjJ?(a$Y(;$vqg>F#pBlp=c$%{a|ZPPfYo_r`n8kS+0Cz>r9oUBOig+Y&{s4 z40D5{T)>-{`Tg}G?ZUn6D?GM4%|Mix(IAO-Mu})4ecj?uNxZ+nF7rv|GW10oCY&r? z{I=NZ>Y^8mX>c12W+r8AsHv-%?sfwHW`+@lL^C1FVP##>toXS0z%c=GVQ)THkO=O& zz<_POE>@qKpzZAEBzDP{sq8V9lE-4^V=7_BUph@OwGBvIMA>x#rD)4BXF4`93&rsyax!Htm^VD1a+^xkTl3|Jr8P^w3YLy`$2!3o*}uGb56yZY_qsp+K0Z7z z;QniT;N$v_NIICJWV6qS6?XlEFSPzb=Nf4dwa z=qn%@Vt$NFaUcv7Fvl7oSGOowm0i9 z1#|Uwl7`gAuD!(l4zVEsMk0qYI9_&&*GMgP{ zoP?vGJQgcYsoy250cg$ad-X}?G| zi9WiK_Tzj}muXZQaWsiN8Z3w-wB3YGI)yz4Z3-Lrqi0WI@6M4$k~=`c=-(j{!QdaL zX#TyuJ}<@ptG#jy{AWIx_#a<>xhw`&S(7z;>hPyRD@v;Bk1GW{@st$ zuNeEIGnX1R%`cv=7}g5IB}fk)^9UHR>pU024iTByezitdlle>tWOlke2(*GTGO&7I zGYR;#^si-KGT;F$O-h#%TWhJiRnM*_S?5Tq#rXc(#i@#}6Z(cwUd~9#?ocPL zFCg6cq398vcz<@Q@0D0L%yBacb-)~Dxd}l?^V1vRNOkc?O}|QqtW`-k@3(ZZ|n zFc8{3d(S%vQvvO-o^R{j?=w{TeD6rIuHNv1HTEZNZs1Te?SExC;Q4RW+!0a8{P?h0 zdN|GTHuRn)P7+Dw_i8fQ8Do{Ky7b1D#94jjTC09|(s~)$x|2a+Ys1?nFmqbg;lwAt zv|UQ$UegI4MQPuzTGFbq>n=St{I)3&_DKlZ25ZUwn|VRoQduSMV8cBKyZvT<``4X= zjxrk$u?q^m^Ukdlt+E;#48>^ep}^fygqQp}vZ3Q~jque8(T?qpWz2e0o6PM}c16h( zjyG#rmUeU1JQ(7QsF7W60EfIm>G$@$B&m}<{a#~U%7opO#N%!42=R36jb>_!h#XOs zMbb{NWb!i{lYO#jebh0O&Ddo5*`EpS&z-bie2*Xg8F!UZKJplT`LzQbBd-o39#$B% zhq2}PMYrOe_ZQU~>H=E$>DLjmm=4*AX5FDrTyWLzXcE?Rb_a-Q^7s0s+7#m-Mk88e zKRTek{PA*k_vwWQk8ntM(QPBZ^P(wOvttI))4V!U5LY;;2{~Tc!Te1#!EVEe(nZ7( zjtD__C846%H9Ex$TM)Os4C7#zGG;fr^OZ%C8NkK9DP5?NyUl5a#G8Dvaz##MihXeU zi|LIg5!Zt&k(^4o8gky@(5KU8(>q^%Ih7HuKer=GlZPI@B+);YdUtz-PK8i_-AcX9 ztNZyy9OaxjlkZ@V`{7cLUbl%1PKSejov+PM6^k!Kyh=pxx-S+HeE0c>P`W z?XQMQhc-NapLu0WY>^P3{ldFn*}4(cP9ucK-5oRKln~1d`pd2FFU1h&x38?qKkstz zmiz*~c+7qk0$QinVP1`HgBjl=7o3o-j7cHF3iuM*H=f!ysfX}sP%Ss!z4QuO9X2qy zLIP0)-qS5#v7j~JxZuNM4{DK26VH(Dgp^_wttMcXd(y`F)> zi3zfJ?)Y)eaC@+NL^7Qc3=ZvdD$t}@v*e=?6El#%GE7~anPED~kHpQTr9zHv^x}5w z=>gon9Yj5u@LlH{vQEs( zG$MgUT`-1h;vi`kN$8riG&|*Ig9y`u!>UvL3($dTcACJGT_S_2%EUWSssI0g5* zC9ZH-Cd)J&9G%dJvqpX&%TM`gwE@91$;89NvM&X~snEX`V!z z;QXuU+oJ!)casmlZktcNiQ{@aO3W^=eLFT5+D$GCe{}h;+~`t+{6Ehbuwx1J5KzsjU<=n5HnYi>a(as!&9^D>qx< z5l>wlm76S$8HQNBu(=qD=XO<$^fMAE!C2Dk2*Z=hOXI8x2k%m;VJFe$712ZjBCh{i z3yFF53R*OeW)p{p@bb&_DG(2BG;xY%F5lw(?+*nuT_H}d)m|kq44nv(d}7$b9hkqV zUkXmqCu*5TPN;)iCWs>8*Vek-N~hkLXkiOs7Zo?oLh9%m0`sm_)q~4VwdaGX^lBdm z(~9V=*VeBC8rG;ozZFVhu@99X0l6~gh{~$mL{v=W^45(skJAYD*B;d$h@a-k6*x|5 z{N{*e*{LD-vxx~zo!8#v?#EpD3vReXlkiaUU~ z!~;l+jO^94(*7<(&SJ^2$|;49jc&cMYPCIbVivyf#3J;bs>V%h@}_deehJB@)FCUK z|Mcpj{j??w5>}QSXQn*)gvtpsA*zP?_cs6ken|C?{d0a!fq%~%CsUOi7R3LoBz>A+ zW?o%glxu3y*wKquiPP|p7qX$iNkmIxzsp~18PQ`rPoYStBD1ymIV}v>_G+}M(f$<5 zM<9uXQxprwc0$#94qjL#>g`yok4ADOcDK0ua%RXgq2=<$I43X9F!y6Smb{#kduvxg zuVhe)TFup<<8646Nz1b2yoy>Y6%SHG7CX*t#8N!;Yw7K`z*Yl!_jGpRHYava&L+w< zC+427?LeB@bQB|~kjSx0qsP**)Yda87b{Sy<`OGpfnHD~KlWOK?YeHmz7SU0=c5Dq z^tY#$ZTeDmDTdVT1RlYu$R3Yq!`}nxDRbf_F)K!leUWK(3!5ZxRosuD7Z0*8NLV`v zcLHB;2M!SKNU#d42Kq@Qk#aW6S-g1lt}3KDPF z3o+-MaxPj*p*#&24HqYNUk0DpkLx#|Wj9jNL0p^UyYFdem-ao@G#(!>*)F3M!`-_* z^rMZMd{6A4NhsVmcMl!`Yen2 z{XEEVh-o&#AWqh|w9L(UJO|uiJ90DYn`MV3CQ&XE$1hr0b@w-&qhl(1c1&j!JkGck z2}yD(gk2?=KF$=b4x-0rN#j4EanD^*Yaq$KLvu4PGhs@Q6Bd+)jjo=&SejH^j?1VZ z2JrZtA}cL(OI5WhPW8E$95I3W7nk7qeC{KZ2;#q1#{CRm<*f$NK6=imFn|EIGgK7PS}_l4$E1shT>ywJy6mgXG2uQDCpQph~< z(x`=@p6TXlhNOn;c!p9>{_lBcXEXp#3O6#7xh^wvv=!;GnR- za>z`GGcq#TQ4fSa4yxt1U8>p6z$(B_bo!2hxy_Y=DZ*XICNQx4F{=Dak3KaO%iG_Y za0o1I;ZeaBhYemm?<)!|53g6wEPl0r>I(|L!pTVjed}h@Yk5*bFe^0cHtw2}G`*eH z_@+you*k&2QzJt50^>ZwPIrv0;54MxZjYz~ph`1E#gM=ph_1vYORXNnF=Nrv2;v`@ z(*1OwvnT0dNX}x0RSqDmVq;O8FucAi*npJdJsV&eTS>c>6?` z9&~1`njX|4#MJ%}6eV;LCC1)D?yD)}(BmUN40d0hMC0efJu(XZKpR`_$Rg6#S9l-Fq zPC&s*g2$;8NmA88xBS&N_i-zVg+1^HvE90QS&pPiTOJ$>h6z$l@Q>7bd2Ed3$MZyp z{2SLFfSlEUB_&;fy|W%KZn!gqx?EJRjUGUObo_64eg0PBEzMd>iRkqw7KmD~+C;(S zq(|D@b$>iadJtcMpNHyeQoN}(i54!`4{6TU`va82oh~F?0}#m~sR!&BKIdMDT($-UHGRmK+=;&zZ7|`n(UOppu{(r^=1#GNmz=Z-n zK0YBKA>9981i!an5Mbzj_rhQ!!@Pszfrp`ifyIV}!-o4k2wMaL3j+rQ_-BUy0z@Qu zgcr!La44u~u+UCec*KA9K>y(okzk*@p`BPTuyFA3urJVFh)Dez0S5!^!bZfQM#81x z;+9ZT$HV89)C4)X1SU2Tm^ud)&CNegBqSmxp{1i|U}R!`1>oW17Z4PZ0!qugk(HCz z(9+h?)zddKw*Xs0tgKz#+&w(Kyn{nRlM5Se!onjWqmoim)6z3Cvx-Yf%gQS%tD2fy zTH8Lfcl7lS3=R#CjE;>jEG{jttgfx^?(H8O9vz>Yo_+pudw2iv`1RX&Y$&(zut z>Ogi|xxTi65PV)V{)Q0z`;Q)rcE*TCB}LJ^dZ4e%(V%v4Fms6y_k|w?vO)%lUQ+?&*SaF*%~tY zY4nqC$*q@T-I@+e^paG~OGy$6LN~2+{M27*hzf}{$Im?eJP;@Hl)IQM0uGDHl z4Z8Mfe)~qIRGL$1NDc?OzyoY;==3}Llwa{%Uybd zhv#1A-OcwH6d`{jrb1OwzEz@dLZY6FdrOi9&z4356Vb+6$(5HM z%I@~zTBBI_)9M1MdI$ba0nePCbDFZcz6^115Z2gUlO|$Vt!qnzRtYRN7OA^iCctV? z!1>N5*lV;}=~gTAv!62DmPmSY0P<=fX~cF1ow7>rbYuEhJ9S#qx|wK}qUBg_j;^kQ zQR!RqRF5+)*bzuuZKh~ZGtB@P4DUNnP7>?dP|R0KQ9G#5^p{?s#C0_Z3M01|-GJ>h zv1u5vEj>Jn0j5`1b?&?=e1A@l=Cjz)44tnoss^hX12KOtbwcOtY6+49&7SJ$oJ1+*R zV-Xe6dX1t<`AK$Y?WoCMCE!K^8US-^H}39>I+>)(%CjUBK+9K}g*`}{%64VCY|%92 z<)}BaX2F&(FX?-B3Ya6h5)zUl0ZmPRCK+Sly344DTrg(jxP+r;S1IzCvK!^~Uw8Ip z9KJTYel08(QUZfSR1eP?&5Q6xzQ1ZY_9G<1&TS$9f?%MAht#2fQ^_eZ*2rQ_Uy_9#9+` z8wLo38V3SU{N3-_KcOso6=siUAdFo`xu1qj$HSL6Gh2F=_~Kj)yqFtG%{2MhOt^mA zod68>@bK`H0ek4QqcK?0!10_c&!t4L-YTIJ(MpFp(UgCKi1nAWN*o zg=p<_C`Am;H_$Hih|a_?WoK=FeX`9QnP?NcwzXRwZ~1mjB}5w7 zBCIF8q|b}rWj$SjiYFlFMp`*m!QhU!QpxJvznquvBB8^_kAxWRecd# zK!CH(tDko6)xQs$$Z!)BlJjo&>_wX&P%K~8 zEvKl3BUZxUcCQS*@4T8`$LLXmMEvEXiDQ?O3b+2^sde+4zAGrvqe)ff4@dOhK2piA zSlNr&gbW?X!AfZxrX+*HaXiZ9aJ3p{EyeBE^j?#Ag_&AxgUGsGqxIi9X{n5Zlg4 ziCXKDibvcLqkD`Fn${ZeE2zVUF+~}OVwKdJ$Fajhgww}dRFq7w-CP`Gk)OY9($3Lx zXkyhf08|BC<3Iz?phq#Up>eurRHZ1pw(p%RjEe4?90p&jB92h5;>MgYuguJ#%&EN` zc^;v+G_S1Mt^zW%lhX2#LU{;#jlZ_YHLa6YEgp)ReWlIKm(*=c%$`!@22pmX!fFlru8$WN2AJm(mRa7lJ4TZ z5-=Y(skKAJ;9R9xBpxn=z7+Im3W}XCU8$=RJJeeG?rc+sje;n-kw;mUTF!nK4gOT7o$b8iqP^4!7_(z!p~nh0DdXwVKHRtJVzm z^M%*NJ}PBue3zX>w0J3rhV3D;wMEx8!X(ybOVSdpYy#LMRFgo)B{N1Ye>B_0`3eKmNm|$S2MHU4eCn3^`LgfEfzgh&fr9+WY`i* zbN7_>#Yzf+Y$T@=Y4nyySpVI0XY5&vSCiB7gBlrEqZwB>*(QRZlX3SI;w(PV=RL(? zfzQU}SUHhjSx9K$xAAlnXwV^apG@v?>NXVyaNCQ4&Oj3ptri-Snc0$A70^?QoJO8XLOm1- zS7v{3?faR=`y%ao>CDUw!rdssB$yx?J2Q(~E$jAr7AH2@IT<(c3R=Da0-8*QzQ?B^ zN_8L*qOU18QRqtxo3#im9I)O(a(-pZveD|LCgbgDm;=hfVg+cxDT&lc;O`EN&{LqcA$8KC;94b@3VB zerwH9+psh{D^Ls`jz`w?CiE&Ynb(2fm!wQaMuxlRXJy*B&@ayAaCIl>%YOM3bMYB{ zec8DD^AYDCMQW1Pc)^lkedJMGXW5Au0&pzWBS~H;$c}OmrmwYVxVX4@Bo{j?E`y!$ zwAI!>?+&jMOL=AR0-I3m>by%8-9;ismaSI4wGxQ+Ek!AKEHWexTN zH|B_lO6G^T%&%Ks^1tMPc(5NwSb0B;1hjk!)3K_Rja$dA#BZoRuJ&#@oII1F^QpSu zS)ZjyOH*0)M@JJOq8sylMm556T4VtCT7iRIwX>3I{HisjK>~yWk2=2SLfRA zPYqGqPlkcl+FH_gV6H`OFgi3Ukh1it>7TyZY#+<3Ksi~aPbJHUGSpkEToMX~bY9gh z&CTh4Q_-V9eiuwBR=rul_U^@PzzOqs(8|p_0nDI)-*eAN3hI)HoQnD2fw1*jVgz@I zV4h7bO^_P16jklRvfqo5h;LtL=^sjVH=5qdsz%+_1NLMPE`8hj_e+<`TH~nzAR|Qk zFWXWwVU;P}+Ej3Y$SxP_zSmN)+Q%&=Rdc7Cyv-C&XwEM;5(mD4f zYAn48b;&9rl6^%lhvK$9VF#;hCaou|7Joi&NlWs?b)hWg;4nF{kV|c#h#A-!>XuYA zZS7wS?Du1c2{Z>9gegkVzqhhO_z(i?+0?`zrVbN(4Ct)R!>nwLBq)A0IRm^uDjf&2 z?ur)UkF%O}tVL!TvlOw?NX2p;3q^TPHqxTs**MRG*H`zQ3Q=}YJPlyIJF!9P4E-%- zPud^U(&i1Vy9qCir_duSb>&2I&+!A?bev~+Z~19PaURCuW~Rk6Qqa}R;xW}n4)$inO;6w)p1Uxbv#qHk_fk{jYGihY zXYhwU+j@=ieOOJbL+F!6X1&rv9dz%|vOYG7%IGOg!q= zR*}dW1BMnwBv!8!aV7QFm$RJ?r>0E@92ZNwPY3+U?kTpud38DNSYw6VI6Tax=v<2i zaAGJ*XC4G4NZrH zPZTL30|yk?RYg7O=N8vc>-Ao7gEQgOP?!}bWS#8Q4q^_&j(JgTy;v5BGTx$|aJ81T z9QEDIdK3j1?h;_hggF*P9G)rW`Z6BB_|HkCX2= zL^^Nz%K7OPwPRAV!qm%|4paz;u{nFvc8%uui}hE6KZ;u)nv*th(yl0D^1Icg`Y#t~ zEpH?WONtjtUK9ueVXFbc(N<17xK(;6C<4jC!lLB)FD&hVh)EjE<`#!ky#h{#g#)nO zoO7G{sSC`)Ld$8*w@T%>WYd=p^{rWt9EVkLHF~sLI(1LW0c+#kBmKKmqe(GiCOFNJ zqk5YlYz#NlqNRs3l~<3HXyN=c@|28a05o+{LCzR$M@BXbr(?-cG^Ky6*6F1TgDH?F zdn4I_pXQ`{W3%o#Fg8}KC*ntCQ3f+tGyi;2t*Jy<4zoXeGsZ>4C3$Z#JUp7$_AcvZ!thy;-C8xF~@#_7G|3O-qnj-k2M8Xt@h;?>o zM9SRoB-h~}-p#-Bk?vo7RI%7=!UCI!LaUuwu+2(sZ+;|MsEgw-52P@&2w@R@$Wg8$ z6+LT83l}V^T64A#6-9-|_+;6QD-#1BseLZo+J?CFX%YlK$Pa?G8B{3+iNDc*kkBuG zSv7?WLfaxuWu%$g`ewuQq|VX(j{a%N>+tPC`Pj#LWvwT9-|Qa<2tTPgL*TKRq`(BU zrR!1}J&UJQN!y#*# zgXPiWlE6!^iY1>8_2aJ*s7tx+D8}S3lPr8R6@;B}x`Zg{#vcNT^bHcTcIN~c^(Vmd zn=vadBgcf6#ow}Cj>z9+7)DfGXeGHH2;{YNV;D>>QQhGAnv2V$qp7NZ@t)FXX;ypj(Jebxwk#lj~a+5Hd@*tLhb zLOIwMJAg9!kD-}8%V*7{U(%e)7_*FtwaGe-78g>l&dTqt zBOzCkHsQd7T-cgAFVPQBPaI1sW64vor+J(G#XKNvynA$Dmv#&%R6|dvoyeEYi$=8q z6R1lgD?7v=Nq|7hJs1;Wm}?%4U)&c?rnhQ}oUpxMMBP;-D8cllH8LBmSzt@^#R#Dv ze_IvYThKP?9Zbdqsq6p6B)guiV6uANMU+z_1HIyW}1w3i9W5yE&XR~grq@=@>b~RqftU6>4kNvYnXR}I z0}lP-r#s+U}adqV@O2%H!Hd+)(rpxKy8#ghc9jPuGd7LPs zf~rD_l(|g{CQ!))IK$9kvBKbJVAv!;tBns!s;Y-a++b=TayZ2p9EQ@CM{v=&pFj|Og zf<;AB-@n0#GfPY{r*VGb))^AwGdU8<2FJQ++KGvUC*^Llh($VB5e(9AZ7EyRv7C?! zMBGOhB!-ka(`kphzBeI6`qARFQWwVYddau6+2c(EeSEsGGLV8-94#xk^|JD{BBYh1 zefC~ENM5~~z&ZPrcO`S+9aUQT0wq~1drDWRiIyaR?VP5{ApMU+ybMV{TBUBTg|~^z zY%LtN3W-vL!4$Zg8R;T4k|O$Xt6Ej-uj|GY2)(TB z5@O7EU|Vx2Rh1`@8uX4~yvIldy~In<^9#XH5uaj=TqD`y+8|Y*<;+log{!#R+sIhr zMOE{Z+;Ze&yHB2JA+y_2;>v>2TOh138XcFI$+h#PvZ@(V`E}g6?akHzNoHQU(z9O% z18jWXzb(BN%SLrx&Kl5ygduy>zBWQF^Xu`QO8R_xH=@)L?S@p%uXn7GE_8SQO9WCD z$%%Tvq~x3J#g!0*gi+3$d<-|!wkHBnBLnp|>(#{tFVbpl4c#o*Peq>y<=MLG)W~u& zz=MVdb1t>kjqdd!(Xt86-_Hr>ni1kIB1Qyip5%i*r83AiC(48mGRI9<${Id!6V7`@TehtAfAuZt`6 z1{?dTQmD*QEmBXPV9Kae)O4|uaJ-?Y22T`@E}=^P1}rpG*&eld&Vhwkxc9KCKo zm6%&R*^kRG%f{?WLR>^Ev^_U7p!$jRqZaO&NxTF)#EZz9F=e>1gIHu#JwJwGhc%y!z zpm}+&+qauCFq;)Gf#mI|t2c|Q_s^IJqQNmGba(e|YQ>zMSZDQ|8~^DUidCsFe5Imf z-Ek*wbdfDjUi=CPh(Rhcf)Y*8*=e+3G{b$D-$2KPoLM8oZ;<`sve#Wb;Y;2UA$Nr8Ui*F?lC>kdVG*3a$f5{%b@h|b z6^=SZgDLEu)`P|mx}&IIK6ySdjaP}wBbWvrzRI!jARKBos$Wq(2{<5*z$z=m>vA%M zw-y$Pv`uZwT-&Cz1p6g43HxG8$sZz?v#z+v#PGP6Xm=M^8=`Hz_gqu3mUeff3RV&) zr@%NLMKR1zL zoTnWso(IU1(K;e|F|Y34-D7B(c|y|J|7dA&ie38(Zn2i7V5%ly83;tWjOT4miy?}; z=$Cf9#-A$$sr!LzJ)^D^8Q2*nO}}C#8{-(dmw2h_|CpPGFDT&Z4Ny-TWJ0*s)u7^a zFNN5>`N8X<$&{ST1#WGnUIt*Le&>sr&rr{bwn@ck=qCFlgbHu`KdFoHXHzmrI0@}G zfDtM-k7}rb|93L8Tq5kg6pCyz5HAi3BKSbWdBT@!Gc~O^BMn)2cQO?WfdFg@ zIGZ}3v*KoQgBlxaysuJeQ7SEp?8n+*+|o-n@_VMk(j_ef@wecEQbx&xMLs?|)K5yi zY|@3};K`{bg$DNJ_S}nWc#F#=Z;TdeankxDrS+CV)z3$h=N_qA#h*UBMr02OXp|q5 zmqQ%WRm7-P0^BGlo{6ou7LJC<=_35l+*@=9JE3+$R|#%jVP~~NWWx!lr6V3=wnp=f zw$82s?sY`+Hi6J3#h3=cMN0!@Tmpjgxo&_Q)(LLT`z-pbfZzGOGv`;?FTg@=ulBLb zlUfqUbv7CXg&q5#NineU29J19y zw4d1E%c)@qL=xmgTMAv3&%#i=6(fQ`s2JPj^`0_w~kuWP75{zfE6OHE< z_|kREDhj={^u^GEpIzHnOm)3so$6>U1L((u#=G3@6(S#JJNe@dspM;fiXsdEIYt8n zo&}qF1DLxKuc}wx*=Q{_F+!$g->%DM=2R74W;_ThYn;X(rX&HxYzu= z;|t{__=;i-?qG`(IM!=fE`o`Oc=>x_-v?(r*i>(}gsPK#Qki~^5FiTp*!h1rd&lU^ zf^bW?<8*A>wr$(CZQC~9*tXs2*m+|o9otSin7%XL{nnke=Et2me@>mVPSu|}Rr{%D z@7h&np}T?5`9R*hY2O$z+orWI8xM(QJY1B}(tb%_C8ymu2IKN?eSGj^G)&IOWcXj= zz?ptcL+=4U!BQ4o&6G$cD(#qut1`h@QGNK#r9<1}o{b?(`QebhRL*o0b6(HgL0WFO zjpFh$)v8Ak1~vB*3;Ab}Mc9#_!=LW!E8$L_C5wUOUyE%AY?rtw(;n7q`*$$ZU;v@; z-NAviSS3l3*81-sHdD=|m(fHi$*_f7$pV0X$mOr8>o7{wN0EA@Ij)@NH?Jm`EYN_y zm(nr+d=TDkppyFLd8S=Wy-DRnE&BfHV66|7zcZbl7)=UeArV5tF65(%yF!5-ob9EG zdu?Lb8WVq16R$8HiRDFDYc7tf{b24Elh<+{1&BtiIX2B(?6R}2XDqdqI+Md082Es> zJJa|$?+T=iWpeb`);%+XXHf)iLyOdqpj3&GF@%wjHM_u1yu(LaqT9tlyOz;b1MHD9 z&-BI0I3ByZ2##NOqS1&&shXlhu$Z~C_#whPP1Lz#5fF5y@mu_kjwDd0CQ;dCs6kLI zO4(+^4Km#fvSWQrn9bQ9ZHbI?w3{RLxH00mTa75_ejBtITiPTe@WCvf6b(T$jlv-# zMZnShpm)>qAfdG{VK+!Iq!2q+=P|>%S87H#-!Es&zu<`NEh9=x>eeCtnHi)akNeZw zY=V|R21Q~8&|*onrm?9)3=3ELbmHa8=~S}PVPfsbZcsL0Gh55r?2>vvM#%|ZEE2WE zTt_RXD~b++GM7JrMA=r1Uqp;T8rSRLK^;VC`#l*(f)av!=tQ28`M{8JDb0c_&W)5p!XKRp zQ(%;^ERx`HSjI56m$5lZ56_P(j`A#n&nC$wQBh|$-=J(P*1^losMD04)$nVUJw8j< z5HTwTwhHV^XNHqg{&-fKRh%AarL*vAc9waZ$)=CBD;BO<=*FJWhqsZ@_9)G3pH^_(|xko2<|PXWF*$06`j}CK(-^bd9CO}i>2I@?n%?bv)q-kWKthB2Y^90 zj^=P!hJ!p(xA5@t@5m-xjYwD`O_GVYvU-w``1JJbUthm7v;a3yGjgY9fZ|?F(pe3> ztgNi;*jfLsPFQWzMDd-TzFHh(s#Xxq z{V%lY|8)`Sd+EG5tEstpwTalCtqEKTodio+qL@srrX@C-6SQ^Yc0`mUl_R!U8@5H8 zrZ%cFOt^-^K0U~)8dIGaCGwQplq}zXJ#8gu%(|+o!ZkNO{w21N=FEW|OINmfjVEh< zWEDwE6k_6%;_57Y z3j`&F-z~MLPLm$6+|zQrJ#1KNv%%X?btl8R;+3z;=jHaXB5WMCEYp^}B1W*x7IR@Z zdTSTDwR}1ma4p&xX1o+)8|m3If59(==&_o0Ss)#JMJ`*J`*lA1|}$+`l6be@qL+P#d0t>}Tnke2K~ta&#$_-Z(pFO|> z-d8v+H~bg6n^Q5_#Ms9Iw%&CKOSu|d@ zs@k9-k7Jg09RbtEPK!xv34kB7OG%~~MU0zPwk?xfgYAhwo*zwYnh|72q@J$TWia0O z!Ik#0gkp&|-Jl$qEkw=pOGHbD|$()A8K^EIz3AFXlMY#;aNvUEJgBP#g?ki|_U(uaGR5b{rkSH$98T<1%ZY6bPgLyQ&m-?xHN_!v-9Crd zu%q7pAWIOZ=%-z8t`?dsG2ey=3C+SB38R(MES+#Te6_?S$;S1Kgc(#dHG%5$uZM@m zQ|ZZo)tvwj{GT9ru@3y1g7he8RCD!dCOz=gjNT8OMmNpoIcc8_y&so6D4^UJAF>Eb z;m{>w!9pM|l)n%q@G*a9g#3t+(D~hZ?C{Gx>!&6^^7TS)2kP_Gur1_r$gm>Fv{?NT ze)J!F3=E)ZR8XRL2emm6DC*VR*btSz>N~i0y2y7`-&QQjr3`~6(JgdMw(*bJC*oJO zo78?teR)nHuy)C8vM95a$Fw&OA!7|kDiX6TN7$FIy?pc#@+tnO2KxVK{r?aK{r8Jt z-^>3&rNHv#UTzoQmy?y?Va12<`lwd}C0Fg3EeDLmt5MQb!iuOxl*!U?$f0Ej$r0xO z(cEA}CuYa9HYOfic{Qv!3Cgh5kq8%DQLEzBj2ieBe`pgD;5voi_5i~X3XllHWQ>xQ zcG~Nk!mGrGzjVVsq&)n~hhWUtBk*kINHSXX@+c1k{z7UtV4pXut8wQL!_cJ-8knU` z9V+hw9=5!$H1!$Esbx<6BG2WNqLiAk=3y;DLMFMAt|aj?f^KqV8go@GJfWG4^G;aS zc{}GM;S9wa>#y2u@Cz77sS!Ez0e-U@2Hh^(1%Ox+9Xt#JyI4*u@*Of4ua;Cy85d^$ z6Ru2mwyc3UnQyG0(xlw;L@t?(*JMtpg zBo&m@H#B<~^0NyD-mcMD1l*>nJl4_u)$PI4lTJd&wxL)UHs;tL!+SZb!Ld7-Cfix7 zdHDDcpc;C!ijwhGT7!4yB>Uba=t#mhc$2yXAc)WhLfn ztfZU?E&8jWXz1(le>KBqOsCqnwV} z;CRd!tF4yOG09Loxerm+KgSdJbItsRvpKAL$?ksrzbQ&98HW~~ZVJ-N)#G_B$2$yj zQ^%YPe`cXqh0LY1+kl}sWT z!9+YW8YP~^ez9us&E-N>QbUo=^nq^4z!^;BLH2oMQwz2K4AyWtJPygd+ytc4 zW;H#f2V$Q$8h#?BBK5SiEax?Pco^K3Q&8aNn^2E9&;3$RJLoB7`TzgX9tU8ewM-bc z3nWDp*-PGfYuPXVl=A;tTNl^4m9v_&4YokYQF5Z{6^TTWHS7RRY9ed06{F_5MnHB0 z43b((oWeNfrD#=yBI5@0vZ}fmCctat_c6)84B*IgUS3;Xbt4hobG-uI)`YzDFbGwm zYJ|Ld){CVjhR2J(HG!ODC_Mq6*DerR3Lqo}sE@zGG`7$|d9Ev=mI!9Do95Kgzk%gw z`Kg{+J5$2X>1#up#jH}K1L-NsvxF~i1`$cl%M?3Qkc@8dpEO9*V0Lz;~r?*!H%yaypa|2|; z)ZBlq05@|AFC?I`AEOiV|1&p|viG05NbwO^+sn00X@=Q^;X_yBN)LHSzGvMHdVgScoq2uRc zfl#4}cmLWC z`H6dvA#p_~uLnyLR{PPdTHEKqi;&UwM+$$Hu;5O+r`KpbUQpgUmMSX$;GA5G39mvw59q^;iPz3&GP)gvL? zeEQS)=&FH>QGTzC5@^Hq$lB_0c$p?+F-UGKy7RAsysDX1TsRP!ThNX>vZPTzOGel0{2$L)~=NrKK;@D6x_DhDwWMnw?fW5)=#wZL|+Fss_|3=t}S6P*R1s z+?`0Vsbbm#(LI(7*a>!XkMv4Tk{yXgZhx`mAnM7|l{4|%iAH;fMD7>>16m(C?LYP9 zICjvfHM?miX-Y$@M&)l!cHMHsoOSpt0RmLuaN#so_)CKZi-vUH973O^uF( z;tyZ!Sb4sf3L{(g9QJzDf?r%V0##=^$R z`JYz6%tY+m%>TQYkeUXplG-Zv7qIJP3-fR1UlYPc7f($ib8!s40eOuViMTprrFolS zGkCcBN=7X|V+)&!I1p)jTb6i$j%0b=yg)IP9B7jf$NLl_jlfnpC<@N5He42usZE(S{k>9{Uy}v9vgn0?V84)_Jh7H zPY|4XkhKdOj~lgxo8CM8pjk_h*Y5K6V|&u@j8%|sAed8ZPRF%9j-Ek(^w%?L(3YkS z&IRY^!!o_w*O*W5JqC}__K7#bE+z6g&|$s31&rZpNAC0K#}tR1y?v!5s$v7=ZM$;6 zgRZ}1&R?V#xZh90@4d}^0lKEU9K5iFq;jkM8!O$WmfhpZ!Y2(E5B68__S2L1i%SLI zjecNSj0tmybqSH=p;*>%cn@2ZCT{RFxOLk%dAa2UCTr zcLseBffn=c7F4Bp0iD#0hv+OKZ}&i^qUqmbqVJXtJNXdqI`LA^bf|(sA-sa^Xd3{D zO+yau76+rU4NvT~n}QpQy;j0PHC^GqzEIwf2zm-LDZ zgw?Pe3a*7rJIt!O0>YyXFq%`mA_f4oLNGs3MxrT zbDAz)J@$P|ta!U5$IW%3_?Te5K1x<=A;&ujZ`_HVDXYUVL^;u1RlX#5Pijh?SaCwd ztdXFk$-u!Dg$%>z7_&NT}Y;A!dg%Vf2N$@ zF=RZFH}ma8r6poVn2r#;8L&I^QP9N-F>&P)U=2RmXb{8)4_2ZwTR{UgM);7!M--4_ zNxe84AAc$nM|HMvaGV+`P*kg4SBbf>B)gSq@U3?~QjoJkkQ3ApbZC{3H>pvfT~IuT zYzua7@dL|n4H8DW84U%d_9k!Y2+>H3nL&$mWP+-{YT4C4TWmOL2_Y%!@=&#`$?B9# z%YiPJBA?ab6Jk`ZZ+>u}LX!JfeFx4xNVxfEEJ$dXEPVn@G z4^aiA3`qO-)sMI7P$X%o`!%M5Mt2#u)nLwpM$jj;qF0#1I4Tu1nP~xPsq7}zKC^Ke z*~!}Oog~M^XlkD;Ceh4_fRzDoGZF8>E~-`KwJ}oGg0V>Nh?uc~;9P%Of{>hA0z+cT za+KwR)W_0N3eo7p_#}rX+(|>JLNStH=rKsN#_?U%+;s&NC8S$d3~t{5ZEjpiZ`sxt zN817`sJREKkhlttbnC!}+_ldd!Oteg7f0t=R?mJhL2=wUkH_=7_|K`0m%uXr8h`h{ zjR|^;KY9vWG{QXC8IUqa-+D>H!ea+3Ky^v*P#TGT3>}+>i6gyob)*b!*+f*6JX2}! z(dCZBz$_#ZhQoYY3DM+L$!hk=88_LSD@~rlNS&ofsZ1eFCN13h#RB)HS`94tp15|> z-XXBN8uB^|e6)dAL|2g34sfjqU`4N);v`~!B837*tDSpTLB+^xq$sgT$r6{6Ib1Ru z^TPHMu#uP^nAL9ru)r+T{>bwKZI?`qd3AmKEWkD_!FlqNE6sS12;`?-kRT?;JEp7% z#;7DH$F1LCv`T$6?tJVrnjyh6yeeb(bp$kdKCIrd2{L#1;p!xxxD$$q2uLdk>Ao}T zvD?zRI;dP{lEC`aR-aQ0_M-NpqS28YQKoxq=9Y=Co9=z-@Dmu?B~O{%vJ6_E*ATf7 zxDY$L`5<>_*1Qvk&YOJo5D*<{IbyC&@+TPhNQsloq?56t@8#784VHCJ>>oUQ{`ThX z_g#z_bTuL-Vc)ZCRHd?b{^9*5HE+w6QaIye-H_At0k3j{{Q1YK_u{~ zCA6iRJF>mN6_%Zf+ZT8UwKb-(J$ z7SGQ9V#f#4_@{nm?=xZQt75|IM)W#DHcXqJF}u&1o;!u(NSiuQt{QJ)f2`da|5l={ zW3PK!h17wQU$OY}5<27h;?>g|=?`gZM8(g+M9WyL+ctj{z4U4en)#6lYPV1T*Si}? ze4F*%@&hv^Ca&eP1x(qLOo?0_JM*0uEGIrbxNr32lYcbxqd}H3zT$&J86`fq0Jf97 zgLxD97c3=NeAb;|xlT++zjE1qD_ozn6WN6dA3op80AZ54o%L3~^ue`DGWztUM!gaN zU&Q}0aDWPB4qxL*%p9X>M7-FR#!?fkT3nu- z*eMH!N8+68^II9+UhJXZwDP-ggWk44wkB5{Vr|IYF0_iAQvH>7jm@oVwQd8#@6Hc(nr}>;S1zH z*|7`$L+_qonxLnu0v4c0!kNyNN#L4G=Uk|lk)+8O6_8bqE|gMOfYXBUV;EgZZdbj) z@PJMJNjX9{CKfEx^Kx6zvy1y4IE(M^sc1s@4Ey#H({A^+lHxW($LI8P!6;u0`?mRZ z@%lOUm6x+QO)hM1;s5uz;N`>TYOFumx1feP%RZxQHQ?wYR`S$A3&?QL}*(%gIXPl)Lg29hGF@Lg-z2&KHoh*X#g7q<{ zIO75?cJ%c21Vbhy^hsA#cqg#0jkuI)FNQ^sBCDgsO;p|W!E0MZM?<7!(H2G_v`a3$br$WmJyj3`K^M| zzPI+Wm#FNmG`p>xNjvMCNK4+}9) z&;gWVXsG>$nY!mDRd@DPq04MpEFD5&l^;w+$)L-$kO{^>&B;TG=TFBvkYnlINOXL4 zjty+<-vqwL%dLJ$=EALA<4+-jNTcsKpd=80tp%GF?H5K>xTMhhc4ERG?OSgeoPv&# zH}GS{;?NxZg=OkeMOQ^#sAa65FCyjR3ZDJ*hY7n-;*<3k)c^%BGegO5WqAc%3O+^@ zRQU%J-15pUduo+u!!P#UIQWbsM_zu=o>!~u)3;|$gx3FDT@)2L|4vCG-wwcFh8i9?-qwin|riDtklE0n%W+Go|r&WgiAPSxpHO#_-B za1%wutVYvm#n5R*viv2|uq2M<0?<6e0^;_mWTp;<6WTi)X_3&11xV+Vp$V(3q=Zwu z1v5y<<*zNOmF9!!okSSX*jmGi^6TnakjGG^gPokz-+1d!bh_Ig?XC1{ObpMz93>w- z8#z4AM2}0((P>}44?k)Y-75m!e~vLnLg;zqo}T*M>Vx{7h!TI4ARlJob!6wY1QHRX z^q+7W^ImgN=BGx2dGsJMS`ZxM;L|6g-eZ5s?ZzD7pLHMbTkE}M(nW3&FM}>sW=z?3 zFTj?alEg1{e;8$LXB>J^*VQXv9xR{_K3c{VMzg}uqYRCNn>3MWH&$Uo)I?Uc zZ6%o$_CVv%Le^=Zjb|_Bs?JM459fl$?6>MT+3+;;EZ}qF?U7tpZl`RQZ$m4ZOPvQ+ zk1`YaOjYO}{gT*@>D+^~u1ftV?cd4nVfkKM>IB14NR zbCB$Cgb0%CI4WKxnu>-hq~MKn#a8mq_#f{g*uMds5$FMfCjFn&A?iP$ajy)mtbV_` zo{2UfUIh{^v8DH?2=*V1jJ!_$xwN%;rx_TW^ut}1)@F|{Xw2V6+d;NKlfJInV0h7V z9_dV@Hm7xtm}tasFv(u4*wQv^ujOAyklfxScuBydesYnhVFaoP85h#i8frN!X5aEY z|48H}U+30OL1ma}m`x&2V&IoRViH3Z0=v3bq0IA;fzbWu=J=yhr>c$xRtRaCh1jFv>@MY6zrWzL8sUl9MreQ37uecCN zHl@R$_t%kj9AocxVz@W|$@8(`*X~~Xth=vAy&wepG??Ju z>!Gn7p1)-g$@~l!n-i-B-+PIPy^ym!KX~#X@K@&w(_Id%y*PfBT7nqte$sxS#fHeY zi~taBd>Y_Q%g0aDW3&iEw}-2YHIVQT3eM+{TzK|9=4leL9HYEchDkcHMT*mhr~TiN z^UmgP&ZhP8FUB!f)w0_gpQB=KsuH&B0CEkdJ6V;;J*>6p}vKgNRXi{E8?X|~Fv@{S1HLBp+S83=JC zxRct=??j4oLz3={!sdn|2Z>T+lrX2VUaEdyw0wiG!?D@5>OaW+JQ-C(=4R7_YD(@8 zhrfn9zDFdaJK9J50!Mzo45PJLwIH8(E0i>Sw+CyFZMSXj3D>9tdVoXPIbmU#MaG*x zo|294e%+9%`dY&LRdBb^Mc(g6%*y}$L`wDZ&+LG~Z@QF8+mwlH4^>WCOqSTo*vIfP z73Lg;dL-V|&xxUlk`L!S0NXI4G}wggL_fJcRhB~g;Bfe1JXt|2C~*t&&fl|A`6w3= zqS|C|cj!`-W|G|9J0H{mC93=&g;-DD{g_o9^~JN1?cH4C@^u%ekUJ;n(QeUB)-X|~ z=c#5dJ`n0$JTWTaaB(}bmFjR;N+avRY(z~ky{53N#;>7(E+}>9ZRd~N7E8~YYyX?= zzx(blF*~p*!QuM7a4_~oFL2xtz88lhU4ruLN5=qQR1c^qDq zcyDVPd(^UMR`=?wrJo*j+1TrwExrSimhX{)kNqt}C%OJx#>X$b{bMhgyc}uBe1snq z<65D=jO3F*gvkNeagfe)Irpo~U?x?DNn`hca9JA*QID5(G|TP5POWFeS)Qq6z4= z_09}$rllA>Y;6&gI|!#qBJa7~-${`)8`Ist{5y=K_+Nnf=XpGpY_$e`mca96c&j;& z@#QMZ{=TyO9UOc9xs8qHhBo!7H6M3!2eRi4A<#8k1;Qi1p^!?{1oH`($lcqt*@Ky6 zz=!9Z$WKiYiBc5JXv&nisX$CeB4zXn?UDOti}We0R&9ERe&TwTpA_q=^cc3kEfzzl z?P|f5$%^e&CYqKJw;FdKQ5Be!HsRue)`g9Zwh?)sY5nefE)JazKoTMtS zI@pSPK5&vyE@lX54&u}}n}3d?8QJ7&6zZ~)rLZU&c0@n0w*$g#j9|s)Y=IYHKZ%aR zzTD=jT^*}BZgFl;(XS|^0l9n3nrgvS_Sf2~o6VNf1)gen0x_=xiV^JFs162+zPxtC z$IYl3hnbSc0{kA2({OlJddUT!H;;FY)g4jszfR#>Q@0h1-&&liL8E$+RO`Ajs57F{ zUwDEeow?1_ zO4H%V(_MnQJf?9}?!?YiwQm~CP;<5ktN%S?SHZZ{)^M@j37$3Ushwy}cCe=*IZ$rr z=jNsLjl#F*GKZr8ukgaK&uu3jqq5t9J8;^q=JA!)5&1YO(q^R)=z_}c_qj{zj(;5! zlV$E~fHEB+x#}1?K8~cG4p!zob_7w9?kj_W44m2ci?QZ+DS+j1AB*O59OZtT! zWMqVOf7G{RTto%dw%NGM&NU34L_|u~m^;7r-8BaN?_G``2jmZ0u-`6pvLTQrVvKV0j zkwc0a5zGTN?v%NIzp%N)?L#(~h71iPCZd#k_Keg||AH!LC?-K7(utV@$tuo+iVjp@ zVDYoh2vD<>^~{v^+QJtxR>XIR>qg%8T|`USO4q1zzBZI zO4M)*-fi4sviEX5Uy9#j` zi%C6@R7JaJ22zxwKYLHeeDV2RiT-&8`5r2%1j^BaSoqpzvoY^CfJ)AIYVh$-}oMPMy{V)H>uanGJ58pRvaDDw;FuoQ?zwz`n2YFKKsM zT@v|ryuCqp2G;q(`Aifoe_$2}3Q!#d4&lWG_YnTB5Bvc|U@`#qI+94@20}C&=qD#@ z3P2obY#(WKgc2g*S|BuG{4raMRqyUK?32>Taz4@HLumiOp2w>u_7YN2k@S`wB2$&OQlje2%2KVV#O3VM(r@ve zO6>SLEZfNJSYCGgKBMI|*zUTp?0I2h^gc1?dN)&GQ@ZAKbYwN81{e8 zCbySdjV1K|-HA?^P3`yo4*e70b?&+Awt551{XE?oEAV??KRICxV*GNtOU(Rww7gwD zqTLRBd&dpJhZvsoGoeAeABbg&K|>REWSx*>Zb_)JI0sx!Urc+KW9B$B=L}>tn%mLq zj$Io8o4<`5U4QDOHE`f@`WZ!0FevIJd-2>I3|pzVtGF)E7c6F;=A6<#&OC|x0bgbO zbNt5q^?$|wqW$IQ-{D_vq7F$7LazFgx@(e)+)%qxjfRnGdD7uXv}_FcjvvtRE$Elw zt*5q%J_hW1*y&pBLX5yy1HkW4MU9d_p*|GV`P$>s+uLOW)a2u>#TV$>wCz;nM}{Gg z#g+AtG4+s~L;ro~Z0Kxg0lt+?t0n2^1taham_`@EJ-y@ zGHo=iBpqVjY+9JeJ#6I~%1xf-P{{e`oy8j4u{3+VixKRew?R5t?5jaT)c| z>{FayTyb^m0{fkeUlll?c`E)6*{AoX{ALC5V(jtZ-CZ-LrlO|9w$nE3LVwk2_3y+1 zk2od|Og{r110AiM7VEvh`#9#+#kK6+=k)5->T1W->Mr44pwjold-prk(^K&4Z@}-) zp#FhBb4DMW9^;n3@$8^!ImiJj@}~0GkRx=9DyrdU$tbm@)%r`EOC8G-=WOl~Iz>C= zM6`tcWfp{dez`w6FNoJ~2`++Fp7e5i>B?1)mRiETw&*1ppTuRPinun4dr z!mJBi)$CB>vr^)-RPyTz-hm^{{H&@ zSK&SK{o-6Tn@RwF4U7<603pt?bj=AusEXYUROs`pEAO7CP;Edf@*SjmTw|e!^+@N#Y%R-62 zY2sgxmr~SCFxH%bC_VT*rJXbWs9vZRs9|^^=t|McJId2-Yo_U7>1Zx=p%FTY8QoEz zPbbtsV71Ak_0{mGk-L3-d3-4K^6~2S?e^yJMd4Ra)Kv_F+VoaezV5rm zzrMO=8QMHBxHdSsKKb`>q~OH6jnMIAlh6D|BS_g4t}OAKt688OlIR}&pqXL!;f*i< z<}sv^@BnLu59*i4o2`+K~?~GMy2VEawJf4TMdyaz-`5k8_*Tx^EOzV)vkn_%*6Xw)TnDYVaM{HHlce#hEpm6F!X z9NX<_zm3Pa!7*?fTt(<4g)I7;L6_ zHZ+$#9zO_eCUlHJ8ZAg-rV$}N5SLwstx#(wC<@{bC>vws+K9hOP>6*;VvGbY!`p5t zu|U>u5%9v28xawHD|3NI?m=$_dG2xHg~Cup2oB)`Kq_{@bHn<7)87u7Nrfsi;p~LE zz0w{I{kPyxBI-du<$qWs`VNhLv$dO@(x$PA-?dLealaVYF`zsqis2=-X?5@;KdH1}!r z;%ytDS527fhfwqqah*u{A{MzID)uS1;>xrl{um)a9$?T(!bTWTMF_L&4LZgBuIq#+ zWrktB)7?tob)vi;ykWvIHNsCbvb78SbKqbX+k_RVu@&mO_meMt$_c{WN)n34neciH z%nJ!|&zLVnl9>QiNfMJ_2!=0#@|G+=#KkW1iWxa|mqu@BkuAJjg+jiBE?Z%pE!08< zVWxOJP1e<_K3m9}4N+sxPe%yW8kxS_Pe%lzH7#S_MMpSXCYvQ&V}V9T-nKGoMTNPp z1Vu*?*NW6$Wg-2=iZxvY+h0_-GPiw!<2|E&5n)5R=alz7-(!(rL-wzgAbw$}TNJ_~ zGLOtyrN|xalZ=qHlCXGs6@|L8db(OYOk28*204BOs#}V}A~uig$tj;c5vTVliMk59 z`XYI^oaQNwe#wPfsKWw%x4c1h5#cF9{y>Wt0`LIBZHkFtP}Ca>@dTMKMe@#yU`Y3& zoiAg|nYP23*VCy2E)$tWMaL|?HY4-U+*{lref7}YTXbjXtB!w(z&f#wazk~d;;qex zzK|VU7zvV@0EpT-tKW<72t@TpxhXtnk&$?~`;h%&6bQDwjsBqhVlNn`e4zHD0Uj=T zVHC`^yuk^ip4@8tapVTm=4FMpTuT7pFr5xqBQmqnFo29-s}JE?FFv97(7(ov?lGEQiQxvuVkx+sDX>nKaqqQcOA*LjZ~5iTbpmx8bzKhcWy zyd&^wM7TKs^NUKnWfmBySOf7t9rJ-RYEG^LVO7zzFo99UW}XGN9hqKBmM(81!kDI` z3kz>%!k8s#M2$65eg*Zgn5T zDB36&MrVwMX@bcPXUUjH_}a8LlfEW|vKHS(UB5zlX_|i^{PBGc^m%vt^Xr6z8xf9) z^^gu)Dkax7gNq0|S&f$a1g^gGoWgmAfo3HeI)#k&kciuIB5U2&{z_EP!~Mzo_55Q} zNSg}ks0dUoOhyU2`nRl-`e$|ffG!il=nyynI@O3pF1U&bzI+I-4c}sru1)kxt!K%h zP4Y@T%cfwX0iiPVJc*|^p|a#0z*8TfO1UKM{x3Iexuor`kf({cBkrSs1kI|7Hp-x|*%9Bx&rV%e|!osLvQOlTA_O2E}uR>8Tr+GwCFSB`M zQ6E#2E5T7qH7L?i%Q;ulua<03@wX9zpTT#{#8EcQF-s?}scQmZFDhS(%T|T8k*=#` zZ!2nFO4v|^I+x0;Y-!_YwIg*Ho#}$;IMmqM_+@jk3E58EvDdzpu;~hQJ)YOe>bX}x zA7*93MxBi(A6+i7SbVk=-mSuUuF#;2crM*n$@x_DD^2*bQm{_}%&M?UGSrF*zNm;T zE@BavEo7%OnJq?Q5lia_tT8fO1bHJ`#(;|!h-1#*TT3q}jlrH_=7MbC^odrqY9|%u!G10b zXK}#s&#gnYPV(|7Ym*27`EeA4NwOA&MpXL#XQ!SVb|m^PG=s| zJ}mLE0%u@T(Y^F=35HO;V1T>ay+L$)KMjMBNRYijnek;!;cKJY8WsHd30B4;*06F+ zWbJS})HIXh_!|+Q$Ar1y{tPpd!2cPH=EAPncgu}#IatU}gmq?S7&&_7_!WAy?^}!( z5EM9scxU>7_Z|Od6n7i(m9%~+-Z}N^H$Q-SayNi4ZtM;%9~J!;#b8L+3zKkPbvi|a zLYh>YCrkerW7W(+TZv+7usKRDdBm(*E|c8cT3aInQ{7BlTU#S_*_>WmawYXC{NKqS zqU%x|8S-YT>v9~K^k%Z_GVK}mX1ePN?V0#ylIzkQ8Tw|cRKz`5%f~t2KuIfOvD^N) z@$2Ty=_Ig2p%#iDAxNH`!)A!C5I^Cff0GRSLTHNcS)rd2_YSNrq`Sb=&g&wCL7$XwNw~?)G;0 zrMrvKE$+~yyPwf*?%>@T^5Q~qbMWaGgm_OZFfI8?MR;)Vfm^Vf>KCKOD*hG#*+ za&g@q;d*r2o-|-a@T5SIPl`{DPliu{Pnz$DU@O(v+3|YF|KBVkd$Qu~W{{_NvI^lQ ztS?1*G1wiYFfZ=Ttglyb&X!j%dzxa=v2OaDE!P6P3sGOh8l9r4_k_RpBFurnI{Fr4>{ zF$l#ar(`^_9>xA^oO-zRu)dKOL-59gpCXpn|IV&7WcdZsUyV!wa)FB4S0LB>0U$%g z#=Jy$2KNn>a~PDjSKN%v6lX2YQkG!*^AzrV4Cq+s+56nDyU%!U>k|*q4~**{Haus1 z81wnQ8^djeuqV#3gWV+I7{O>8v2)I`S+wh>H_mZ_d^z}Pud=tu*-U9qqqm>Bz2FOi zx+fx-7WJY+Y%#az*4@!)w71jUoNe#Gw-eW$@MxvClii$bPskSs`V0CXn{xx-5OSS< zMk;iZRp4=7?K5&+h>S6~%$mEd>my_?9=UYs6J)L)xxVR3uubWn)FoO-x)yiM^Kr{0 zWSAPqz6o4c5zZ(cTehs!vR=$UuEF#Va;zcn8c|+`Y&SwZi%?vKembEj3|Mo4S?=NG zM#4HFGmPx_qQEXP)c-;t(MH1%7n8Y^Go1b%(8OQY$le}(bQay$=vk}GYL`H7BFM34 zv4w)$jOw{}y;hRU1tU4e0zby-6efjwRvbo!4a<%&b`Yjj!QG_XVp4KEVj+)GCU&M( zO1SwdW7UGuNMz| zTFdTk;`lc2-v}+Ko_&4EbG>%(GKj1YHe%2!Mv9WAf}9jhbtBr_CX?}Ackpl==a{TW0yaXF(sk(lk$LsJqDJ$>YiSX_?11@2Tva#lP#T_?JkabfC6jRl|bj zh3%u}qvliFJCA?gSN1RA=cL4`ntNGpq2mcZZY2a87LkHd#SGOWw!S_GHlAY7Ioij9 zbJoYKce*~6g1T?Hf)YVnFo|7GT>5=vdzA6yae0BqP6CP+CFx1%!Kq7^UYNXgvCUKH4Zz zl&M0R2h)JAu+1ZYbi?gqf@Q<;=IT9?6kY`)z6MxI;7BwFOM+R!{>F`bVkT1Qu`Fh1 z_67a&pOyOoF)7-BrHAUZTxgu|Nc6Zf&x*A`DcT-y4L=SqTwc&y*jG4&6}z=;y45C- z*BvU;wK-K>p8!uF1#Man(noOGWbRc($LvYuQ?|QNa@5G|vr5T}5HObb+y9E%*~C~0 z;e706lf`UZ=8yc-`~P; zI^5pTvg2j}U?bqUlKPt)NNPNv*A+387-Blc=;sOby%)((5Q-j98%F}OK0ED`cFXKF<%mMiORz- z<4;CPf6Ab^yyI+(%Dvr8iN69_+{GcY}RZmY>k*0@Dpt{<;L3! z2_yYu+uNUBW2wU#=6flM^Up>x!u0d)?g6+}buvZmVk;G%0nYtTRs0qm`=D+eHQ(g< z_^t6@zZ08>ymfH1Bq)&dQ!6j~=$ zjP&L1D-8M8_5-h=K9LT;LlV(Rqa#edRH0|Ry)z_q7*$bbiX^x^AhuwLd4gYX?6gE= z&wePjISARp`h7B%3#?_>T@<>DeH&5N`1lTCzTh~jqDQFcC!Amaq zY(VCybV(d3L)k6c=?qNV<10;_vd6fZGHV>$I0~x@@W<0G4+Sw+EQy zwe+W)DxciupAhhg*(t@>1*}lx$U83d+^z=LE?KoHe%nGao-w+Kt7)N2or_or3}3D7qKSQkNntFGxOq=^k&X>+ zxcG!uH>Fx}*4aK1wFwIYM9`zIe4zaM z6ba|hyJZ58pgJit?{(@yGkU3Tq7qC1(6LAVLQe#O}+hs+Xd~4f{0w#0RUX zB~M(oHq;4fE>JRjw~ z-Ewum&8Z0aMGf8^8F}PS4s29W+0h@ZIO#`X>8=;$p|jh(K19D$Fqrl~XEnGelC)99;D`f>4u#WV{%zHEb4htLZ9nS>UxKGP5q+ zey|+VDUA6&Ty0~SdWkM3$eBJm;)KYW;#6#tRE}$#O*K&H5WnFsZy(n9BpQfITne1 z*;t}br(|&U2(g{Bx!~ME$R~t`PZz6wTAiqPgca_XZ=imhM>!;rzKSCA&Z^ZotF9RW zqD|F3F8bB=N_vu>*ESyY2>JxWtB89Hn7qGN*n@xCniyVexk=H(`!(3aHTV%Tm5bEv z!&XSBqrK?#9#;e{E zY9#yDOd7O158aK(M5bcP`o1MdVhSp&YSvNt8*K-^-XD9poJ>xSO=lcAb+D<$li!6! zucz5357IRcu6DLXZAkEfUttHPg^aYS@oo*zoAk@&+GGDds=-bPC^93mqXs-$S1{aP z7>TwHi-hLHt>cjFLWxSKwqC>f{n?F$@#FB!MZ$l$DcB<3N-*|Xt+?8-3pF8z$DEml z#p%1QVi6o_Z0Iu&YP^f~b)xn!B*Wqs)J0DnW5rd_3X!0)MaLq3>Q#;$xYAp036&XpB~!UL*s(-2$*a}X#bvc& zepDi>uaO?Hz00>8Oh7b}$tK+^OSpBzHA)%uay`}(2|#%# zrGdXNcNx6V%8ZP%^gfM$0cF8O>QqCXg)6Zc|8N3sni?OtIOG2t^g*$Zy$qv}#;UQB zHeEGHfUTHMMAxMfMu`H(tahX50g;}K&NN`4D#BO^N82!xfgY8-*0;)M0^I#K4C+ zj>8syZMB$(cc0E)u!tXSc}9<%VhMKHJdq4ad7W(5W6aA@C2Rotsxw8a`7IMjnpc*+ zm;$~Dm4vUEM}{oIZ9Ow-xbHvhyydkvEay1uBwnjg+-=o1ImkSmFz<|;vT-x* z-1^#T#S0r3rOl;)R1=yT4f^-1Q#(sQNMvr z%$Q;fHX{RUss`&=36w$ma@Zjn75UA$7`8#M`S_BS(Qr&cCdmxaR8wihVe5ihvsrP8 z8+{n)@=0Y3XVDYLCF!zz*#^l~%xLiNw-9x7(79_lDKgWXB)Nj=;H)G-B5HDY1gNK# zJH=uVMO=eA@jaQ@r}V{9OfwV?qfHI+wCm6DLqbBFzGEqK?r?q#`h!xKU5dBtW#_lE z&GYvh(AdBA1|3@T-Gla>o|Tr)cMDLg~+GpOLxNw$qdc9i?4R z4KwxThJJL~q{Rdg1`3R~1Ui4KzmYun-7wlzw_FjBahigE5g)=af5SXsH-XByFO}>OkH2zr z07thZs7B=he^go@;UhZoh*$NLro?U30Q|rKs-5|mQHAwk56ZI=q&wT*Ml!ZN~EY zwwAx<%BqVG`by6ZE?K%N*bnG-NjR%e%#7Bw;(#5aO)$AzyCH#WrD5?)QC$b>aloGT z!RM%VfBpuG@guMIVC+|Hq_!k|i6srD)tf9&5VMZnh*Bx4YOSBtqvzC$4U~`~Q8&sc za%^NRNpVt(mxL9>vNP>lPL6OG*0obPl#8!Q*KggZ1wj0Y6QG=j!D=1iy+vZ)?JDpi zaQ8c8I+!hEk=e}j{7d8Y8|*dIJ-|KSyOG0wBm4v$2=g4=1UsvOb|)(&SU0aig8+Dv zf$@L?+^%^cd8#A)O2)`@JEyW!zP~{iRfPxqxsZ0cCKz~GDT2Wn^zz-xmJD^qwIDrC zaM<XNr3wR952^En>%<~ma~k)8y^5ZD>o3iOR^gH*Y_e;u{J%Z>M$ zzTHY~$dzV&%N<<1)p0_MRmyCv)%a2Q+d1miL7 zdIfBIUU%qV*f@#%gMP;A#s)~a^^@5u&Z6wbRCz8_7wO2lzl^FI`q(G1LqGY^hG_Wx z_zP;-Hx{V29X8H=$$N-;;4AN&n4=_EVsgW;@oJ=8!=c2V8(~f8IqFo>D4@el@eqAZ zxma5BEj7jDT5u@v!Q-0L6EU zF1Q|c!i+N6qClPyY-4;Us;yv&5$y2>0=Ku8z!4m^M2Pf3b#yl!m85hv^L|1GV3;nY zNTY}k2lTPINzf!13A>UZ&m~7Y{x~2f_9kZA8iz>$nJ|=NmFycOV@HKuOWio(e%?It zO5I@~`dr9|FT4oEI}u zS@@inAxV5Q*Su?d=uxm|k(1sbjve?ZVv|um24|9F3LA!cpB@lgBA-aCMPMSHMO{Mx z!!EnDvG;0HK^-99_VCkzNuwejd>7Yx#-X&&mfN%`U)LQh%ly{+GyS#!@XU|x$Rj%` zF#70M7iR6xCh6CqMR0q>%cNHg8;2Q}2&YxnZ}nVeO=GDrU%o}Ms~3x`CU^)v1)d(# za*In_5ISvTd}Wn;G&Fsgn02#7@{)|Zd z>%+xVD2@^=>oZ9)UymmDiV?}Xv7A?W^U22=F6R&Gy=KnG@Qc4;M;3T3xvgUJWo-aX zu3&_JDcJY3E|%%Bf3vRX^6bVwukefUF?RWMCknv<-*Yk*qqw=ig{8$e>JfVh-{ZF? ztr^eB*`2Gvr@_X=0&tS-mM0uWrud(qMX5m1{a}#u&>d8XhWIrfJhm67Zi>3H)IE%ckr8z zrAA1$$l z?1kL7oW5aPR=D3Y?zV3=DBs^twmzwrW>pkE$x?LmvOqfW=_YV=8~3Ka?eNBDzepjj0stvJ27uhIIzPERH6)=Hl?zv73w#k z_2{y^m4&lYZ%%Tv`0>MQC1+ERXeb6FRV9Nv!u9aETyiJ)Pzn03DR#0oQwT?zUTp2$ zhFeeCT?XQ)Xz+G<_hJ@f%^*H)OFqGHzyd|~cf(lL2#GO&x#tcWr73LTrft|{aUOwAzY=uPHo52d!yO>k zet=L6XNhWID!$Z!v7l9Sva}&H9Bg6kYCmK7)-u}xT^Lg7?SpJ@IVRBFHq`5cQ%-r(|W2W-ElE>Dn?{8Occk(@$bnMb_qWw z*9Nm>3CyTCr;pmoJf@Ccuw6qeV{6C)JIYW~MHizRCd-$`k1BJI5RIFAEaQMc{rGM-jh1qp0ER{3H4;^n@Ra2MaJXW zQq7e8wi5OQztQp}z{kJ)){XjfbIK?>Ma%wx&qQ%(d2)&P*tcHStQ$rC$li2|MbIAq z?fkbc?#fh$2u+Z9)e5B+?>)9h)WeNNzY+BVqc9=EafjrBd-oz2p;UPSfM^rwS>z<< zBre0B#BC94`bDwQ)?tcx-~7`)?8s*(EOMFEjdP4`A|$erc;U~pqG;BaYZAx5>9PV% zRkA`|H}aN_+h&*g55V0O?|4Of$z^NUbzKLieBSGshZ^%50R?fK^$L1v(YEz&D_ejP z&iGP{oapN)>Pvj3K7*ih^0TZcpoeu=vc}K5G{4gW_bXan^mSF`hIEDRSy~j3%khDg z8+vzZCCHT7n${qAAhYRot?9ZDE~yp20u_nO_ZJvA~%d1-_Vu}~(;hxiQ= z+c$V{s%dmmCeNq9_2;3d&LDDlzGX^L(ggQ1ZR(<`R&YchbF>l|wbdzzGZPg}IJH5F zk18OOZ4gIjKB7nXy5%GAgzL^1(LL9sr_wcJ@!xY`ce$sPzmbB34Dp_5U@ zgAhTI5TXM20iN?&dfL||*9Y4-P@U<4IOdZ4o5Hus96x8E4N&{A!rY1U?^jW^lLmWO zhXw_Wgw0~6CcnsmaNm*g5z@FVC^wq^mT&;1ZQFo%$8HC+$~reX{|yE zxc`0^tx32Bx)Z>s^$|1Js6}%+(r&w_m}XV{wQHVNhpfx3bN6TZWEMiiNK7+^g)P+k zj@#8H;oJ)V%fe^a;IeJio&uxNeV+UEpFNCX{jlQkl`bP`?%j-q0lUmM5uxubYx$VR zVZ0&Eqx&cm@SWwanOsw{w-nDiqqNgg$Nbvlqjvg5&v@tdxL{MtOC1>&#fb&ytzPA! zk^`l0bwbYC^!$=#m~RPiblBHcXa+Aqds$3Ldu5QPLVTxlG(!lkDaxovvU+%W@EJFA z7T0{cQRm3oAw~BbzwwR9%p^C^w_$w8Vp*tp&S0RJ=Wpg}yVmf_jI4MIXtrOm>LI%H zjA6B_nlHwrpVXkNUBiHmp^B>kv=;lG-A7OA9uJ3JGd-AaSD1y8 zz*@_ZuP3iutD7e#L(3WL#6ww3i{0Cw>Yj9g?N+uvN%t9oC0FAd4J`Scb!|PyiE4Yh zjgkiohDz_WZ{4)nf%qI-yAhMHA;8m#EK0>uKYx9Ug3fsj%Rh6$?*@GaA#HUtJpb-(~d@&=+Rl1K?I>xBX^}i*@4h+SZ9NY*HEQBqTI>%61(vX@(N}Tq$SJ zERhjEBSSGtz;WB#rSuc@Xi&BmfZRYpYHF;RVD^W(-+kxF=d|~2;IW-WEAM;O zHT#lR2uERMM^o5*?YmnQuSL1M>!W;Foq_D58}mka50Vk@qZhM|MbvQl;xHV!Izomv z<_O}3LpH-st|0pQ&}ox-sfk*T1~U+j+Xd4-?3$O{n$u3nd-*46-_9WZ7K9S^de?UvmpBbc0ypU|=l;m}cmAwj_7EIhDRv~GGPokLJk&?Akb$!plz zW7Ft9ky;OhzIdnjK}FU->(G<*%l@zZ|8MDif~#VD`dzJ$c4@bL*ABo{6#F-S?Qz z&IJIo+(Zi@z}Vo|$|4b7N^uG(vCk~b2Kb_W)i96WN_xU?&vzX)LZQ7m%_{B*SbF?z z$Pp*EX0IJYopk4i`YJS!Ezqv0e2rk_U~GVD9YI*dd^u*xBrShhAJ(Fud#U-m%2_sY zziBWCngeyNm+K$bML(EJd6WRgo?GtD?8$uveOuu15V!b(&%&-PZtso7d}g*#F}tEW zA~Av=@x-b)pfbj{@!T`DkCey~a-uZGZR?0=LH*_I ztee!>1FDmW{IW_YEq+bIX3aW-B!Uf$9neQ;1PGvbBgh54Z@t?TlU$1G5YLPgo%1JX z{z={axi93!VIZIdpcdaxFr- zY+oE`y{(WR?QgbEChZUWRw=;}uoU=gjdrSokuJYFsI8EE{Xm(K_~o-{A7g$YRMn$j zc}1Kn`$uclIw>?4ECrnkel7=2Qw}RM0oJrw)`qo>X}YU4=qmsj(Zb{@QU_7Pd7JOb zpao9D8}hGENl@fY(z#t)S)t;5iu>OcWC~XBccu4JuG_w8gLJs8>@8>9Wcsfb1DsUf z3&QYs+r5F`p8H|XDXNYb7?i7xGHjt+`j47 zlaC=s#_e%DxQ%FEz@9#w#Zl%>&Ve~L!UGM1rMqmviX3*8hr4U!l!oo55&gT{xlh;q zL(Zbx{A0UT3`xlYFBRj>5v<;ZV>$d{#~*+fCY-JU!6;m&4zC z8@Q^VshjZtpO2`CgA%u6(aI3qwu9+1LZCr1m0ezccbTq0e|cCS;nXhc zp$r$k#E(YGgDmpn^~M6HFStI~@@Ic41H|Krm%I#5$HXY;5)+5wD;2H_);ZkPTc41{ z*OiI%zQ;TAGPrBgTm!~L%~I^X^i#NMk3Wl{w5G~0n0FHz#rY%B^S||a^&HJtspRdW z*!BI>QFW?x3Ct~hKWDDN%xOIpae@#&T5)-i#?yD^lnI|wB)aV$ zIAsBKVb7w)%sBo2VSV7|jJ@h6-vjtEcYcr*WQValFc;4ZRH{-;|*)wrc-=`h_ozqgmmwNCmUi_2F7S}b)ee*?m zHP!gUsHt+or}ylk1A9Ao>xD(_gv#fr7cg$@D;E#;+3b>9;F2bO!YaF$hR3s_b*ZV6 z_O5`{S`(E0?Yb2U>8r5p`y1aRdGR9cQnQBneV!djV(fLvZ|Rg{`aS>gC#o~btD4CJ z%i~HuvHwiR$S!wzq<-VY;y@2HAuw^l5GSc0`4nNK?YXq~7uQ;Hb+g5DVu8g+;$1~F zm=*?_sL5}WqDE2{AYC8C@v-gNa8xC>Kb^}5>f_oa{c_B3vBK6Yg1&zvN3>RmZyhD* zXd>9-d6b!!KE?Jq!0Cj$5yKt7-(c)t&$KdmyNUvdUaUy}<%;kS_^+XLT+aXDXs2=GT^$qKv;BWMHYJ(Q-h92ll`mns;>@bu{<2gBsOKii^HRHf}b~u`!(GA);X=bWp>6``(q&{^XtoweMoe&e0vBfvQIya#%2N zo*@1<=4RW zL5|bjV|BDaZCP5eNpjzQuI`hb*B;*Sy7^Lir!X^j-2EX-!atMDx@vLYjBpu|guj2J zUXZFGQ%ql*WYRgt0;`h);M`twwpe)HX?2g)h4;mmJbFq??KEnLJ8^NAS3ct>#uT!< zL34Qrxe~pxyG?e4#Hqy%1TsI5Q!O*y>#`ZpFoXfsS!!rrrWaHizTHhPn* zJW0xwlk-!iPK?2Nm%$HHwwO@5lejZJ8Kr@qVDL3I^IpqWVZ)CMsE+J|eo1=1_DX1N zJAHV}+;4l^i8#sywt-+Yw|wn=5hOnRa?Vav9(k#Br}wa(mcx-m=+b@=S;+;`91zw&>7 z?|rZHuEJRQ0AF)%j6UJ7Tp3S#Xd47PV;3_WETh)x^vV`qLEd*Y#+s1M9;uf5{)&Ox znBoa^1I^8JZ%CiQG3R#7VD>^dK6H+UaL(BFX0I9shMN;th|l2d;uJip=->ooGa%E) zR}CE6VvDBm5#M2esn{J*X3dYyDk&WfQsemKimRUYQ$>mgF22NFiGwHTPwUpxkuLR$ zV*PZcVJWUUjN#d<3aSS&Z-|cQ#1u zhJuHmxedQOc2_!C6|-kd^E+}o_FeB-Jwj1fItSz5qst5`9y*)8Ti?_Ns^h}jXwm&% z*H&hNdimD!^poDBWVDA^ou}4c$S(?cNDPoZ;`v+uI_v`FU7!x_SC2ZgceX4%z82=Q zUlliTPcbpkfiC%GRa1%F2Jofb_p`Rkz7DdVG)K0J6doy8 zaS-H2ZHdipKdi>Lc36+k!*|92uO!yg+X##kpso7XBzSXMFIc3~m4H{i*N3w%ULMJ^ z4U%KwK7()lp3TSg$M^XXMXB*oE$Qs&oVX$sUv=Pg97UI2%Ur7sjKk8vp^^v9iF_Eh z0jU&9-f5>$$KfSkd*gF9i&&QItKzK&q)sThrwQpHW`4I) z_sZWHS$gkX&8J3)Yp(SRc5K^c?e%}^QXE@=KwL}$@no{gUG*;14evc6l!GBWVq$ZV zUSw^@RJT;ux@>BM^H7N`zT|P7B-4vfe${c*C=R!FY;yTID>lA1{5RwJ?$34V zo%(jNiPOSY%YgVZ7t#~%x5!3*@0G%78n(FG7oyMkQ5?69qQ%Bn4MWaC92JJb-RP!1 zhO-ebOs8$p6KtE(`@|r%*RfTlX?$hjwu+^ZgkShSmF~-Qcumgirjh6yqCW^>yUcw# z(s>n~VxqeIroVeU_=A0|MlnzNFP^Jv*HP0O7oxhkko0(CzxqC+|LAs!ynyt#7Wh%A z&Mt|Q49LMxIZh+dx8^yhfkrGM#u>9*_J?=k*FK6@_mk}Vl`cM^v&iw8^|Xq{() z16GFA?2|f44en&0iUniSdorj7$SPv3&C#EvhVe1%$Tfn=K(B}wb!6Z|5 zCa!*=*nA3ek}Di}LvLh`3TE zgi}=Z;lw438(SiJ!Cwh85~qT?jlEOFHVG6xzp@s1a{VqGHx(nyv*OD+Q6jLC@&Db9 z7uSQ4U%w`|FYU&kx1|4O~CxzQ?V{h0Pgq=*3h*C{iM zwNGVDgEWm>n_O?oXeSETC=hKxn_JW7h*CrDS118ZQ20B+#E#GGQBE4KzL9KQgOm7FtP|Kcn>fxC{am6>BHqYh?IVt4CHVqNY@ru!yc$ zb!SfdLTW(pOxq8m2xLUlLa|G1J_F_s#;AbiM3Urre#H$X@rw|TEob&_IUXiERO>rv zSD6r*K&7?*qF)Z!nX-s#sZK4LU6kI?)JxU+DO|ncZu3bZp9CUx8{iuurcAzT(*&qPp3?dXmOgqYR899XFA%T_!!ExzAfct2R{Jzrs#@xPUn)%+EDgIP45Af60m?+}9rvSSkeMQu zUzGx&skzA$uEajUeo`wJ(oicG%cvC(cjc8?4S812lIMfMJZc`vC{6|FM9izyK1{6& zRX9hqA5Y=VJa79PtQomOrGc1(?CFJgpl_>rY7~2@G1P(*b>bl+LWKp%{@Vk6d%N@h zwxi=2RlibjA+)3tPoyK--oGR%ra<>Egb>%Zk5cz-wUWJx&OoDjdhu3*#c0W)RRhB- zt8&5zb$aRtOdIK|$Rz;{?FUBM4|@{ML^6f6^lE>1~cB3en_z&);+J^PGs zp}$r03GtucA4ZKn^ClEdnNAB(-=c>;AMmER`+3xl;Qd;6mBO;aYzK|Dh!$WVLU^LY zAPcq@DR2!7&%J6BsCVmxf29t@z%@&V><_CjMvU$)fd<-)W6f5QTYHx^$99<-)XT4a z4-OgwK59A$W?cq~Pv{ACVtk;SvbddcXAfR~Rj^=w1W(~UueP54!TEEE>z>9R{ud_$ zXtMci3LCaHr*~BE_Is*8j+UF|oU@0mi*-jM`hYM9R=VgBY2oXXYNG0d$)W-Nj;gb^9NbT`dOpRvE`jd>I8O)k9leM*nQu=K@iYMlVo`C6{s0m1vT|B1G6j zvWP!~z?Db_1b{JjAt&8@u%#LOg2^8N8gpDAD^%NagUgX z(rR)(a!E~K-YC{7IJ4(<5QrdZ^X~DD`1SU*^}a@DWz&Ui^M@UY9bYhcvkhu*p|;$Bq82$BEbT;7Mf(l zz9JfmYS5Kr1ycZr{gfCSw@0AnD!iJ1fd-yEqZp`+`S4miEgDkOR8yKju9u1v6z5j1 z#W`w&Q-$T3SZw&K0+gpYByt@@53x$eeGrQbg@POn=+;0gVaBrENXuN25P(1Sds0o* zgT1Q2io2=WiW@xoRj{@^SbCx>l>#>-_{<+=;X(vU0SAc0mRq^oUdgP=qXk~*REf2Tt)6}IK$SZ5Mk+WN~7s)D+mn{tNPp~k>x1U5B$KtCB=20%puuu0 zp-tiuTM|M2F;H;@vRLZvLR6=K9flvK$EihL`Wwm^DJXcOG zXf31JFN|F)b2Fw<_kP2x?xOvsHqC30N)vh~; zx#Tp(%lU6;rXL-p8LIzpCw^ukCL#x8YXm+%MhPohS2Jfu30osqGchw02U9afIWv0; zS4$#RE+!W4|36_S;$mjwVEVrYSlFt=*{YnN3w-+gtUvev`WRw!B@dql_G-2EVv1m(dWYfxsq6ufNSDgj%bm~7SWic3PQi53N;0jFH=e1bT>&{ zwg%-0K?E^}7Dv&O>b&2OhgiRU{4{v}diFWt-Qivl`XLm884&a;zw<}E?S$MP^rltA z$qnGGp#yw#y@~x%=m7dRwe{H!nvmDUigUXMgvh=2TyIOwzpVGi-zKzPcOSQt5;flK zSE?xQZ^WC;`Iuxo+8X~-as)@czUFmAUB_YA)V&XeW+M~X5o$br;E$K(gz20o zj2S&TsIjn#`SGhZaBBW@q6&8_8T=h9bdf%h@|A7{S-&a0DEm0WsIXCs(Y74gg?2}{;>i7?e(#XLnk3;CCmWK# zOLM=#+mQ&M`)lLIaw-fF2bf$ja3rG-dDRQR;ezsQBDh!pGeG4;(gfjzc0CRjr_4*lG;1hXJExjO3KD|#*nPr8y zhc9WNqfAShm1a%l@C~t5P@&}UX@Xm4gEoB(2Pp#O?t1%d z$Zv1hf79~&=Z|c(=|H*5$*;UBDw)VMQF|uE-&>!Vc<%HAbPIYA`OHYk!L#8*I%tk&lfy2yH*HiIjNL{TeX*dvV&%xbftIh~5jMITGZqSft z^d>?x_7D~3-G-r_9QYL(LqxH5fq-enQ@lqK{PPnI3{75?Z9s@p)4K-t(L2!3?3WXd z)pVYf+o|jDwAsS3>)df%W_7&>(r)G4N8FS|W>?kq@#>fVGCZk6tkwiJYp#!~rz#%G zbU5ieAsr!Pu>)=OxX3$>S%`0=OQTJg%OaroMrKz%-+9=5UR<=n9A)UfPsD>s(-H=w zAd)^rSOLL`+RL#{n$j!sB@|o1uon_W?XXST9S`jn6Sa=e^!6~Q>ASNJ)VD-g8Edn+ zKCtVzw4w3K81xpb(X3Qg`RM>md(_h`eNt)ZS5=ValXmO@$kmX*Ue_KnvLJnvck$p zu0C(e%jjv}m0fb#V9Mo*4+za15h^$Nafs3VyBvmr0W!2KwrC#=HEq0F*go`_b2=s3 zp{SW~z8t+0dM=^hrcpGxk!B=Qa@`2266uuRCAftsNdN>}(6p(*tbikj{Jcsof#bb%x?B zM}Gbd8dX_5SV-*8uLrLWvJJwucQ=E`MWh$TxCQWU1`+^=4+A{KuhsWaf9YDBJgRBd z&YhVrV4w3QA(RIm5m6lYUR0!UTNFaNwPV?mN|}YN{H)mgTVjdy2HVRHbBl4-suHVu zHFHr4Y&d#(v`lu1-FR9HDt@W_RFfsUN&=g<30h3|PHP9{a8aUy!|Lbu=jzt`wQuf; zZ%!=~ze7-^ZQKA{JABZ}Qo}#r9O2&8AB8Ao2m=`q&1jwNgU}%EpiwxQydo3W;X*f7 z0ednlKX}737ZzM(sKg{QWOcOygkn-jX~IY=8u-SAh8CM(Avb=!6eMF*97dGSf?$cJ zO-_pl`zdwuK8F;~5Ny87JqX9@7_2pZ)k|^$+V8ht*Hn6R)*o)pmk*0sDJ5q!dY=&R zD|;G88sP*VCkvKrRwNL6TK-<_h3R)veoPQ%NqxPOjE4Sr!l^D5-vrU=W)l$?PEey$ zQ&Em4tJpht&X?$|Isq!#it8iNsDW`AXH^CYmJE@o;YC!{i?N)OJK|jdfs_cJpQ4P< z&jXw_Lf*ZZQXjafHx6_dqZL{@FFqX{_s{C#_O0tj898 znn9xsD=!jnip`czlK|q4&IG<5D5T_1?eYq}|syOkY)h0fC zxBS3rK|gBV2jUO%L!M~@4-cF~9SX_@vLd|=&os0WUe$DfA4I^}6s(RTtyG~no2Oa0 zNurLBmFIzR>J-|)e(oG1`o7(YN9j;M4#Vh>2NR>o7*KH8DQYIF%hnPV{<+a+B2tQ%u=|9i3Oidp@V8<>;Ylxvu*tgK9M)-NpBBsdAFU!XU(ERVK^ zsw0R|xVgAgD&g^`-(x48!Qt;=d;>s~?2 ziUtS0ek;I!VoZLl+VZ?Ydck6`W;^+V)yqeCu4#Cz(O@;n7SkIyMxepazv)GDVt+aW z-Bdlaw)`5-fU&Jjhl7H?I{T6Bo?4#t8#y<)O949h{&SP$Llb(P-lK?*Gu0TWo{B`Z z9Rp?}m{NqkfBjcwohYA>zB4}gR?Uj812kAZZGIG+2NfwAN%8z@)O?oIHCWAGiyF?H zW-(oyx0ZMAXT%16J4prH^{@?=ZMg|FK9SjnG~w|UH9eEczl4!d)hr7ELTl+pL8f8l z))>W#n2{vV`Gz$+)b0OW4DA@tnBr*QzUc<-`>>Lc3F!K4x&JgI^nGy9&B43pM9*N@ zopLv|gU(cH*xK><3wgD3t_y6I?nvdA_9YeZFv1#*!d2SB^@T0Hq&;GAcOydbnwn)IOCf!SYuQk9P2D|t9VK|NPjf2kbGW%9MHf&dGCI7XdsT?PO)sls_|*4d&aa(18bTjwbiL zj?UW(Ij_=EN-E8D?Yq(a3YF%%r}KM1tk|edw_pFq zGiW@&Yqc=GevaVC4W5cUYcb;m_|$Nx2gk=F6w# zPEy?Uq}SYxXb{Ifb&{X0X8X`HgCokjU!IWbqdKCPjw6oz?~jQaVVQ=-@4v@h;W5jW zl^rmJdQ<-oW#`x=2-B&d(s>8$pRv{c)#on-BNNaX@6- z9+{^0Sg;Fuen+DGw&YoSo9%JpzG9$=cgPTxtD)Hamf0Z9fgqw4F@*je>Sre_NSVc(mEDT#z z*h)+!2*uW&ri*^N=EK}k%$RzJb{-as3wJ)zQLV%6!zu^sa8@)FO(P2HXnz8HqhdNI zFJWs`_=q53fk-y!&R{tIltH>yT@Ly#`mh@a=@zJ<-5Du*kgJUE#q#w|+3A{L>B)cJ zbl1gZSfZ>47LTVc&3@2wEHruwyjcyc@`+e~kN7nq;; zlhpoNql{warf;`rcW!TPZvMUAes?$>HMFJ}VG9Y4Y)c4`gdvQcFo2F8zG81I?aqAf**zro(QWr(-Xt}714z*qcarYm0&!C9nE2A9t~nGk&8qFq>}7}S zUElJ8eLHV3Nec{-_lPn$0);(c66Ar}+c_kWyl!id?$= z19@gc7L^r0>5z8h_yvry=N&!si3JrM4dXu$g){jF-RKW`V$QXpd*R(lLNvM8(avn- z_)#3%i5PdfoWLIQlRY}KbK&G{p&wvzXqRtYy-f>1p5%jpFL2ge0NA5$kdCWW38rhPty_rU)qiyALwpy377aNCbekCs%0V(IjGGL-{=f9 zA~b`4B_F=(1gXwaC&m-0I*7atv%B9JeGfn7eoi_r$Ei{gNRmmFuNnpn8P}Ha0i}G= zsXPz}^&njJ#qq4_RhNnJfcohRm9%PvA*RfuPs9Srdalw*5p!Mf2n$$x^-ng)|{X+0?A8v%(g@R-1XP3n<19CuUCJvZBMiA^(XAJ0d>>NHyH1*2VtS`AH>zCAu z*&1=rgHZJN7Xh-KLW22S;hOQ92dB72QwulYWMaDC!?U(Y!iVKe#oI2fJcx;Wt-6+& zcfl-)M+;j!9~>@0XaVpT06Qs1&5I23+>@JBKsd;vU!U6qf$6$`E|4P@(qIZ--hawv zd(UIT5-x2Bhd7Xc8d`1v274Gfl+~9&o@!H|ukrXtkRWmOrA!?+(B@J-_%=bIEr{X6 z8GvW7Dr@`6Yxo>!A_$MMj!_b-l-ZdYH!qLG*q&nQnae`DUCDMP;{=o^UJ^^-PrLH+ z6Fpt+uJ%lsXK_?Gv)CB>8^(pMIsjhnC@q}mr zWvnf$f8o*IR5h}v-!4eU{$eDthFET@OF$t4o$FJ~FcD4;eC4CmP=kY7FSIq#$M8C7 zHoPNWDc2$fBxIgTL~5z#94Sc$`XS94*jCsexC8Re5}q90fEEL<5>1!P$P#BTK6g~2RS{jZ2bEi(dk7Dw3;>6`(p8_8~?IcgNI{$?M zE{+BtDZr_za+U(Vd}~E)88DTKMsqA3=VjFCd%#^Pe|l~TzwIZLPsfBxQ@ahP0=@0; zl9+eSIS0oT$6pf#8WWua)0!MGPD4x#gjGC!w4JFxq*;dVDsVXaZ(~%U$J||Yg9-xC z5NdfOLAbhOYS<4-r%J?#5LVrFXagAVcG+cP$Tfo9YT_9~2&#NkQZb_& zXSra!ZL&`(=pHCCKMZG}w;H zGG!L;rQwL*uN_I^>J|y*)1j*(E2IzQx*M0f`c?3D;ZLM3>cLAPPp?R!VewUoB#pAq zqc<1uhAJXR)UV*g!D-q4Jr`F~%Eu)@&0~v|NzsHLiGtGvZvuDZAW8vvs5$n3CL}HM z&{jhx5-_P!<;zIY{RPKPk_RO(#UEFQL60gA{$X!g)@>(sCab5vkMZ)l{8Hp-ashx` zKjSYuzR!^>IH_E+Hu67;NkGUwm}9L7xg|j6Km1v6Z!YD-^QedPiwl=yiDJCZn(9+%d8{ANMhFJ7@!)U%JXXkC<`Ef{jMdh3m>nW)!HE|I*CDnCjEq9U;8mS0R zrfA)vNQ}$$H?Clc#HRYp>j2~cnI#K2lG)!m>y^oZ_p=)Uj*;P0Df@pd6eabS zCH1R0rpKAo6PI<1tyOQ>Kf05W7W$*1-xz8so#He3@~!stWpC$P#5r0B_}Ya83T-@! zsV7}YE+CFbGhv0cy2~bWjMzn z78m&w?|OJMdvT$O#sqGske|Tz$U`*4NSN-P&_2c3Bs3$9gsbB(k4Kzkn)o)(tco9z zZC;o%q-dH~=UBs+TclRmUpDmeJBw=C91XB-I=bDFDsa1qF<*9W< zO;T@K;nq^E+c|eE-G*`hHaB;entV@;;C1$S4qh60vwAlNf54{0!s->k5977CZOSe2 z81x$H)F)O18|8_RFT&wm4SW6Fh_5bNmP}Pl7r#f7u&A%*5b3Exkx&>Q4`W+i4kj7M zxIpo}s40+8L6xb9G6YbYh*9V1jAt?@7F1+Gl!lrUoydz;o}h5VmoU);*Oaho(H32I z#5AGqo8BNmumr8G7|tz$>Z%xTZ*QWU*>2)7?#^q-aize0v`!$OaO&IxtY zX^M<={H<~36Gc=MOtE2KZXP<6AxuamDVEUJx(~eoX%Ql|cB2#T9+>9G_cN5D6>#Fo zUvu)pxrpqTDv^c%sN2vP@Jd7OGyEI#72DmJRVe23(CIXcuE!Chrn|>;cYJ;s$Q=v# zwM+GbSz7Dm@K|y!w$;)-b0c%;{JQ1QJr8728+`yinc;qKrww zhBWv`a2c$6$wp9okqZ(MA}C50*T}qBt5d>e+15AD2DP9V6}hlX$$#y$r!kjNF!|)@ zi|>VZ)9u!qFZcFz(k~RysN-q82=T`6e#F?QL#VVCdjVI|M46g6>vz*wsKN{H#40&H zr!^Hw{3B(VKC=3us`mHKx6*>`F5a`oJLhxQE3Av=_ta~7g@5X(^K$KFMGaK~V*h;| zC3HxQ2dbe&0wzpo!M|S9(@GK;K`ID&L6AW0uK9aT=(IEB!qn#{)9o#NRHN}qZD`2d8&DI!|al^cT{ z_YBbp=9!5G-f_YM`CV`t!+wKitEbJP{5Xw!Wg)TgW0aIAAcSi<)A2Gu2&9r_Zri3E`;Rk(+Z@_`M9fhdJxxrzh7M58dB&3zt&49X$m2 z_SatU$DXk>#Tx%20NLd|lEFGXO%re-m>|HXDaR8JLSp6&3f48Hz)LIpp#4RmE)_x$ zQ-EauZJs9o-Mx*OTl@Be^LDSEA4H$>&-oCMMo;9(#mYCt*N+g^Y48g#8HD)kqeOjz zae)Yb7GN2;+KI%;|2BYWU&-BR1*UdX{>WZj>*cO2&t&M$)zPr5uw?9idv3RnK5KlZ zHV)S>w<}|;xREy#Ki>m$fOi5fA~zbt@k#aW@l@f#3y$Bc%nm7u6QHEZ(UK0@QtI|I zn7N0e{h!?%{}O={aU`&GubXp)Ck&A+ouN)RAWciomyL7JQv#z<%8$~(g9`uMXt_M@ z4a=4x^U{S6Uu732F3_^SR~Hx;Chj7SGbh1rDG$*NxpLS(Y6x=$l@-d*$G8wHG^geY z0%3`kU6W+Ps;t!F5cf@!m-u^5?MZ15K1p&Hs-@x^XZiKV&^R3{K~WppGQWQDbTE+i z$p;6rHRyCG8JsHRtXP%-6m(L6GSHRpNeRpeAP`E&<;$6sHDc}x_7bNV{i9~iusC^g zRjn#vy8~`A+27ZuB(7aB*LFS`D1OmB79d98Qgh8!?y&47xbSUE1Le}fUMn& z=Tuo@$dn}JVm?hv^L!o`eT0*VL5WhhGZkxVVIwm*P)Gn+uoT2wUNKu&Vk`7lSAr<)I<7(Do2&vA-f!8 z!f#K&c`ag4F6z`cp)Zt@?qVjG{o>19<}g;bn=~m}Nii(CAz4KFHyIvlYsRPa&esT? zf#q0c#JG5g8u{Szxa@P1#&c4->yhPilFk#ku`2KJKM&f!CVt~0ol^cE0&uQy*%f-V zGnzdTq-)KFL*QMJTuT!9hMV&Z;VA>F!xO-x_!0}cpcG|jyJs^2XPQ&Sf z$l^_vDSz&ISo>A$e+AeioR+jTwPkWNof6T5<-RvNe|KOEJh zzl&K?`HNJUp@3f@IlST7hWZHRwOKQYCt)N=K@ywCuT7J;=j}Lk>7xGY*NEKnqH{vp z%(+RMNvzhC z_+&m&;UN4jv}8^NEMx_YG>RYY8IRvY8{~LM`>cX3=$q5;qYR#yzd%OPyYogxxqGfm zl5p{lM_`1;Sp4kgn88!1K$NzfKra&TQo!^fNvLo-tsUsnaVsz&72&FpaOUrjvlYkW zU%*y!eK#B5R-tkZRB?Cwr6j=ff1Uynet361qWZ2()3!P5(1_5~xcGgIgBp9pNkx;cFtm!| zv#qFaR321Pt*5kr#?|l0#}Y(n&{{gua{XvT@i36l>$>i zQt*VrK-5#Yu5@*7=G)9ck|ud8?1(_1ZT0bCUWq+?D68DBVv6>`XsYUWH0dYUt475{ zay3n=RVGlxhK zbrqLakO0E&WzY=%!$rb?2O3n12?A@ws9O6$_Zc{Wz)BArLgdSvWAXYnZ1JEBYe@9`B_~78T)RW0f{hzj0!0`CrV3xv9R{HHqZQ&H zP|Q9mQ%qC6n9wX|)-RjPCrgrqwhi*p_4>H>B^h`$LHYXnPL_FIuk@v`^=N!MZQ?$o z?*Z1`@jfcmBl#J1T_0t0$aVPgaeK)=eC+0Y$=0K5N5DB9_5*f+GR^1QcvwMzsB62_ z6f&2hBm~Vu8(ET^b77z`ujAj~k6=5?+n!JdChbB=)5jLnR0G)nC`YU^mtm<;2;<67 zATXYNY@`RVko5BK;?ukFdG+Yoy&e2EVsQNZ@NIE+!rxB6nXskRVmiFBg=m$7({W0# z5lg2sB~p{kc9D)(Rz^-CVqI30ky;&tr*%u7`X_%+o>4bKU66lJgxXa>ry=S5F{_gpl4-a?ad7_#mc^%S3NZ}!BnMS zEFnvFEgqe6oW@DK=gD@TZ=|Uod1cK(AAh$&6H?Y z*de=33N?O}ZI|kybb4?o?Tc9T!bGoD8;JyuJRL_DJ^ zP(m;;v6PVZeQ_=Xm4kQ=(vax8Tu$WxhESPrVj*4-9t^mHk!$8YU`i139SZIMOZTm) z`*J8s&2)wSRzvcl#76V=FyT8N^_1OiW3vDa^O#)vuzis_H~a3PA=L+$-lNgw@a$66pf>3 zBB{=2W3(2rRW7{!a(i*>M%1czSW~rK!;H_grlCda>*xTin~+H>7kAvVVF5m=s)u3W z<~&YUQT2?PsI+R<`(IZ6mOH!}eYsCBRii1S+BTJ~oZzqNR%qC1MooKzzRgRz+i_FI z$4b%Zo)VrxAhwf78A*5+vN>pqfn^XvNPf6}oGyRWC9XV=wmI}%Fxh~J68}<#QNSu{ zd;}KZvjI)S2FeDAqGo{{=4>yLG^7?jf=00PfPgn+?h@52Kyg@rzcDO7?>{19mfB&U zb^0*1xeue(-%tv%F6$cqU6k8Kvmkzg6tmYCC<8sr+X=E6Dc=E^jTDA|PL^cLap20{ zg37BrDn&-vrHj<}D>+d7Pg)b@3~_5F#1z%OOblRry+rbN@X-gNh~a`nmyAN$L7bIT^T$MN^%TdJ4jHp_b3@ul{3HY-?og~>Vk z6U&QufNqAI$*631TuWEZKq4|r&;e?h@(wXtdW+H{TM#8_7R?lOkddyJ5{ht<6p53< z-M$*MVVHO%A#{2C1#~dc)9~otpstCdVoPL0kw6`0jNSyw8?$AgMcL;8{q(Q=<+$xg?WJX6j#$C_xC;L)y$2MWFE5K2}_p?oWQicob&L%!MK_Sjpp%DZ6F9)kzC z2!#UvEDyzT_stj>J0^1-ZW>zC_o&7EE&g ze7#Efen3(jI}^M@%S*y0HKb7;U+S)qs)$pbLyqg_TFaWtLxL5=-Ja#dh*Sg z<}}c?(WB`>zM{T@+G72}y()+-(NZJ+!L*6UD}g%H-@qxAGrcS(bIoAkWtjAu$c#^s z^#1C7;yy~LN+5t~sQ{9sgu((=gv1*L&tpddHpk@|b`#`(peRszRr60g7x^zo^73IaNN>X}D^@HDS7ZOHT`|vw)@Nl~P=VVOTDd%_n&daI( z_jt_EiME%GqYo}fS(H4&7=zX`vq$pOS!uoIMo~k>MMS2y569@$u$GI?b)qCz6Li|6 z6T^85VBjOPoC&AG+L2$J@hGMxeWNKJU# zy&77S(zHhy_>jDdv9zUpCd=vxG^dJH740~7yQGQCRsy@9r-I;hW5G%(Qzv2)S(6Jg z22BBsVq!;Q<*X4Y+x>b*cE0zE9~q=JulTW}9oE}X?3`V$wZWN3nF(v3Z=nQ6S2tv6 zrifc#XEopdiig?j+3DNs-H$u5-CDW6_I#b8{@sduaM-P-TZ%vwuxt6GYTU!LmJkJy z6%0fqgruxQKt*vAf)!XB%B~ww#nlTKPSKEmh7}9MlQj`HDtr+@%OZ%xg{+#Fj!U=g zOzo!sAkoh#jwk{NKM!%v*MP4itQ_xy9Bw`oHW|Zcspmz0 z9mk>{A6Rq9{}vY$XkOL`d4|1*XbA^bRm zxkM!md3;nxA|vrngkB%*eJ~3Ie?k_aFWP}K`n!wI1u0hmlO-5d`L;u;84oZ}=*W^$ zF-g>6xO*X1ve>ZR9XqRl8VaP=9ZYnP;t*@mpd$QEoj8K260vhlr_K!CwO_D>{Ra(m zyse_INq)V8X^^Xi4)7oU-dy)ZMnw96X1j>cjJ@bfhABm(Sg*@h+TRu2zX3C^sz-jpC714qGO1gOk~+mQigZ zioG<$=|r1*b;ZPWO^;D+-K2VT%W#L`C$mgzEyb$0_PXbV^;)PsK5HfZJWX$+nn}$> zbw)2&ga4O%qcC0U)NTs)WTr)L;;Zpm?^=O;9BDMUFxf-KLB^FU9<53Ig)>lbj^To; zvm3(3vLPzDT85A~ea!3;%zX$~j{yMOhY{O2PEfR^=Z6BG$nHf`q{*bn5|bUBxS5Eu zwr;p*nCez?wTYYGNq{A}W|R?WP73VPBMoVx^f3KKAUX&s7K$R|yTT`A@mzV9pv=9f zuehX!P9<)`K9$OMR|3WS1O1M0$j{%LOu5y=4o*`VS@4^WtFUSzYo}{7rBtuhyz_eC zZgISQA3Du+dD<_>jBaDUZVCs*TzzksS6z9(E$s$7t`cNoonw0ZBJsO|?)y{0?09{y zpB8&n(X-Myof3TfONb3-xX$k}HlO-nBz106gbmC_Ck z#?E?OiGZqT!?|_+(FQjw^FE1grokdY-zwi%B< zGIu1CNQl4<8-oin1pjDgTv+Xb=-MH%hO+c8X!i@NBT26Va*uIl_B~n})*@7NX~6!` z4@0rgi@*`B@GC+@c=TjZMXtKtIW<98bgA3^! z*y4qtLFkOOO9Nw4hMH+EYe=@_z(Df8Oh7hdN)KxhDb`je>gavg8k*VVQTKQV57ng^ z;CQZriiKl>))s%laAzT`z^SyGkzU4U@JGWN zj#w0vF)gJy3?>ngNs?>~bbxG(L;=Bq@U|b3uz($1k+@NjSkZC_p;o}yJb{1(P+AHe z)P9mV=t{iRr*^MJh$_OFM#sVAm-q*|bc1itXQg+oeL&mQ0+;6Vu}??3EtHQ-ul4TG@&S z*pNk|@k?3-CC3>GP8y`oDX2lkjTAR`d2!p9r9QG&GqLwE2LN;#l*8@JU09`Jp)A#zI3p@@HwrxyTqbu?n z?oziWtUJqcnz2G$D-T_y|EhbtZs2&fhigl=8DQRWl5K!egOi!b3xrzro$ncnl85+M z)}KXr#7;{PKX3rYlLT}`cD^b;6AH!^q*;`wL*~R$!)wqs%LX8;s0n0DkAc5ksM4-p!(29SsS?7@pTi7l5T9 z53gvG90?!7in-!kpb_Kp5#tmKCMd;%`@JTrb~P#`D5lN9uESp}$1ko zo?x@AZVuh;?GVWQS6#RQN<@KHpkE3GP-;)l$_!qSW6`%vR zY@R8AH8KeEgo==lg-yy4BUv?;X$L$bHtN9OL%kh5-yD1{wjas2i^#3A2lMCIt?ZQN zI*Yr0TpQ5u>y%#zx9`TDbnw2esym6{jj2A8Ks$-fta9JNHPNZ%QS?-zEi)#d?Pw_< zmj%N=8yU%!slhq31r}V=vq}rV_=(Cgi#E=2Gx9)Mh7=XMB;n-arj&q-^9%#X=13qK zi;Oy*i;S$R&eA;`-|KRbRZp)*hHaiBrEwgSdw_Y#aZ&!~xhBwS42zvqJz62KKE7i*zpqLsx} zSdzo|5H^thqExW6?pIykqEUv zsB3IbAB@iC#s*6QI67rWLMxUekkreS8MkGmM*&oylBw&VhdgU#4P?ZIeA--zF(T0n z|4a+U%Wpwrl!*!>ed|S@iB}{IDTae^#zc=5>#ox~3Ic}=b_ZZvOC6)d$+yBCP7+3u z>`lUw#EGAXBrX;+^McE<`5bS+&qfE2ltKZ@A__t z&{ZRkdX3fyYz1Z{EfKT#6bZmf5R{ZpM>jyNct~!C$gH5?3?xwvEK*B9QvGKhbgdJ@ zw?{DTKx`@hci{B}pK8c7Ud?o*xlmyOZZ@ldxgWb_Xj;s^3h*b(*E(;TUhxd@4Q@gHnIBbz7@WAzBNeALw>al`TQpu3eGmI zTkhbh3;zyZ9x)R_yy>|7_eeu$PMDJ5om5sHIwMb=f=1+`$!etQ68ur0(@=bYv7JLN zNPgl}F`@ujcyow{4z}n1s~Wd7SH5`ur2FzU_ZXUdwsyO<{AuCI=jE9G#Ra#Q@!M&u zXl2T02%S+&Fe=>CpFZ^ftjit+8h$>Bfnv^9fb5;{Aa!bw%fLI2$Qsg1cMTb$sWLlW z_8ZZtx`VMnLC;FrTjidz8Lj+W4%54b&mnaK{e004Q%}%A;V!tvLGCjrr3LhF`*zQ^ zqMf{Ck$Z0lD$|Mxdv=-_W56Yg^O7Wu8K(ecsacCSxGe#5Vd-4~~y*84Q$EGg9AhD~+KeXMrE%^nn^Vd8adbtUZX4F@^C*o+hf2M8CHXz@nZPC z*{&@BL+Nn%9}E)lNj)fj zx_ILIOv62scGkp3!mgtAx9PVmuzUu20eda;4)0!R`_{cmaiD(J9W=IX*!TXsveM`k zxq;*xbgRriX!oya41dCHk-4IZGAl>&PvNps#1zE|k6=1V{uHNRF_o#UpkT$3ICs$? zk{z<gzpWs@#Cm!F=;Og3DOEWk;&&w()36&$Ny$&BebPkK-VZpKI+Q+s?UXXRU1k>FIN@ImH6IlD}Cs)ueG;4TH0zmj11pe zXFtd5v2Bs=u&EEQBzB}H(s|(0FdeFKOy&iW1>*Za!H+023LH}VFu~~ZYdMXO^r~;t zG>eqB2&+d_>D%e(!)n8|$1}panorPlBxDJqhUX(9y;5&9FO4*nDRIWiz$*1rD#w;} zSQn5_VZ4g5TgX?C(P*NP`-X&SQ?%MSn^ZROZm6!TxMO%@xHH~jA3k^Pi{m2XDR2_} za6KA0mROY9v}ZCoI&HUJGl5jaB? z=0No@iinW}k|R&9!Wb3i*AUIBi`^D%*%6-}X<%DH{kQ`n0J11;W2KtMBP5b1(&Uy+ zse3O-V<{GGyLn_KaL#NtZHrC&bV|XkOfCzX_q93&mC;vhBe&-#;={RCBeS0p6-EV^ ztb=oRX{Pqzch*3Aj2K_hRmP8-J0-Eo8HvVp&=J$u+>(c+E!te#hEi056r&h5zvRb8 zotu6x=m1j)eI{u|I=A(n!!yC*C?VsKK{joCFs8I%$dJ?wk@j)wX#Fah)krg2rU)eP zDU7LqsD~HSFL#}DFVfo*o1|f#ktaoEUs|m*3WNqxWTEX1JSzAX>Vqh#YA!7v;MJIa z_6lU%Y-cFxY{xzfBcU>|6bh-xjRjkV!(@D*-_Z_hLooQX^NeZ95@A7sp-G`xQAH%o z_i0NMWCCxk6zZj%d&RfRZ8;r}AcW32D`5A2_}qZn?*so((4s?~tL9L+Ra%oJ-m{$F zIjAY5G$m^_!Bxv#sxN>6^&IS4t65p2tfKb3&fH9GaWnrlGh5~U1iETo-Kh&J-f5mD zljTW6Ah4*1Tr!|-p+|}9&(Ck-3CPdmVl5(}jZWIDP+2&VqZWw{hfV7eK>U+WYoUqS zTg3l)+N_ z8>8uu+y=CS1}uwP_dqNz#>Q%j*T;hSY{YS-oHfUrXs@sIE-yn9FUrJF$SnURyZ!l| z-A~YM%Z-edg&r-ot2Jq$pysb}NA!83gUq%CU2-_?F>zourb;b!F zX=Hcd*a-JBs5(1Fiu_oS#f$*D zI2JoHg@5#~&|DQvCI~`P%qfZss?Ia&vBGiP1MqO500CcZ6eW7nD~bl<7yX(b#C}5tYfRLQ0OHtN@7`in)d%b#1~mMbxI8P4zJX1*`mv^SV;nsu@>s z$7R+viu3iX>GUMQQ^g0pt0d5fZ8k;{%N~3Aa(-YMX2|YnnbeLn8p2phiz$^Ny+vdJ zTkAXaX2TDhe!8fy{GNZ>{H&Xgjs5uD-P`%1zq94OTrTsi#~WzFF^4LclpJ2J_Xo68 zL4a8gFwbL8DQ1hes`3p^gy4cjb~f>|zkEz&p=gyp9d4hDB|*`lfH-i*i_nh(+Y^2d zlXBs_AZrg(63pfRfT)g}MQ6`Ki*St1J~eB+@#eAl-yMaGn!+Z~(9W2J6_E~`eG1t4 z2Tp9gy83Q9Dgq=VQ>G7zBpxhpJ}$KENY4UKRFwZrgEQ*&T!M=pheEU|r$=nJ6i*Ws z&RLg3-c2bf99H4qUG5gpVV4MBL(@Um*w#|AO5?35`^Dc>M?);Q)5$iu--}5v8-2pu zB4{X>s89pFJexNflmBKUi8?$O7896;RG0Q^iW9h_=LQ~w7^j2j2#NrPU}6&{_is z1pu`GD*#BW1p=iT%2tiyR1gc1tw6_^(aEW2+l)1cEx`L|H?`FCL4J&}0}#PQj+aAZ zd^{o(bFG4?WJ1GyR9u0MY?pY(XGg~CGMv=`WJB1LGN$;CD}!Db#6JsSh5f?=t8t%2 zMF&!5iKD8mu^-LP5buq?sY~Y`_13OCge}f!AEmYR-B& z=v|a&TcCBX%9IB;=WR~EBlS}Gd8W%2AU5V!Y&4@C@)s{=e_T(S^{{iZFUCs8P^mKs@*w%CuNBBO{_ltdVgAV2aa%77T= zsHp-ez$91!(!fr1)Kky}Cls$FNcLdOV)XBtR2KqgQw|45{`Ob4-=i}NlU5e3=-}dN zq~IA;_2x2VTNU)kN|>94=h5D9e6c}2iog%h-|LF{x;^m-Q0-_Vv#w*!&NS4dWxq!M zxa}RpF~hIOg}uzx#K?j3*qLNk&kVEBR&Vb^JjW#wQgG!TWO<7OXUyag8|4hY33i>d z`Av9IcXjASt{B#Jp)zS>;D&x3%wgsMhCd(H=(<}2Jc#3yK)T)WUi`izk5OC~pNPGC z-2{5_KEsr5g70N0c`l+$)`M=AVs}az8TEJ%C`kb=L0>GCc-d781aOyacbgBM+!8IW|cHj5t5WCCKu1* z0KWV(kDU8k4PQD;pxIGVF<}#4&!~Iim3q|bc~Xu;bVFK^4xkn zXf3N~Ac_qDrc|f1;T_g|E1bz_;%4U4y6$wf&Q<#tn?o( z2Rw)asyz8B{e1ViuCSpOPJ9LWn766OV``d+*{dsMZa^yc;}aR=p1Xi9vWIHgu}es9 z`hKyk-i0{!VQW(tk1X>sCGwowfHL{5-~|9iZJM?;M`w0#paXerbd3W1hXE^ttY*+I zE&|IWO@`6I;`!d5HkKX|&Y#c)$gl2lE4P%NKZlY^5>sqAVFFIbn`N}9>Yx4i< zxiD#w39UN2peoeN67sbmF3SYUux+CZ6Y5R+Un(I5wI9_Auut!=m2@j=uu+x-<`o}G zk98}*&@0gDaZ(v5vG!6cM}9{4p40P})ORt)3-jgXZ;~vA5yPz2H8s)Ej~pjNx1ERY z%5|~5QzWDI07B2@CY(yzDA}5X#MaH`w4RakHLch-Jqo=k4T}D(`2i{rC>LN={(S=5 zJ|404yT9sp^&O+pL~;%ZHZIN7WA&rS6^}^u#I{eEQOG8$ks&qPnJiE5^qoSf z?vE_lJb>*(OgKy;9pw5CLIj7nfpr~y7JzRA+0g0qOTasbY zx{$>lN&2X^zTUUKG`m4yqy6V^Bje+=#m(Mx*11u30rcIz$<%*Qg`-}UP=9-G*7;bY zu-Fc`(SfthPHx$x+8(?Rs;M>TFKZ$ii;-|fQUe@zl>JOvri|M{2N2^N(UU;vTPLrJ ziHN(u9r&&0Li@-I``_jTVmp~)f&rEos(a*E`UhrK_{n7?^89 zZrkohM>m7Ovji0BlU)IEFD7OJeusxL3^6_WNUBWX-7oe}6Fk)6_|bbk z7r9v$;D6(}a4^i?01Stq6X2g-XvJj5_9GZ^X|}e z85nAYNQSCBhSH`Wx;(lo^Jg7APB6@k%fR!~o2gyfuP?pTo{#4>H8(ZoyRDTz&!6>= z-m3YeS5UdR^57;gMzj53O;rh0#)fs*7lK{l$Jr}lG1n}NnyfB3@AxJfsD(U#WWf5$CB!ttyp%{SEt?^l zEH;2_qF;Ja<|l4N##@_`^K`@J00q|N!SM3>3D||wdTSKpw#}qf!Qmj4m|Wak=-M5L zMOO)DQB$+RO3rK#X!c5UWqCT?l(SnTa-bYWRy zT#lz-J#gbnky)uH>atj#Qp_YW_$7g;vi9#mppSeOfZ2kv9(iwN@0P~>6t{{q}WxhH|DMDujrIqmS0F;Eh6K%B<%CM16LI%hgj%Csu(#469tV z@`RZuvLXKWj2;AA{P8r7!YGS?;{wevw}FRX?*0sLTS~`$;5b%ZSdNbryIuI(7$I+! zn#yb12bsaA{UY#2ZrAB9n2a53!Lom0&k@r$Xvy1RDn1bH&RLfPI{-&i;p?baK&tqZ zk&J+U&@5k$6fl@HFN9#1#Iz6!3%g^e+3Gx*@u%BrRJcH7iM7(@3)IP3dTXy|(8Xlf zX(Sq#H;;(50;)su+}9tQJH->=g6f5K*6;?Hf~kXZGZ=|~qz2@!*e7&i^o`Odx&>4K zA0FY3Qeck9Z*Lla5WACMZ)VWc+29M4;D98DQVuwb6+j^nuqYP5^JK3JX7%$xoEmQR zQwLCd3h1o&l;3Dh+Hc9#ugL~r@Ebt13KSz9;!c>l?`#u5g9Co@2Tfm^-mhK;0J#NN z+7fK+81P}#O~G%M77O%_r=>X!H0{R}of!yV0vtg32=S-%>cfqy^vjnaQ-A;g0tCqa z|G&J!`T>DBLIP>l7@p zKQ1jAjl^L8P6dT0lF5xvPtsEanU%^?d)~aGM@W^V{y2!PPd#X$CO4i=dDmO+e5In% zRMosM7NnxnYjjw@MUy|5rmVKu2435By{lfwWZT_te9Lae+wG#g@zZ+8b2D&kkXh!O#6ZTAa<`=YJj6n{Dk2j!dQV^*E+} z`@qip*0jQ=0AjAoKVMTuEgBR&%6GRUdgjBGFk5swxAY|K&e-{rTZ&J`5@B6J&zv)E zmcmG#?lMI_Wm6)Ang3K)v0iuuUNx$0m|@FhWXa|+wS3Y#<$D^yiOe1_d6ctH=9t*7 zZ42m@WOYF2z;=VT+TZTst9wN2g_Ao5e+2$`?uEynSbI?UuJ)$%sc zPzrEk$GO#c3h8iyDW)l9opdvgS-LG{Wc3ZQ zCixO=<)+@M{OP*Z6a0}fmr(Zj49cngsk~XoW7FayXLI8q>(F!G^1fp`@pkf!rCVv~ z;$i<|NT?MrB)yPo{0Yue>=br!>DQkpSb%ht1(O@LJ_H8q*sW-!;7Yt0Wh1IKftxSVbk^SK(Xo;%B3;jVEHxQ9IO z0a(Red^~UEQ@kpc@ReA_^?Yr&iXq)9W(s43$ymkpk5trS6~jbxw~7VgG_Q*MZ>X5_ zNX7M1t@Pd_6`Qe&SFwr%AE{VmDZwfhU=>5_#Jc5m2kU;=8;4Z{XQ0#M9Dr3!a}IZA zI4^bPbv|&Vcvbw_&AVs1=eTQR6+PDh6!$O}0hrXT<>)S!kBSyt>jj|xQhiB%QGG#u z9-ypSw( zZK18@t@-#Wt~ISSp*6~$VIN^nv0LrQ_5^#JJ=!kXjrJfrvVCuJ*uJyfw0$eTWjkv- zW&6<9fNLMycH0ivM%aeghT5WRqD`=wZ*0Z=od77V#FQ5IE^*W%)tec`G>dCUE=ox_@B?|4}Y#Be-BzP33@{xt2Jc8Ip_;RU=ZX$9!!P+3@li2 zFGz{VHRwFbub&=hYw&Fd(_#D23ui$Iw1mD27 zZ~^`eo#8+59dv~*uoNahH~1d9Ll3wFS6~@tViqd2(1$iWg2y-tvvD+zfhX`32{kf2 z!?Boyxi}8T;{+5ega#d)h?C$R+{ei{1*hUPoQ`=o183qaoQ-pEF3!XGxBwTz1K5iL zaS$%T#kd5Q;t%MeAD7{B^e}*hF$hk;Nespi{1Jb`Pz=MtxB`F1UvMR^!e6lnhQnN# zhY=Wwt8on$#VCx%7+j0%;34G0DL9R>SPY9}9InR=xDhwuX54~XaT~^C0w!V-ZpR(C z6L;Zm+yl!o8B1VEECpxaEbgU&G>8UM8V#YLG>nGR2ui1sltG!4MWgHl%BImUmB!Fm z%As5uN8@P%O{7UQnWoTGn&xZgYfsZDk7m$Jnnkl|4$Y-`G@lmGLR#eO;Oj_>X$dW* zA7~jZryuDjT0uY4FSL?Y(XX_c*3ep7N9$<=ZKO@KnYPeY+D6-HhwriPiSMcJnGH7D z%C>BuZQEpPn{BZR*@kw~F4|3dX&>#U19XrM(P275N9ho^l^ zLQJUf%yDzVoHVD*X>-P$HRsHEbHTam+;i?b51fZizVpa=>^yOvI?r5i(N#KLC+I|- zq?2_CT~e3QDR!a>GevZF-9z`(y>xHgNB7nJbbmcS57dM7V4bFi=%IR;9F(xY^C!A%=eaNBZpt{$hy>j`?Io}?$kK{y15;TY_Pqk4*-s;BAcI#18g zGxaPzThGyR^*lXaFVGA1BE8szn+OwWikc`BZDLHUDQ1eBI1_IYOrl9L$)<#FgfE?| z`Z{wpuFf^MCcp0M#I^Vhev@l+9j?puxIQ=FhTMo7a}#dL&A2(Y;FjEq-{QCV9d6C< z@_W7vQ__?&DWl<9aSmLk(R#fqrsuEP9N>a(Hges{@sT8lKsbngf!{&%NYOa~< z=7zb+>s4u0MwM0NRC!fFRaB{}lB%q#sF!#HZ&aPtcdCo(s=im>~V3Kv0w&ZbyhEKCy*F3yVl0G2+;fc2PUZj<#d$SaHQKo&@Y-c5yq-j+ep`B*79Q zp%NxVBwQjSQi@8HL`#gsN--%eaT4#6BubJbO9?3{r6fg4+X;4}l##MhPRdIKsVJ#Z zNh(Vfc}ZTDzsM_glASDnmA}c~xYvwigT6itJR)Ma8?*rWe-2*)WJp;W0y``nJlDFh-c}H5yyYim=OWv0c zv4$@IRmCxjJ`9i*wucVWFE#Ig#HAD?n!_;s!LZz#bDnn(O zyDCeKQrT*>8l%Rl9F?oa$+za7xo;kr31*_1WF~vH0&V@P{cHSd{pS~~k$ye9BWOd!@VfC{5SpBR4R+=@`O1CnsY%8bW zbD3i0Su?HK)?918wb)u_t*};EYpspeRxiaX=cRhTv0tT8QdC#?)q8#4zw%!4 zK!M6S3^RZkBdBbFVVGeV1|@2Qp6(i^p_v}LdzcUqlqmb|5;ew{M6;d5#05{HMnDA< z7giCM$SR;BF@#M-Ah(K!BtOiL{Kz>uCw)%UyZ65P?p9sjsjn3K@xO}AVw-qZd?0p< zed1$rNPH#^^TYga{0KkFkMZOD1pgeahOfgl`q%mi{TqEsf2mLFGy1H}@Opldf5A`j zFZpSHhMyHoSb_^7A}$jEU7-;AL4UXo2GIFIFa(A|8I;3Fs3I zOcPz;J1`6GfH`m%%!T>Hv=+lsSPm=UUbr6~fQR5=(E}cVN8vH}Is6KK3(wFO-E;6f ztcI6~lf4cbVYBE7TVXrA4?AJ6D1ifT5I%z=Z~{)jSt(?J)DoqUE#<}Hpll=C$qv$! z9c3qZh3qW5%I>mI7Rh39mFzA1%B$ry@;W&{4w6GeGx-fUR1TA6a=0v)BV>iFlq2OR zIa-d9RdTGXmgD3N@;ZSD4UC%d!V)$VQ=+QoKX`Y!Bm53q;WWp;%<+OD?8+qc*g?Sx%tPqtIhozcC~ z1JQ%gL(#+0Bhh2glhM;?p+LX_Y>o~ZY=u8{>+qNO1U`k&;&b>SzJ%-XHGBg%xG8t4 zn|8BqlRMpA;;t~hNt&tVHj_0?W`>z<=9+nCzFA-vnnh-@Sz?x&WoEfqVOE-Z%)Rb? zxCuAo7Tk(&;Wm65x8pnbF20BFl8i5SBgjH_0vwYpecqS~mo>QZ%?YNy((4$4ykWFN-lR9{EqbedOK;O}>+Sj-{VxBAf6PDO2lYDkBzuZ4ls*coVY>UD8`Gi zqB>d|eKEQ^nuxB6u8sQYj5@0sJ7yiwmgZKe7COS$L}sxUG=2Q&0_|#JZ?HGoo9xXv z9Lt>v&P2S&z1yAZCfvm)&KK$T*n{j4dx<^HR$AAyW!6Aznzh1OY29NrvENxUb#tek z)86Uecuq&BlXJOqg>$9T+3DhRb-FpjF@ZkTI_1s?r^4y(^l%EDo;V5XFo~0K3Z`%> z);mQ`FQ?ckamF}R&RD0~8RztN`ZzZ@mCi_Klr!4>(mici?iu&2Va77t2oo`2q$x1X zOmm|QwO||*HE3L8ObgS}Tx43A*5+b!iD_fnnoCW>oyS(QHST--J=Cf~p}@=bg*-@>=@9egL>#dq^Pd@uiy z@8kRV0YaQ>31P+(>l-IJ2v2krod{>*kN}^sXB3QvF@!u5U?Ri_jYdEPR1$u?0_$Ks zVaOZsCTt))%0dnr37OK+0Jn)QqO0g8x)VapfSGVRq0<7wsCk4@iwLu3iyoqokZOhK zDT+idQ7lSCZ_!8eCFD5@$KW`j(5G++{zBN}68f|VauW8mmy-#9rpS~yC_bU8cJ$wKk#E072ClLi!Mp_M7ed4Pg8x=;c zr@ZI$R8aKk6g%Lw9>q;l%p{AG94EPf_A(dpco(WKW_?KNd_gN^g<%abiqJs59_5Wu zo*+h?P09O~lU7I8V7HNK%wFgzm_st`BlVT_)P}S0*dWqtXeY47!b$vVkLTi~^PPHO zmPXo*hy4axEyZr4vzgG+NM4C>avs^wKab&5Q!t%mc&8YN+$dV)gNK zdNnqnE> zYphTB87~*~F}&KVNXGs8tl!Ve`o8B+t??5HKjEd$S-pgxjc1Y#L4#qAgrAEgQ`w>+ zS*tN)!AErn|DE<~kB+jq;`h$Xw;PfG;Suse`Ie8Q!X_Y4DvvZQBpb01AR)kphio7r2_O(2 z76f^S;jui+K`MwSMI}JRFEr3Vp$Dy6do+MxRcy;kE$9)UJqM`*JN}XmMv+9 zRms!nRRs_12xNx?fweqD&!us6PA!AC3;`lDd5I3_b$X+I3HkCN`HsF#F_a98nMC#a zYvW`6SIR(-XOL5$Et3b9(%Tx4s$PlSa^(aI#1VAJIpZ;qi&)7xJMiWCP(QLjy107m-IDC zf?q#^_0-aFJ|@GrmxlWTF#{-dras`zpx@IU=_FhHx|m_a8a)i3@r3?>+9Jk{gtoiT z^Y45^EJ9f<-&VPLAo8**`h|lwy+s!|nY-~Y9wj=98DhJfMNycsJ4y-cW)(e)(a*A% z4~kfELhe+1)lJuZ;q$r$b|j6Sqvz>$ZjP0jJe!~55BXD(EhdQP#6`JD?N+DU#aQ*D zu-&z^mu_%t?#=l;mdkk|ufV-z3)k~WzAOfaLNQfbmF2Qh9#sQTMyT0p88YeBuFK&- z_|5S9;TyV#UQYS2ho#W|8QPAO9ikI-2IU-GWP@Y41&YZY9?1((7U9doR>%z~ z2jm5ntWGEmoO>9XjTek+W3Tasam^L$ekzKh-n+H)c9+{{!xUZ_-W=W^uGJSP9($M! z6gp5Qv@b@Pg8kkMi+hbub1bk+<}RGYLx9W#p2C$p4@f@ETlwXP?)&%%Q2L0kLg(h9 zeMIN3qL&ybhM_zvN=2pEAU29x@uB!mx@C-PDdS}qFeqqbkb?kVkH#eX^3DqyxfF6n!&l4eWR*??GHB zt)rg2kS@_H@QTjHbljxk`A?!kg+v>! zC82g>b$z%KOQS74&Ew@(*Hv)_C&URAO=sn=q5TQ5Pv)s>Mgf<@1D>SiRH>KJd?TPv zaT!S-MX3n1n`oizp*;95MpPMxn064}eHd|IfXqWnA}nVJ>|!J$#8#AN5hoNZr~*Dd z8d2;x)w&8r9hDg^7*PlD_}y>;jnS{r7F|Zu^+w7-JXoO@V#I3toYqq{SA`ege7GN; zbC!n~x#EP8t20DMoDn0$=6m-SXs2=_eTm}S=CTm$L+T@(Vg2sE0sTQrZ2iEb9byZ;wBA2 z8_B1gd#{Xb1|wqTy^=miPW}%`UxTEtQIg}#Ov=niH~p4r*XLMf9goQmfL@zp6`A&x z2%Q(9H$>>>pgkURF#U<;Ii}4)({JZKULNuXb1+;@Omw!DT^gN{PBqanAY(w;3D(RS zPRQa2Arkz3YXn6#hf;R3mE*UQtQ3=v?T$=iRyeDn)n-llvCx{jIGPyr#+Fzm#p43DEG}~9XywJcId;MmpCx`@ z#o(>811p+xQ)I}WSYbNVP-ul|znC9r%Jn$!q9Tlez9Ka@7|O-eYXIWl5hi96RYd`t zt1zYMti)MW!}>}szta+&V%p8DfmV5FN)TI<9I~lkzGr`OvhR>SPsx5WR2Z;4cK;Ns zs5qy6OPZ2&rG_PlaXE%*Qx>7niehZ5V6gh5~Yp22o(``sKEt|$g-o6^#}~Y zHYb_TBw%4py`5KSZwgK74Ke(R7`^Ng>_~;(EISyA>+7^T{cR&P&N4&S2^L^o`Rd-5 z;yW#_)VS;9kdB=+ni}|bY1`|yyL53(#GQ>jg^pQ~dasQ1$LoY;&5Seg0emzZ*cKP{ z?FRTg9%qAB*ZF87D)y56KttW6i7ETZ*UejGi=e|fc9#=B(%~$*%W3Q$v|!1##0WI; zc2rv9zhzvzHvaOyHn;l$c4-5D@Ca*g{+NL24+ZaFJGk(kS_8j#BkvAnx5*C36mf?V zDKf%^QI2aAb}E5bTczUfiWqfCojVFv8EIiN*NzJgYIqk#dp!STr#k&_&Z|B)itC8a ze%|4@<$ziV9EiIt=KzQKvKoV-aKT_>yCKG(cL$U^pK&M-frM72=|>JZ0khyrt!m5p zD8UvH#J0p9@Q00B;pUGbDkW8;nzpLcHU*@nL~Rr$kwOaF-@M&5=SwTKJ>So>Z{Ezj zd9yR~-hIGYg4|bg-LxvB)5q(kjiv%^}sC1#4Y`jHl*!I8~V#Z<+_Uq`br#voD_rTGb~Lh}B-HvTT{bGp5;*BPD`mV!@mw9xAF%B&;W*3BziS z8et>82Ybm?QgOIBRfQ*+HsuVdXL~Lt^)w~p;{p5*>1mE%kR`b)wJDKXgt_>52uFqB z%FJaZ4?;YkdI_PqAp3=Ua6Cqo6|<^fh;e32BEj=}Jc%-6vcn5F3zdq6Vz^jl##Cn} z=1HsI`5j)?kzVXd`!N&XnahL|hs31w$zjkOj}=wKDr4(n8{~~LBEqZ-;9Q36I*BfB zkTy!e9BeiU_L!8-t&0W6g{4MUG7CxOWv6)XoW=4CVLfN#E%$fOl8j&6K(H_VLt+zu zxYNRk{2CICiSxWI8ZVa3`X*!`PZq5S7UfNcSkaOUYqxPY%)7H%jcoIcz;HLPafjuKh!vh1NkfgJ?5<=z9i3(pJwZZ?f+60Hm2C*65}_1& zh_oHS4u&iZG}MXflac1W(ctW-0nHyIZ8kxd__YNsANpBmdXK@))#7}2qR&36@Q#|| z76nbyKn}shNHv6EzSPo7YnkACFlwat@XfB1FLryJD+k;a(P3-BEk-y25ji4aiNK-I z+WB9`=#zWCBka(M110lhi9Ue{NNf)^5&(+q&OGwqBwY3q!!_g zA*+I{jVfw(j}1q^mQ{n^3v<-KNq7eU@;w)kdK&UO;ZAFIedCTG0$V0dZXZ#)^vcrR zGuMCY5BkL~jG-HkEMvEb(Efk>@dcUfnH`^$hQE0 z0@eeqz&w}tIFJUKcnsNb)`g9OY)8;Tl=Ls816r$n7wh$FSE&;?h36sl2A$K_(teE3 zK<|o5RKYUP>DPy80Q^@mp8@X_XdL4~Jnw|wO80q&ub1XB1$6M2z|IMGzmF(Cr$^O8 z_Pf|i0ygV_qgbN>v>K>~%pA~7z%l76^+;FkA@GL1zMCV6i+(YvnJ|PeE5;|835`fvdEa_dK;H`0x7kc{o1S=L2j03^3%i_ASsE zdA=2*y8yLHIb}h+fFQ74ev9_2UnL3gdP%!Q3ImzParz_h6}5x5VJyMVChZcv%wynj zfkXCP^;J5pd_-$7_nh93eRLq+tAI~vh5SC1=@EJ!`L!ALj{v7&^RFTwI;a`zF9$7G zZ;2c_3Y^4R|M23(vBCHV-fJV)`X^Te^qYVhyq7HS6#IkqS8&Yvy-Th4)=bU66)`zW#n}lhNL7wg_$j{=!yey>RY(anb>J)1o_x8{Ik$W8XNbYmo zXFT~rnx}8d!^mUq!*5a2t?P$f)WOHUxV4WyjQ8DU+j_NqR=;GQQ)b)e^woI&9iZ7~ z5sSl9XKLKO=booaytCBd(*xc)s+H4zx1XI6{pLgZu{cLtg?}^j^Ypy-8Qwd3pz!y! zTZ4!v{O(dyi22KO68o5|978>V5A5Wah<8Es5T6TtCMtc1GoMAh)UEsh_XXB1r&;2> z*hp>g{hHw6Ol8VEt&N8C+q7D3L9d;l4t`g>5B7)Oz5ko^1%C^8`-y+NT9quFje&WKnDecVMjhdCCosh3crxKG@s*R&RD zLk$i3vNWi-pyo>G9BjM}y*l;f=4_88ZXGEAkMBYGeDFyANo$W)`WMem|s@Om}$NvwMUycbZvQPl2n z=r45pHev1K;Ir;VzRU0(f$PN=qd9t3+yhAX!1olaue?WtN*(nek00~*Ar3E68U0ru zd(@#4E|~V)N`SrxS|OLyJ6PcXJo6bkt{$PUtF5$JS%uo2MP=%*QLCTQE6PmTt^Sf; zQOD>ckJUM}Siz45NZNFkgNL;{i&l>!II6PpiA>kdj00{f3IvPP}XAX+J=o zEQ0=ru~e>3xrS(Gft zVsQ#7RzNWzR6#TvAqy_B97>j56bTqvky0>5qvcgzsEeS9iXn(dp)qJyjieBd4HZm0 z@Q9dy5KS;zqNdbTOcYG%y7Th+_3NIUeY>+GNdC!Ged_zVr~7rkzJA|!B>J45&R5ki zr}S5!+x3^e=KJaT*h&A)cj|kor)9jm#D)82URyHT^kTC7omYosE)R4OvV$v={MiL^g} z{j^moGZOu$RG+$n-z5;s+bcm{r4F}z~gN6C+3CEf7{ipPa*O2s1 zy%z08>r<~u&&(yPK_ESfbZFkSgvJyPUf6sMHdk>Ugo*a`|r+s1#4)2%_PL<(Gx{|*3*E;Mu$fsZB zi~ucb>UWnZitb${{TTN($p1f1PEp#%RmSVMX4b|3yZLeRlAIs;=ZnbS6%(bs0kYBh%6{ZMZtG_4`)cF* zEiZ_Cu@4@N>$fz)c|89ci03VDqJKcwQvO5g-GKfv{=ao0=}Tc7>5oV+h0}Sy4ef&- z3%#Ki_17rsM>^a?54m=J|M;qkXIVr)2cymCRmnTVS5`NlB{X^0aPwbEeS4SasPQ;( zXL<+Ux4H1{)72fvDf5{t#H)*1@sx+Fk5(_M{@M6PtLFY@d@SvXR5+zSW$ItmJF9<1 z_5F>3Z~9Y5zs@rKvT>vEY)$Qx4bTGySUsOIpQndMJ2`vGS>OA)8{MyvW{pXGO!O+T ztDIQ3opX0T`U>em=zbT|+}YaUj4ct<4t4rKW8^`^)UlR@35w-Aj<-xxlCk(eDHXd9 zI+hoS(S>pP>!w|tca)thW0i1X)T|_ZX$K!rB3;Vo9%wr0I}SLV@Fgytq{IKowdedy zf9anmvF{EPy<2!&+q}Q)LvkPI_nS>KMyC|QIWWS;(EH$1&Wu4ojEe3ceRcLr8Jm4X z#*$tE#KmX=H0Xcm_|&Z;>Cd88($|yj;k{zYo^EL=des3ovJYY#3CqITqNSBi?=Pa%WdU9@0lm~de3GIe< z<9weDi#f|r^LIq8!4;-V4gXbpKar`N^A~u#c<0{eSe4wK2er_$Ri6;_Y) zTjYltuYyt1Lt`F!N24Q*?!_C=m&q`J_noA%Ci4($2 zCfQK7LpEd^q&jn$F-7{t?6%H~ne;MiiR;%1M zCq04b-+Y-tT)wZcT~{w#O)UL{@273;YbkF-j9&>2e20gAmTXVQDBTqODOOoxWBjH0 zm|rjR>E{F;Q!}>nWp?Ij?tL25wf#-#YqG$*3G5gr`{LSSTw05HA?Hnao(ofTo(;rq zT~}r;#nky9nE9HfbLMwv50~rwM^EYa7%roHTKah(18Ye8sj$BK!QAv4l;6M}y@0*K z8uV7NQ30wjnpR5xwix$w~v`rSq4rh@L_(O2157 zCrG&&zl-V9Ei%VD3qK^%pK;Xh?(2;pU)SdxVE*B9(v{}ht(vi#NWF5IX1)aQ3#TQ+<`s>6w_*TbaR-y)TnAK_n~=ByjY+|@9z<+42UjvVP7FN-ogr9nwm zM>|s=p*VFV{UP~pptqB5lzHjhvVifr7M8+FzPrWn5?%q=FBe+QQPNGRZ}R`&;0*gb zD1IjI1bN)x-q9qR3ZPu{4z#52r0ptcNIyv%8|e$}WO}gw5>V%C%Lv=f6mKqjtUZ&G zP*-(y67p4#N@DZ-Cm~<8Dhc^jo%Ewvxnlh&mOm^B`NIxDKZ?C~XcF>=cG17-Nywjm z0R1R7&Xq~Xuk4~9vyzZME7=duC+@Mi=ee6cjJ|H;{Rij_l+~AemS^r4(PEo^-In_W ztcAN^A5>X5^P+{6X+-}4n_zYuxfjuaVt%fjXf+%I^>JHTH}|`^ZG&wyw{qR4Z7n)?vX0>4SI(A=a}-V{03r^;7{-h#xJ}rzW1E;^WT$&-UTu_^EkeE3g<0t zct4jj_1$`ItLMnvEHmLWjbWUd8Vjd$<~DYF%=nicl&SFkPJi!`?cCW`_@_&X`aw8~ z^lilTd*w3!O1UDtOtuIAqOZGTG4X0}uux9$ua~LrZW}CM#$q`~xO zmc~!-*WzWa74bhNc2AQLVHw_Qw5%xWD;tB)_>KUdI#Pz_+r$TCnq*jbu8i>;Wtd;b z9F4>`zsoq!k#0^o+qZ{{B=qM+EqJ$ky(Pvk_VON*zQ#KcyYlMZ(IjjAYvmT!#HggN zaXu>VDSR`>b*_#4_n;a-^WSf^z;BpwC%?w)BP0DjtQ~wu2eo|)`^bZoUFH02xLs<( z47y1c2RBKrKa+9kEw$k@(kq-Iebt|Zq49OgG)DWM<3(#_7;`fTxKl*u0sAjH!|w5m znZMmIpUt?y=7G+6bQt+{wl4oim&ErBQ-=SdmG*g(r6De(bz9%G<@G$sS>B2<_mCll zKGpcq*ju;PystOwr@Evj{AV%MJO!#7q@&8@G7)VGY&Gs@HXe{g!T!s>UY+2=qBE^ln8%H-TeB1kc_mX^{UHkUE zUw0nA?z|kT@9wJag|H{z1E+z~X}_7D|FT{tz*SaP96#^dlCXqLXo4kaAtgX%Nl-@x zR8n{Z$_R*IlNst5r4b^9N0~|sS`?$LIxZb15=wC($fk6r2qno!;qZ&_YaxGP<` zw`bi4I8Tt?=Bjh>EU~F#^LiJR0A-g`5Zwb}q*D&y~3I`*5W{ zAD?h0eA9mvEdY%5gk_&)MWp@0jo91FI^QZ=v1`*Iwk=Y$PV`QOjaF}~j-3;6>3H=0 z^1PD1*FDGoxFCh98@xNE(CC*Mse?lIH09_8{=-x5eKJ(v4EJWV75YQM;Yy&(mwo6 zGGBF(OGM$1;arTP?zr%PTaT@@oP&p%?*yrFo{+xogHrCihu-PT_t`LubOE*%S}<*^E>b~Z~jnz)+&qI%7yO++Bov7KhDYPW*^ zsOJzVxhM*^vrPw-FQ(lNgd6?EPDg#2vSgjS%XM-VNW9g95_ccR_D4qy4Vz*oWw19z zIZh9A3t#CQ{x13+dG{rqBqYO*KCbtx<^JgPIZ+ICiPZ}A zK8(jVw4%*8dxytyo?g+jWwoGc%ni=_8rL$Hu3?iiR*G!fd!x8CTnImbQS`fvIOaAb z))FpJ((+Bp|2yyfP;T~af+3`bT%Bh>%Pm*zZSbPpu6TD)PnjZp+@;z!+UsojV2qS1 zP6=aly+-~~;<|anhT66$d*0b3Jrr}^O0UlIpN1=`|D7%0ma_%P^Oic(|LOlHLewx=QgR3@O`c_1e>JYwq@3V$hLN68Ug^V?v7XUq#+CoIP}Z)Sq<1 zH&v)_#Lr*UH^RPub@Y2db*Wo`|5smzRd$z8BY)M+?Hc(n=V0W6oDZp!qy^^dS#dn7M+ zv=jzSkzR2hlR2?EnW8YamleMMJjFUG#P!Bu5R}0L7-lU#S4J8?pJ2TcGS%&fJ{Ze6 ziOUf3Wu%9A3()GNd{3aIACY^oRc;~ckl<}h7=2x?-@Jv?>(Bls*#GZKmA_ja^8XbT6=15%QG;~Fs(~5X4A$RdUs-uysIO(_-p=Mt zds^zfU6dWi&VpRtvHs-GNPX;-)Vm4xi8}6fzVD^{V{94awbp*Xw_5x|d+PmJUhuvx zxxr+7&Me9GW^q&~c0L*7DY_Qv=(>3SkbaE61bzhvnbYl1=YQkM^-4$Qn&Rx0^EPXk zMAtGCUE3u2cAc+*u6sJ>f6u(U4=Gp!-4nAH_6)eMGq$Gne`}pH(H!**m@_g(oaFv< zCP$lje`Mxc?|n@kGIL`bKaMY8?^z42b9buG=sZ1V+G#z?%pU68be%U!Z!?Fz=4_49 zakX66GiZ@^!Di|lW{fV>xnFviv9<3fqxqS(HTW?43htr2n78T}-;^#6M1^6m_$$skx zBcTrrw0X7N%{~62=zag9oHITlon_fje~>|W<~OfPxFJ2S{sZoEYOswaos+E}^-=1d zvcWs{YSMpYj-kFxK?CHc{8~CIWMbO-o3-~o;XV4B{8R~AqiLFDvHurY?DWL1_oUyR zasw2>{V)Kohi;bMwydYk=R&VGOC+A(M&E$2DgS+AReN)zLgJXPA)5xy)Otw`m{|{< zxGQ!joQ6G#UF=`ayYL43E~&k<|Mh<}-dUq5-icx^cb)X~ ze}fj;VD(2rrVy77!!9J>E$4OV7<86`;4WG2|61yD)=FM*Sct9#H@$JiLF5gui?&^Z_?En zM;x|BdZ&G>w6?dk$?p#v+ak-MJzO8z@VwJco+Uja_A;@;4s`Jjqea@Gp*tyFY4|Ti z*ZjZXJtifJdyG9yOJ|K2U%isdIL><&KLM$HMqHH{r)9k(Tey2l@}A6)xWXAKiu9%0 zOUJQeu;;OFz}+w+BduqBb!5XHPy!PzFJ{o6x_`vp2xUoqPkMt}M%>ncdv-vU_$AUy zzd;}8Sy>M&ykTg>A&_Z@r=@j$sPC5I2M5S?vH8-EKIR3Jq_cmD^Y=D1Nu0ADH|Y)N zhc~fralYruDpNLG8ogVkG3Nnk%x!ym$_To zSH08)6RCHC@@{r4{G~qvty4>ShSYdpq0a&t>o1U70%E?PkolI$W;E%{*uCK+v8CZF zPO%in4u_k(FH1$RRu-Wv>%5id=(X5dm@bv>-?4o6C)zU7#DsOhYvd=AuZ_ylD{+(l zo;*i>QEX?p(yI-B=dLC`qTJad?adfHWSaN5X`|yU3Rc^3XG;ZZS!eRo!*kwu_&=ZW zA2*r1ztyRi?zxWqoAB}vj;gxi___DKefts`vRTLv%4XjtBn!z>0vlq0hU{((6xiB8 z2$%#*6oaKe2RrLXi=#Y>QQB(4$V^n!hT@E!VjVVbZP)-aNgI(8Eie`63?K&Z51iHp z=nR%xdHvqEn^M6}_s!>=bKg7n?)`c0y&ENtleADfO+T?YnbPBOkuOFbjmCb~eRr+{ zwwiYF1hq-DV^k|qk6`{ExjP>6I^^3$^TzfKly@9)s@ieX8dNq|uV=naq;(>mtU&DP zfKK1%RJ>Q0;Ec17Ca7u(C5k)cbqcAg(9TvW7rW(pOvm>-;=R0^p}jv~zoAy>RnXrV zyVs%YnGOfm`3BsZBt@8qlHN30>TH`)YklGTHuN^=7Fwc}LF=@{nLunDxm%c9lJmNCtXF|{0ZD?W8}vCQB~|Rh@s?EaUQyd>NEdB4?AC@dfPunIqENIqT?0x z=Z_GRw}7#`;TdXne2zKu22B%-aCZKcy^d;-FGC^g<=+__ECpQ*cTo`Y&>q)UPt@Cz-|X>O zhjwovuLHMMxmP(_vDZ{$9v^^ihfb$a2QT~?+LepExhPlGNoskH&9(O^!n%D7Z99$e zKaYO?G0I*^ihb{$MIpx}oc-lE?WX56mDZ>sx*uohYSE1|cp=Uq`!Lro(`xv%$bAv@ z8OV5o@|8W-sB<><#19Z7V%AMZ6J^@_YK-dmb=dDBmR+@OsA!+k3D7QO4Sd&N3@_6z zj8P+KvcZ^3l(m?P=j?NOhoVx4_%-^#L0<75#_(nApGU2|C`ZnpNwQvc-Q-=c5@UMB zx}gk$)3{fVm8YBrbn6P*FVFciL=LqhzIxf`D6bLazC$}yAML>ZufyDyWv-C-9J?>j zH+Qc2|CJWGSZ}$v&xLoLm;T?LScS74xP2bF)r+-@@MG1&_JE(k4uVSHO7X?hME`mQ zY=^xTKC_??r1rd9-xC+;qV^bN;UQu~IWO|xQVk80lQ_93OvvfTcl?zcNQ-oon@ZjE z6~Er5j>tGMT|T^+3P~3MQI5iNQEsY*dQwbF_zU!thea8U04~bRK%w3*riw!In|e4Y zrX<|C!R*L4gb!7zu%!=j6W9+1fI@A;i}xbIv zB{%8(Z~W8L7yfBtd`_?@vV>ov{a^qHehJS-ev!8F5!vUEAOZ<&cgI7Fl)ZAC;8=sFQD&< z%;cvi4mfIZ3jchHd|)Yf5IhQ0SZ83JAp`6Ldq5mumO;9Jj}L?Q!5LgK&rldF1sXqT z;%}1tgz2x-BYFHdKT7%N@jvoE*!q1$J*nU0M{Ioz+6z6*-!;8DMaJPfA&*O*VxTMV z-NApCC~@mnBnQWL3^QZ}2!RIB2D*UC2Y9jBuDemlAsR+}(78#U*!m6Ht5JBp9`@gh z3Fwo;KW{!Ph#p^$pNIY3FC!_1zw-rHQuv>K4we-DE!$v8;otZ;EGhi$>tRXZZ*7Am zg}ZlX8F)fMb_;Vv%DNVwmTdsE7y&K z%s9-9MrQ0~##&}P#f)vtsA0xxW(1hwVTP9(VP+g+bI=tA3%~uP{J*|zT%Yg zB(K!PiSke?J!4*Q6PC{qG7e!FhUg=pV1R}&jfPOj5DLhK41qQ<2u6VgRCpJo;$61P zhO7V~&<3`GQJ~t@83mj+rK`B#u9&QJMY`e*K;c7pit!ZjqHv+h;|jPIi7pSz_Ob@A z<>l3smxqw;&e3v`EUWLctbcr#MH!I{-pRXU=;k}qy34$Y(9K>l{fG2OE_)Hj2+TY- zm;9_0dJe_xbQO-lQqLw2e-k=rdR8J^w&|a)A7tZYu0H*y=VSd7Pm;sD;yI-M*_Tw9 zsh`H1H~aKco}cQ+Dv}!B9QG#})Ip!^+V7d8zcp;TZo`M&rv8*vefpE0Z|NI6_J_5p z536HHg|qcWf2+O-<<)!E=;0X3?9)S@)p||Jt4ikS(`TXzfs|Q}l$}#_XF=EIgO2U) z*h$C9Kelb#wr$%sI<{@wwr%^%JM*qJGncc@xv081>)h0?UG?n!d&ZL8E_kx`1~Zx; z%g`vx5-hb`+v?X>FDz}h_F>t7YRxm->Sx$i+2kB7XskM(n5Y%z8I=?mtKyjH&7uN9 z?Xj{-+WyI-{Y6`Mw)^X5o^lB55>A4egP+gY))6hVAAq3X7)9%C@R~?GuDOKiB3Wu+ z=aQH&<#fyDXF6xbG*k{c+v0FqcBDPTu5rUWhg_viseOI|5X|JK#!qM8YRK8qSQC&txSZgxsjUIBL ze&(9ln69cXhdFy+Whzxqe;1-|@5+_y!f1S?rk*9%Fnf=S(F(vTnqpd)>8GLo94U5F z@NQS|E*wGVMlRh+iQ_A5(lHYbzAUCYUB;qRlik*k*MC2FCpUf{xbynH1ZYC%%*n5l zP3P*Zo3KvDa^I@25AMIR6e!iKF(V49XqW7lNYCSjhea6?jpRj~BTN30Gcyw6htSb9 z4_`XLABLRM&@03is4C)#-!JPzeV&sU&1nG4iRUc@!K+6-Y_0#fG*wZLeeehpGdIueB?=8CFbT0T(;J22iGZ9Iju=U5XE5nV4zNf^-ybUPs4Vp*^CayY!TqRUbB zIaph0CB5hBJ^F3w-wI-ZU`2qVO9SJemP%>sPl)li=#6s%A#|L!V9o~XjX-j}h2!9A ze4q9@oXrw}qj?j@QtK*gs>Rd1tqu;Zbk>nk2s#;EUId6oLGgGA*V$#QGd~*G+qx~V zFl|J1`1>L$1PGLTvS#NnEzIYSZI`2RwkTBEs0yCR-DikVDocj%5G%2poL<|N&-Y{f zFC9=;hYg`U zj#+j@exB)`oY~s@y@g!3aZ?=CVDFPZlVsU)LWhwb=(<4F)667r&_>pV4vzLldRA~h zBO85lIC>UV27EgF{|q@fX@$)!9gXa1g)Q|QjRcJhYz&QPC5^0298K{V=$IMV{yU+^ zXJTMtV&LZf@28+e!!(sGY*CicxSy{C+9@j=;va3Pc$AZ=)sin4`{NNumM}FsB;)93 z2ArCjdTD=0CJEX_`mMm}&GEBO{>!7&D+-D?E>eI@6H938cih7>OLq?b_i@210mw_^ zwgt5!GXt)6R|%FbqC9Os&h~J0nr7Q(Q}G4j4Ft>0rR^37)8feGLXiC+orS+n!~EOf za&}+=6o3JwSz}T}uEXuol~eKk$MFS;-=qV36sHw z?AQ*3ITHXZ5jiSbu%;>r`YOm9#GS9uK-t|50_|ryVDh|*1%F$5`y@7ykq zSMM-k70S=@x`pG!5p#-3Kk~d{FMUx~YGGeWtqQf&JYrQhH z9~TGb&?}OdNm2SG<(C!J->Y9BcFEs_2n}}--YdXXW>Nbf;TC{dRCAqx>FT@?^+#Kl_|W8I#DWfAex6;o#a+J`09myGI>hBV4)BZ=A362 z{`lKru%HJ+l4KExpDun4#jt^O%=)E$9ceNXLHl)H;2Ip3Pba+t+h(?59Z03PwF_sm z;qk-O@soDWqSL2~cn{A4=2cZ$ne}wV>&^8OnPceeAeK8p_Z}xrKLkrC+ zzp{6~WXdK~Q05%$@5!$p-;A!Q71^k1y2MeOv zeX(#Rb*Bx;+R?(YtQDR3l~mN!NpTwdn5OD0F`gqLujF;K5na5+vlwq3Ma`xsL#Oi- zi|x?iC*6ZtCpK*nGr8>#^nm^k9L$|Wb(svUBgez!G46L?50S@T^~;P@QY$bMND6%H zC*-aqL#%ky5r5~=LAD0xz?cMnO-qA3hWX>YesUIu&hK@If)j^N{feWWKF6T>U#b(VaZj5P1Cy84bSNO@WLUMy-zxwG%OD~oW z<@SRv@|u{i{!}S`ba+E#4|&r1I*)U|R{dcyzlU^hx6*{H$YhEYdxPezEHSMmUw>j5EckK~>)lX{zRJZr01Ov|DUfy*t$*S_<1oE{7(eW= z0a;`ivm6?|2wR$5#KWt&Bmk%`&GM-C)Jqt_?M6TPY}iShC)#)hI=#2L;=-h=YNMxX zQKtYQLB|090lw(u*IrL(-6B40swJr)$1J&ppgGg`_-cs8e8}~3{N#x8vpZg91{a@m zT@TNqH&zopzN}lONe!?Jbjl6MQAN*_Ld?9tk)C<_7MWxQ%mODD*+j;qu^)>^kjMn} z5#%CYaS(jH_~9vMw;CeYqPS?xXsNe3h@NobImz z>=O$0y!r-lgn6(v!Ff`E3<1h8jBz+Uh6CXI<)EuF#_%dcm&eq1{JP*8ypgIt? zfqG^t5$JN_xwYXgZw!>o9h*3YGllL6ZgV?N7?r4!x7;Fb);d((6AT3;SHnF1&iZ27 z^BaiKgVe-9dJAAN^bn!=tQvzXE+*A-{^g$?gg|D-mbmdB&pt*%s2eA^kDy--ecS=uzxTcw%TNu8xg z=%96ua1LNTZ!_FG%u;@!z!XF|$>h$@nfos2j?G!yZOol+qv>+JurDG)nyk`df2wTe zU`H_v2+5G}$+w|z#)rrI#6A;`DgOkA&<6C-v;@)>v|K1vmDNay)u@?e5ox7WXiyGk z?C%;<4IdS14k&&GR+xNH8U1K4o9K3mQ1) zTTmyhiWdL8qeBIr6z_b+z4m$UdB%DGPoPL_J9;`h${OZz08$?k3@C)uX7M14H} zSF0Q=md>z&@yx+M08B8{bm<3Yj7rA&WKzb^WEZl=XR$%YO#YY7R5{a6!wB>?hl2@c zjMjAYGuOFSq{~wEqkB~6Q{C^IHSL}u@cSCz088vY0l5@ZzaSB?@)0HTMWux1lK%yP z@ChcR2RFs?-xpXTAz2ktP(T(on2Ck2B~qA`%Qwo`?`LyZVEqh~)Hu2f)I5F?2bZq< zESfux7tP+oBd;=YSo6%U*b4k%UO8k_&U1b9tVXQXs4tui_-}1JnZYjg+PkxdEJ|h( zOj@eqN2&D-UQZLJ6;Vu)C=59L-*HXm@reJJi%|ukDy>!I#q?tY66eLKunqKUktY+X zA?^eQ_mhK}<0R92lmTj;@Si zQf;XPEM%SrDx|@1`TKqs=wD+g{^BnqfD-g5qfRDi0UIagQ?@3Vi(6VKNTtS}Jozy( zFnIWx@rM50$+b|v2*UnyyebadF?iZ2LM#O0dncJWn40I2w_r25N*0D)WrL)z>yZ zzfz{XRyrF1*^D;rn3`8R>n2@x^asvlV-xF7(5;HV0~$p<_`|Lkce&(e6Qt^wmA%>? zHgwkq`HesT2|R05Qxz!m2Y5bvx7uLmL4II18=%nWK5TC*W!$zc&H(fRZgJt^GlSMx zgQM5*NB7J0iG|LsDWPq5{r)RlPRs1&Hvy68=*ud+EtPDi7EM?BWNmjFrDxs>=rDVreN5gS zl{v6O|3};_xOV7xZ*T(0(a|y)Je5X+k9Nm8Rs^j^CfjeroRzvqG44RD8axiWl-C|A zY_(P{Z1`WCQ|yZ$QJ9LTNv+Km*Ljx>WEvBE_OPiXxv*m9RRkO43dXP$3UJ?12}bcXSrQ^QM1Q|nPMfIbEEO+$~7(2!Z8M_ zhFud9HBKgQg82@%HNatzX+B&L9S<$9^>rIj=G;>9ypq#?q4ZUynS^B*1xux>qxiv)HfJt+6&ellB1#$l4xagYx^xuN=les<(ph7#yLzGZ|>-0)Bj2tlX7x-ucR;r)cql~!V2%2if zs9JKyP&K=xkty;mfzU!YO}mbhhq;CMjbaS(Ba9nd26y!G`ZR7|4nteowjNt#hzxYH z-}d5DqZS91ciw3!X-I!*>EjL4#EXq6dRv2g+v`Be?KmQ~7UyygWJv*rN_kWXugueq zPc|*Vfu|nZNLgmTYJb%=){O3$zaW?7M*f1^kZd&lH#km3G>S~yez124${@osh!Xvm zVepf>D@3xl6%nHd+zAJR5?TVmX_O!JLr4HD*C2MMrQXq?a)CLWceE= zdE+~v@ZG0BJ~CQE79=_02;Ckg-!>OtJ%!q0XtEc33JfAq&d5LG1_l@L>zY4hwMv?2 zBzOn^zM{M!F;p`*3k@s-lefLUu2~SpIT#xuuet(=IxdhOqcaFpO^Ojq=MT*k;}n`nvre}`7yDD|foy(9{nx2o(dI|_tFlp}+OX91xvIg}z{f$~c%JNT zG4ttT8fG2D2=jq(fr=%e<-b6NUU2+)%|EunR99GKB_K>4;Vc(MmL%yd^8gXp(8fwc zn_mFNVd(XT1#HTypU{QG2A2lAcVa@pHUD+tms{ST2KZD zpD8MOq|&^ON-2VbzM6|Ui>y*<1{+oLAB~*R5Tm@&2^_H!jTG!C^h5p3ka+l~P^z39 z1#!1U>ptyINxXHC`6tlZllU{4#P86+nx6-`bGT#22Ya>NId+WXYw_h>i_eD{aBaJM zw^^EfCNOFeLwkDBLErVArRlahrn-3y=v-GgM|oF=m!_I_(n4td-Lj^3{e1QqrL<@i zuTsk9QgQ5BW~L|4a-Bk|l#(2-veatiqPD0)`lg+^+~KP{$Mxx}HKoN1+(2-ieEJLd z7l&DbIBU){n9$8=0}zs~KNZBfzZYL{%7uDZU&t%u_+6+|jZGa@#*deZxj(g`=}<{e zE!4mK7KG`m)_Atpfsxu;dEB;(RSTn61tGxW5f|hD;k>wE{d=uJw#_A2*{-um62IBG+{ed;JmW zQk5*}B$PB2-k^rPg`c?$X`+AOndkcP1G|2yhLWE2*j9kjZQvBkTnQd)wD$V;kT=9i z5Ge2pezncWr2vxXIC9L`nH%PRc(5&-5MX7`m|14N{hU7gvV}0t^rHUIhqwz*t9q1qC3$sr&g41# z#_5fYj-HCPhF_f>pIx7wrXQf6LRuDBCi)km1uRsYnuJKAc$)91;!fd}c$`FT6ds@d z@9!V+qB`kOCGo_pG2BCi!y0>WwgOFgYxaUn&`i**{Y;chl&plT`FCQGKq1)3-v@Q= zb6V?K?OI=ZCwr_hv-8s^hp&alD%pJ5ptwHcfyv<4Fk9|60n6v-yApRK@9Li3-OJa@ z=4<#6F1qzs)SJ$qo?hw7Hc{L46}wePk;-;0 z%CtY#&S1)TB_YWe4eq&%8OYwO8zx{D;Y`EsW9qanaaMPTZZ8Gyv-aT~65ND3iPa;I z_62a3C{|)kR2tH`xGM#hW=|DQ?l=wZS~yEj?)1?syj<%D3s_s)v=XCo;cMqvGiON_ zkA$F)`VH=OQ?8ZTlD`BU!(3<4j_g|)Gz+VW_PPe?ac=@W-Yg!$U9}%zpE7O!tjk|V zK`&T5t$IRrt#+YSYDa8ecLVE6&UAqL?ZQ}O!F2+490K)uUv4|3sFHpOZHPSst4}p$ zT5`xpTE0^=o^rJX4;=%g^IKb}EF3O!0ktgR>XdP^w(KxnmXl#J} zK(n$rhC5d~M>~<$M6^sVv4C6*eb@7voszI9?kQA&7pzS;%caUCD?C*Hz{#$vP|LBD ztNk>8xF}+jMV)y)R=I0*mTD`FFFKrYI~AqpN-OOzid8O`#+^Bw)tlS+hNqb?hto4b zm_IFEfR&6^tt#GoA66_mRJB*BfJ(M)xpSI%S#A{AG|PSPdg^>Qte5qR`sNDthBT}* z16t(EK?#OIo*8tBeZQnC`AhU7@)Xxs4O)sCFN(uvsXRYE2LdVqTmt)r*+BB)isYAX z*3-nlj=ua}Uzyi9;l3{EtmtBXWC)nacMX*z<4YSVj}EK{yYgJF%k#Qxo$r1ka)7DS z`|TK+b8-_NwdMOoE`?Nqk?wh|QHfEY(T9tPDnmdDxDGfZd;?q+^aKlN{nNpGcED>a z__$-YFWiqR)sLwPmZ3|D$_rVsFjv&a-U9Qi%k%-ofVgYX0=g>u>p2e>6CXi*=Qp;W z6&)@qFZw_qRA@kfEw*&O7%Ny#02XN<8!M=Z9*3kqyDALE4h$=TjQ~?g4anXuPAaT| z9<*ctb}D>WED%7Kbi$uF70zJ?{f8k)hk)Kgs0!ImfDx}p|E~wR#83U@7sReai2xV0 zDG)-#j;`mQkR8e$Fg#2-K@gs<@akPz?BMR9<+!{+QpSDT4>(4ClrQw{p6%UhyI;`* zEOw|}K?S!6tl-1?j6*xDu0T5aJ|Aq+!%)8?>{yWkX8aRwtbTC07rr>Vn4SSybg0|C zt{0Iqdc@L0e_7FrcO4~r=q^C;`2IQ%TBn8rZp<#CcTES=Qhy=j{i*7QOPmdMcHE)* zzsS7$2p3_{>~=^rLxz&QBrT{-e`owWz6R3jd&_#%6yf~!^)-_i~(1lYEs6lcVXX2YDW@pm7h9qg0 zZ3Jy9bZ|e&U&&!uO}^XzP1qHl|Lccr20rQJvyk-kWmv{<)Z0Z-FwRN^cC0$o+ZaY55Qe75Sf)brJgsfOawgIi~O zq(?n5?m0nw8TUo%MRA$*B$gxgUI;qJcN*)c`qu6!$WDQi5G_IGDB#pTfbam*aJ)%M zudzXObfS&sFvv--LxsqL+8jz#E4x8~9yX{S)*`h*<4v3#&M}a+_MR*GK{k2#xuxVb zw0nJD^;1UVknIp%*`yCvj+TUzydZB;N(e&e|8qjKida!!^_ZrsgAg0})d!0Rvg(11 zkBHCfONSDCA@v)Cd3mwir{_3jn)cbtgfWg_e1zFvRflMK1aKDxQZPf#5FUkGus{wN zi-I;NmNUCxaK`e8q%f$ioi1U1!h(nl5RS4NVYS50gB@cuk180V-*1sK$)uCUERLKX z`m;upX>wDXqeBEYK_&pYx{jpeCng|KOljFtCaxYf&FcvLg}_7#FTJ4El`fLn(+ z0)|_d59E*?*$?RMAw5=XksZ-Ek~*R25i~bKyzX9`+v^tuIeciLIPxK%J@OBDk^Scv z+7Fg5-|t>LJJ{$!J62q>9l^}N1iSD?xc^1#2H28L^{ujsB!$S)AR(jKw=c| z(DW9zz@``gfrm55Mf3fRB={Y!_dEIr$W2KHT|h4!a%!s?R;!%exVffRsPRXcbV!er zRF{x+mqIhjg6_}q9=m1?mMxKWA1dYeSd)E)CZ@!`DW_C!7~`n-@>j%X_NPj^q=M;B zq(5a0FrK4ImvT5E&dQ&644#tbVwzzC%)l}POdj%j zR~$Xk)G*`t)-g@1D*A-U#v^tIFO*Z3^bA#e82w(Vz@R!h^eIABVhz2+T5|MB{S|Ta z@jX>e3Ei;#dhNUd$A4cL-a0%Hv+1 zD^)h*WsX>mp?qkkyqH3~XLNHS?Z{DGkf%~pe5H}cSMUWf{D}2f?B*dyU5KYj7nw&m z=4;mliN`p1UCzby`UtSSt^yHUQvYGIeIoXx#wgx_>Q{OudGT19J@bzcI2L3d1{+JT zAtO9u`iCsRux?5xPRBre2=`kEqU zl-*4|I|*(tkdhXIT6QVcs=Zi!Xv74 zOS)F!@?Fu4r!I$?DTbIhgVQ}*`(Mh5QCWVcq7;*&#Bk>36nAyO^5FT^~k8+%KOH9-}@Za9^7NsUDs2vTYo3gmgq5l<3E*?=Ld>TVV~UPQna6+ozqxI zUz61^7r872bt2|D6U-`waVoTaV0J3zkB|f0uL~(>N1;tpBAE0~xpdJy zN?h4uk-bsdN)~I8G%26CoZ7rx{KrE9lR7uZSw{U=9^w$$otP&>PG9kzSwrf_f7ta# z4VqRe9ExpYvS}0&M&&=~={vdZra#>n|!{Cf1bHak9gD>;AaI z75j7MyL7>QkJ|~SJuU|ihfHSi6yO+R`PhG4^9ov}ZH#Hdn5M0$yi(3_yHRtUWZ6z@ z*&)Zl=kP1Nk35r*JYHEARY-woa7H}5kTtyc*R$I**fYzO%_c@(#`=cW=x5e@-Flyu zSXkmg*PYH&IiM|kA9_1&Rmr0rpdtz^=*91d7Ji}y2?dP2f=`!!CMI)O%B98+Icqr_ zW+2WVeTjNAS_`bQk=?@#9sE0CMiMPQ10EU2VDDg{SG3i}Egm>0^X28m#CZC`+hKj9 zm7{%|CfEQXvL|{4iUW&HxN4W-F4FVDU#k|&c~~^E&opw@ypjEq;UnNvx;3PmqotBE}9du)`+px0md_Wd+vm z9lo*qF>#PcgTF)?6grvnAdhN-1Sv86`P{C79zXF=aj zQ1veyayEdN>Sf4`IJA$_jJU4>Io=1+42@X9TftiuZyH+(v-m+t^TDR)UN z1D1EeUTG?74tJTDGoy6vTye^7oM$+C@xP7!lS1VDBoUoM+y>otJ*=jRSRs*^`!#Ih z-bCNj*Xci8bhb5CeQc)aKf{O3ci9ywaL}juiRZZcsmeoOgsY?FMqs~bM}v4!Mx*i_8L2) zbx6VAf`1PeVYU5TgK3AvzzKCxKeu{l8W8$&_r(>JT;R7U4Ked*^jh=2^bJLv6oNq# z&y>%bUdBM=5jvA|XQWrc=q%roazxS+Vwu&tt{gt|dgvNZ76_{cM=^n0hBsd%lovD$ zX~0CH))z#WRd_(|6skB8kZe%bDX1n*a zD)EkVwL-8{hofJ0EAu7r59)T?>d@6@q)lry&T?Dr(AQ?FPFtSDI+D6iel2uc{}}5a zdJFen)7Z11S0@gm*RS|(QZ#0mMu;9R^pi)9DqDIJl8q{|sY%DljFd7+Nhi!7!g3Fk zfcoOA!oqe)@dDVlhcS1Jxi3UYh|JQ^A$u|ec<_v8;>h0VAVwp+RAYZA4;F#TFEx0( zINTQq4lj+j2?={eQsI(L2W>DovqYO@-*5rlRa1NsA zG9|ylE9(P@Y50W@1=3l`bNi+3F%EcXPQ@$b(6#DM*i)vY>ljOEwz38HVI_2=ol(e* z(S^i=pkY=C()Ltj9~dmQK=|2|xt-6f>q=d9Nj(&fxCoMEkBj7dLJ2wJ^wDBvXm*MF zgp?yCN1j)s3*~6UI@cJ+>Ke?HN{L<6DF41xzZz;R*7S>Fn#2xKI;l3gx<){Wn~?-CR2e8$x3gXwNP~vmbV2^e^ZSU!a$oz+f-&P ztzM0n%r04vN>p;3=WAkK@4B4doE^)e)7()NQbdM~HpH{0f+yg|8@tHTSf>vH&o&sd zsIisysVT-Vl#7$_jO-WJxyi1n8iXj(U&A}8Ki(WA+AMOv=c#-9_#CV5Gn7dbI2EC_ zudFfAl-tweGX~gzIIss zK~mLqSnR-N237CU%&XB^3=;16G%DS6A>bG(ZEW-N)ns;qaHw&asmx*#W!JS1Va$D} zseEHo`Exsdgpx{j`A_Z~-cV>v{+MKXr&oK(PJ`g5Eot{@zjV=BOs&=9S|UmqqNssu zjCCEGD#VZZp~tdkR07VE_cdb!g)UJ?%sgkk5fnyqoU?-i9ZF5qAE% z#zixV8qCJRPxk?8V$OUryd*e=HHLZOgt&1`8YL_FFAUGkT%`Rh+m?D5pETBrB}~2k zQbk_-$*%NR=rLvL0tB%;$SGEs)${bN$Bs$v*oAazf391y;?y~m2O9&Gk~K(_*p zOREjA8e<-bY;m@HQ68pNxd~~Q+%)H6djr7XPqwRVa#prF-Je3kqQft?DlJl`ve<^*6S+HF;q2*u^z{ij_MT$z0=PuznwD(VBPdfZ*o}L%J>K@S`NCodPAmMLz?+rlKMaGQMLY zVZA3r*37PPHF0Nmiwx&&C%bh<(4kPi5Z93P6!cVOnyP zSF(qsD=6TcB;@K)@NYhL6Q+_NL!=KUj3YhZkW%VjIz%Y*-N2L^@fzUtzQy&i&~6_G z^zHf?J&l!AN~Eal`uwh5S|P8Z^gL>{Fuz$twXNrLW}+|rz3dB1^((CMa&w2>%(CXR zNVd<>7~KH>bZk4b^|)(_?U~~^x|B&td&Rn;ScS;mY$cVbkZNglz%G(rK8rwN zaBmMOkQDVCHVr(4Xeq64zGSeX{VXqAGvNdZ;a4T{NUD;iHCHGSf_3X}#R=6@6awpX zW0?{6R(kq2mWgRY1~uq_$y7hETGfhj%&J6X7^2ap5%Mip|i*;`Q>ZMT-j41jL1fctm(Y$3`)gLwMd83U~R&(HfMCH?%NJ z<_Xbd@GOIA3;8PW@YLl$`Y>lTzG&t!Y7K;Xx~746I7kfZg#Mg*iF0g^aLvYQ>S{fZ zY0IPW@fbI= z+WnP1UFM+wu@{nraslwW2y3Z+(@48df>(>>qJ}=A?ZW5#cC)MCk1ZrZh9H(42{MGT zlDu?6T}K-d`n4cs)?zV7%ZU)%j@f65gnNK@ zWQ$F1B;2~+%`1RAvr&9$q#3@N9DRp_B#;fUr>M>y(4Jh`zEy@XL6MM?WwEf8+^o0Q z8@|a~h_h{(BxSG$y1-G&TAPLW?aUdH%SJ-?6gSV6*jS1M>KkW+MGrkDx&f78ol4J3 zk&u3FHa=2z`T`8%=GqZ&B`q*S1G*oqX?XMix`QEoy)|lDBW^I?@6Kl>g2_Bh`^5w6`k_T>qxFI|; zkVA~bs>GDY9G(kk?KlNd(bUr#D-MK1u@tA>98{koZhQCT@*_`_g7_QO-$;gyxH_!3icaHc+?T86NkrpGY880XEK2V zpo!V#$)i&I*(THp7Cz-kRS@CWi5Pw(IZ<6$bu~IUNbHFc=%u^r7npx3#p2_1kv&gx z+|RA$7cT!j!C*N%H=(iAcdIG}co%rQ=>DupbOV^0Y+~@8)0CS_sX?F4SuX>zTU?c# zZ?xt&t)xs_yKrsUsu{qW^;%JqeA$lM*;2s*mC9_w7_d47Cx{pLr_I=(_o6z#rO`j0 zdY|#k{NFe`j5nM&tg^tCAnJa2pyR&kuL|sNiuzG3zA!y%jVWE%8c|G5D=ZCG3&mb3 z<`0Bt3Ou0j`CNfdjAshm`AlVkZA}nwoeRg51>9cDH*jUMWm>Nok+enZkH}pdwDZ!J z^d2+asYM2t(~TmRd4F$L(K0N}rVP7V>kG=dqE$6j>u~xfgeWm{L#rVwh+*1y_{K(S1$2(%+4hXIzNfs;M2>vECsTiR#P?q5Ez{QC5#rPul zCcL;ou)Nl?F>+xa>`9Pa{(uRoBM1k991)T;r2X1JdwD+omjd>|`a!cLsG@We0t=?hy>C^DR}OZNY1V zI|HjNDw@}!*QqVhQOByIOmXM&!?bR+OSYfK9Y-4vPrA{r`@>@&9~AG(@ z!p_@NzUAr_2r<~MS|Ao86sga6Ece^4H3VZEI*}aIhClSKBpuA#o|N3hVTg`O7RR=6 zI+aB!g=o4#KcFqBZQmB(Gt&oKOWp|RRX)SK)ObWR9;h2c7qph(*u5%Hm_9{PGn}rN zxhbooZ&u%F# zQx#=_@3&aehDz_v(wiXJdAVR-fy~&iq^-I<@TQQS^I9a>c+!Zv-Vt3k0@fH#s^uf9 z;ap%Gnqgi&FxxQv$R}?a`L%nrM%jj50fY}q6E=1bL_?XhU5sX3!V|;4oA?$+TVq4f zrf&yt;qD1M?XI%%?ov>E?mhoJB(M^pu|3h*AHuB#$CPIE80YU^3KEGGcdZ*0oPCta z@oKC=xw%Guk;mX^Scr@govlCZ(Vl#FA9R{8Qkz{XLtIQgpSf7bFC}SwGH!r&PkYqz zVQ+yz1NDP7uWK3lS*x(j#y#aEMm1!;A3QcJFJA7X=gSPXUKEg+1JL%oDf!xEz93!l zr6gXozDX|=AZ&TK{W$2OuE!y{s2&vJ#?2_?zWD4uJx)9jzIa5a*Af=0(iMwHZZ_?a zkF~`d;!?ca$*#J2bh89{v@2q+LBEuNTxxPU1uCXPSIWU^vQt?wYZm*nnAcSj2cOV} zwHJEVFDpmZPuE;o-dAk2RVMm>pInJ#PJtRlf7ld!Ky_sSd(t*iRxVKZtaI}{e@*U( zywQI`v;hBJLxl$60ZIln^4%V!zqD!4tnf<2Tu^#~I<$C#Y79cYdv}EUY~)3`sqKia z0*L|rHt5v!EvTqs^{#v8VvgVs4`#3e74}5@0w@~Bi9^ftoEt}Egv$F4q$i4*QGP^oT}D(bb<5P*uuTdI#&w_4rp(EWZnWCI0L znD%1ZDT|6_`)|7o5(gG9;fXwPjxKdTYd2ctEWh_m--mX-PQ{f?N@3~cgH7y_ zLF@UaAKUeu)8pn$%hS_tg9BYl)An|Ot9;--CeC1ve&#sRyMaAdTt7#GMS#{@@cd&E zH_3PuLgPrPAjS_W!Zi#K{P6xwf;JH7M|UBvsIc zxp);k&ev2=vXQwEZQ(jFk~r|NCE0*w5vkZ0GC)?qC2Z;j@d4AKEcjqNwAg7cMX3i& z&;T-Q1}?0%kW&*qjz=hZ0a&e+#^i-F)p=CZiILgj%`X-Xb{}PZY5JJ zX$)~$+EwF!;l@);<&No)P<}c!=m>fAVC8PEQz@1DF~n>*8&!2jw+hfWHc2FSz*%Wf zIqQ2AhixiB1ExS`dfp2#m%L5JvWzdx7S{h*fL3fX&xx$3&>R1`j&Uv(?;-`Lov*Gf zr6rSGVOzg()&W*f5Ul4t>1zMHlf@l(jCyzcCCa?*<(_xxQly7xlSpVF4H z&*=?eP|*wU%yVHoT-UvL?y7i~#G0b7C$QX>Xy2k$Sf=L&qJ7lDd*dWsrIPuR)5KOc z`abeHa#=QdX)eEfCtMoKcw0Tc8bz7_Y5{*DWz1DyGHkFD&`Z!9xRKDI;vmENoxMhQ zEL^*0euX$*e5fXjM{wjtLn`Ew;`!`3e}uCptNc=bnAj!iDIt8uWq4t|6sc^oZLfY{ z?xOherTAho(JnK0J~~f^Lgwv<^O19Ku6Wd+6~`BctH7;cfWXOj?eDM36{gAsRTXgl zRui@>NA)-KuaN#r*iwuNsI(#=I%$9HN2pQ^_!5z#C}JAch-vt{H`hH*CuB}()r@{5 z54NWCPn(K`W6NEWGNv7Oey(I|`x%5M9eLxr;#aMQeZ_RlsLrK@OR3pb8oi_M< z534N){qBPz=}L;b}MbIyR$rH-C~50bD)8L|{#hB;zK*vtB@M`Fo4*Vv6p4CT@RO_4pC2qwh{8AG_@Lv3-R%>zDLtN;Nb*yTuIk zxakU=PbzHqZy(l!4nI;6%f>afiB;)DJ3D3*d%K(DC#K7r!U6N8(KKANm#jV_ZORP< z0aqR9-N=MBqFxdMxfdOnT`QPfW!-!7pIcw}f9N4MJdGz%e$|eFknlmV_58oqQK!x) zpj@R0He#sT1Ws1*pm5cEUC5Z9LT=mzT8izvV?gwavZG#N{BmYZ(iYJDTzzscxg!8n z=)l@2vt7qevsW+{l4orNuSXZ_b}|pxG7p+xI_KPL8}Ed(L=d47<^0UGj;Bb+T2m{{ zy8E6NF2H*zR@?Qib8nNvvR1R`gVbPlO4!=YUhk+ce5I`-IIZk1a=SS}olz^_&8Ix1 zf}=lbVT{a@q^0=V#4^@jv0N*>*~dJg4ybyG*_NOioRfKMSFjhN7NDB89T(lQ%5A;% z&G-=0Z5jSw0D%(^fp7niyX^@VOQYqG?$WFsEMM|OF2owh&RLvK$%%R>#$z@>}KIogfmSjy2hr1-K*92-UvYz$KC>O9h?zS zTQ5QbY?518_3X4I99Lz3t=o%We8A}30sExQVs$p5#YK)XJ5IStz_9Md`f~yk+j!cB zH$d}tH2>$aFpuf;X?^-2JljOLP_{r@xaE;qn-FR72r0#eB30_R)&C^R##KdjMpTBe zRrs>b@wy_jE^G^SSnWTWcnw^T1@&OT7vT7jM*_UEqWthntq@ zjuhp^zA!r{^YTP?)_!8(fVc#R74f7ReHAoRHXAbqv2iD-naaT8bZ<0|;>m0(6_>8(0E+epWS zJVrU>y3%_QKLW8o*0aKx6eEP2K8}!C$+W}y)Ue{bknJ8okO6h;)V1k^IMgh_LiyMC ziJDm3#n)Tk%FI%C#l*LSBgDgnk#&7DLl%|8jbAzHaZ?>EYjXPxZ(pelvj%P;l>?Or z?^emXzZ|sEn(h5VOO#|rY|iBFIS>;#B+N<>;BfJ~J(N$tfE&I(4rwcTjUH7PS;;ca z^=Jv#4E6#iTW?$zw0x5Jtd~4CF zMyyD(w}H26229(8AOEPZ?MZr)&&kN+I%qO#%jOSHf5eWbr1tqKCX)Cd48re;ypPd# zOSqjgG8-2+2~#q>w)xwAYPGML{j!HiQNGW!KqKqb=0-OMU@cp+JvELizpTA;rmp9W z3{TF^{r{!r<9(=`5skmacLq?2VhUvPMy-zv` z#_hRXRcvR3jtQl0V&CSHJb6NCb^5yC2)H}{GR19@qwjq;h7RoSc*n(?@EcA6J9J=P z@mGfBnH_T<{W)A)uK$9V&=mfob9wNLbFmE5@EY~+^FH-m_vj1h-5HF2N9;(};#tiK z`8`vv;XCn32J~rhl{V^2aqRunM(x_MEbfIN(4CA~N3TL`;QsG`YiBjeg$LMFRNgx) z9p3q#9Yr{n@pg+t>uo{f$_r{G*YIt-_unpdt>E^k_!$nJo>@=tNzbNqE^Mp446=gH z;~nJIiR$E5YmVbq{-dI{Q5^Wt^4sZc0gt`BEieQyCy&)_y6g?}?VNMVse?j_e@u&n zm0{Ejzoop!cDviv!3!diPV`B(zd*M{G-gjP+V!|@c0Qk2Iyg%p787qjF0PqufK$x9 zlRMPVDUjzw=_7W8g6Bt*>Sk8KWAeKAe~g4ig~HNz`URsj;lHE0TqxsVP7!8GrFb99 zGTu_Hbf$eGyQi`WVQW2l$}$M zWqtI8f+dNA7#4&Vd9P-OClM253Btbm zU3E+i{ML;6(kGP*6Ow8C%)ob2KILWpwiuc)z#r+w&L`FB1{k}bi|{OrXocxwU+Y=X zp6{=K2dKY4m|RU4A6dSfkN*$R&$a%Z2%x|{tl{_GAP`*>PuPm`p3G-kwI0si2FUHW zBmf%z?{l4(rT*CGaf0#FTrBsg53O+-;%|Q=K81DS$0-6%lUSeOoUrW6!YKmah5a5k zsz#eTufNW(496A)PTp{3d2%qW6B2xTjBlz`?ltC9Ruh#}-l`KCBG@Ym+La(^5P7r> zfgN0rnOS?f)+EO&{Ubn+(KiED+uS4nC`HVpjaS#0LSCTGw}tTj(xWOn&zsiUr%mC> zGL{<%RIUgH98#8_eC3h+6X`X{$e$|FM4f#?b0BKUEto_7bXw-K=2dE%Rpw>iqjb#p zZn#>!mK@GAlca;4aQbapW`~PC$EEghwVu<;Q37k@q`3Xo2HlCK9n~Z!VSKYyin++w zjQGCs?;%U@6N2UooDd1@9nc0O&TpxjMYj~&(!j^>p1r2}UD&s&%$oTddqL!u?B2e* ze@B*ij9VwyA8U+bi?8mBhc>VM7Q-`R6Y7h!yty2~-Kp>0NOni~O}|7kj6IpjI#gdj z%y?B|LEnm6rSCjjCqe6tKG{F&XISxnZo2>?E_chnCVs+laumJ??|Nnb;a1Bxi|AW6 zU4|s)?W>nKle?OE&KCI{a-7Q|>Eb_LQ}LfSX2&7lhik}xF8VxOk~r&Px+7iA&pkbA zXMEFt@UFc3KEWPn0zV~@t~z(W5ZT)+4#NUUycDc>!4Jq&u~=5AncJTY6U}vvdn_?= z6g=nN5x0Q!hf~HC4;m-Kl{gl^Q7KS$AR#CYa4+GEu%n%y-|x2`M7vH_-|97(pOtSK zUefJ;Vk&z0umvzkjU|?wC#om%H%4Qf=bQL%(Eulrp!8HpZ}Sjb3i|+LJYap3fK3k` zSf4J^^a&#V*d_`OXxav~G>BZ43=}+5jzxdCHuVz7&m>FVy-n>t;!D~YRuy`sH3W9Z zs(9v|Ar25E|3?CY8S-2Pb#Uvhu}6yx-=sd++>6c?RzFK|mvYa{SF5y5yN4_9KWXqQ z8DoCegC2v}x0XA5N)DAhVqypPK`I=14v~{;uGT(=bng`015o1O8W@jgMs@Vg<54->H&Z=gU)E zq|EqwTfsjb8aUaQMe}qi;Wz50StZ#Nru5cU%dA`5XYvW*GY~V;4Qqq132G1B3uD@u zS5-;#TDLhw&RghB__U`9n5A0(i0RR5TzYiZKg7<>dXt~e*iJQ#A&08ECe<@V<7?5kUCRs z8KW#8^;SKy^Xx*ru2j}uvM&dt`CZuiv*sGTY^e`4uXM9n8f zq+Y$^>Z=YHaJpr!!k(LHg92lXF{u=J#Awe@Dm;@l_;YEQLLL^ICz9WMD*l;iGK3uaZ5?Wjk z!XE(!wsMX>9Xc(V*JJ$GVst}wPp?xp)@~B{P4c>QZKAfJB0O`WOC~ePMBa_^T!R62 zrAwZePB~J!8pat}@`}b6^-qBu69;R%qyl~#58coSxo$0%p)99=wKyGF%$?a3ZPm-z zyLJM6?ozh}oWFUV0&i-X8od{~U*vvINW8|;jysS`X9B{SJbP0sG-6cSM?HTy968?W z%PYA;105_-%@-*6C_}yPoU!@hP8@GRZ?l>V=?=POzU^k%#zLEgG_23~4-XZ#-FJC) zC=jR@PUtqHuL?u%1(9BcQCi$VHE@%@5c)<>22>Wi&n9;`P*?Koymui&QC7AH2gVGl z#H#;uiQ2~2_e4ZG>HcK-q3h7|mxo2Qx!3AzP1nft z_`t*R3cUIV+j*&ygYVA0(yHuL_QIb|-Uo&EoA#3jWmjnG^r~+lwZ6n4pRqa17RD`%^~^WX7bNA%G~yfF9CwTi7du;Fj!KB2&-=hQ%K|F&V5=sCNN)~(+E9z(SR zc?hfg=>gFOo~1PX zqk8Vmm5qBPlBHj`MAn{kPyKtfjYKXy(f&dCMM_ILXJ~t~J<-+C0@m*sXO1`$?b}zWcYFK|?v%f1yt${wOHTS) zy=X}jzK5cCr9Ox~R=|e;iQunuW4&zx;bx%iUw_;>&r)pxH&x%B5Vq^&siSVb_*{yo zmETd@wCNRtcbimIe8E4e2Un?olhTz@WKR8N@@%u-uM-Y-6ut;wQ>~{zqy%oShX^Ea zKSj;71XA$aBa_P3|y*ILItaY*_Qzdb0f3|4*zo2}C|RwXkpmnU0V^jdCZ z`|L;txT=23cs4`)cGcZ)o^3zfg2cQD1RZGZKvqIyC7$>l1ua3af;_rV79Lxkv7+%8 zL(##iG=|YKki1{mmlc~Fl~68=RlGZ=5@UnZAlmjZR#hC1WhN~n20K}Fgq#&;;JkH~ zk3;JkfI#@M`Ehl+VO`y=7Tibx&@UoafVpzOoM8lZ`am%bF;LOfP`UbIIQt+l8fLqHs8wgZ*> z*@m_@5wdP(vJd&u6aRE9YB)H?>=FGBJ!h>^PbKU2Ksy#Kwy)@>$t(S+ngPLc6H;0J z@eG94&6-WN$j~1GWWtCprR$Kcc*ruTF;wsAmvJ$}7EJwF+e z6+>@s+7Hk)GL{{6#K#D9s&4bK$Izj{R`P`F8*1SVTS14hLVtagU9Y3E4Q z7fdkg-!7czTm_f5Kg#AaPJ!^jTH1F?aZWu1OVk-}$@k0!QR@iT0@s?QqR@40%^LSf zTGpSwVldB}9`f7q-<`DthuZA~n#=OBD7^K5pzqFShl#$zqyv0D@Ly>h;5c1&Gm-pZ z32;d4CFJYVRv1AYm9cb|UVva7^v%l#zL;&1kb1VN7uAm7$!=g($v#mx%sTx3w&*8} zcEfVFK|PzlF?XSYFuNR*t-a&UrA`+?bvnfa!A0zo?6c@Z6iX1SiDmwQ$^0!)Vzu^^ zm@@mP7R^sMTQD)1yaL&??5U=2mV4H?JO0kvH%(!f@3#@%8uWwqbh=pf1v~X`6e{S; zqF*^{2cIbR^Sk+=!mTePr#1sxMzx{!KSEY$Jwk$SIdA0`EcQYIiH7RX%E_L(?V)DP)-v5Dlgz%!jX(PA5uU~zV)gEa zCmn_`lAn|3LmcGKZlJ;-G%KK{7t{;U=Z(}#E2y&{dW{By`)XEI2f5eJc39kzyaMW+ ztT$GlN`25`bO=A{Hr1Jsjpiq~#=IAue4;+^oX26$4U-mjxC2&^kTJapGKM@V&F6v} z2Bis=nX;1UevEs<)4$&PAX|?-;2Xyf?sS%;mU2UFTAx z)A^qQrC>GyXKR;MtQ32$lvo1hJZ_Y;iJ=`+VOyUcY6bm+TspvC>*L4fhY(2rA`5o2 z7slTKjO=qhkZGg0lE-Pka&>pomT*ex+ZrKgONGzXpWa+pb&%rEWW5K#T4To{BHKMn z=seo+jBUs;jH=fQ*azW#{|VPhjIfJyFt#H5$|E6M2WlOO>Ggw9(tgoq144p2KG#J! z<&cv;n;hJAJx130oc1enw|=9 z7BKTT7RNmKMjBRl$CqJuwj84{QKg|UE0YpyROC#ybuz?k9e)&yxZfl>RXO`TxXr=6 z7U|;HOw0J$JQK>3#}I3}QmuNDaRJGK7!@vwxCXuni7xFYWQtML3H!YTh7>zv%OLNt zarafJpjq%AAwB zZ4Kj`mx#_r@APwI8fmt3yvCZyuX1-*0MtT}Fll32oX?iAAD6&{=-bjCmT>Rys?b9GefL&Kf$^1`@G+-t3eU}a;l!&^f= zwhY5}?Axb2>_rdeekAgWIAS@~is4_s?c~nc9M(L?7@9E2@0S=o%aq>(b5!N?-@JDK zChz!u)yeSm)3kuSUpLpnr(dIrz_ghQ*lS}SRUWDbq6el21qsb{ml;cf2m{tv*+L!{y}2vDuvh@WPW49 z$u-n<67*}6N-Z3%q9}Y_o}wt%ckXcN^e1(t_6}t`kBsB$Id#@53!VM6H>*F9_x|3? zk@x0l1g4`7j>vSugv%hGP!3og+A@2gO{Cu#aha%l&0IDMN2L6kGDo$hNe(s9C&r3q z7L9NBiWs}NULmn?$AAz;8A%w+^iPFxfJX#-FoiWXFGCq5&EIMv3EMiRHTQ3Z7XzrbJI4uu<%mgYP(a6o@L40Y1)T8^YOpP*57}N4NCBxu>4JK_;4f*59NRn~58R6P1Z(f7hqi%F5U=Q{?8V zhx0J*mL_@C1W__6)r1LRex>_pI#cB8D&~UxW`2%VzeKEFs+Y|4n|kg5?kVdp(QX8M zj&Oe${oYW2S68^*%dre14*qEYRb>z&Y$54Brwv9p7YKg97|<_sYfvyOpwvk=sQ*6z zk>$SwKxE?LVrTik07Q0nM$Z2ifOxg+sj8w*0C{)Iz;H|c3yKnkdRzu1cEuE}S;RI} zt!cR)AJgngwZ2+dQxz^kdb{E;dgWhOySDtl+Gyx6y1*~Gj+H8jMx`w=Yy{0Ih1uk! z&c^sxpYz`Wr(51Lr#&B?FWp)0y`k>Fz)+&}q@<7Mn>8Y9Vc*7oh)~~bl%>s_Rx1BV zguuEwu`L>yO=Vlg<0{(wSMdcM^t@K~rly84d;{*K{`emlT)sYr6mpOO%-^^pLW;;r zcUnih|CEP%;PV72u-+{5Ca?Yr!s8^Q^W6+S)5L;!?)UNFSCJ?u?Dy_MDYDn{n3Bg% zTCIro;$kqIG>R9SUSBc#6V#dm3&G~) zLkY&j^}Ck_x^6bDe6?Di<&}WIamyVejBWU4MChV?y7u(j3A6Ae(!6y*pfm>&!WRZW z+2enb*3j3uJJ{;fc5u3!92#)kZj3gqAzbrsM`x?W#pt(cL+@W}wOZpZ^3UTLAt-rD zAZxYBDJS#jg}{>AqF-po|APAaKYs>(fZ?HfFkr?x3Qq6_0aAX;7CtYZ_J@%PYG&Ns zx&DEF`a*>IiK1~r*)4G}cB(uhp#qhd(&^%rtR7_;T5Xm)rU^G%A}x3G4{7|Pe47`o zYk#P2qB(d*-Ot}wHn%%|+DCbAzl+UlcYIO4-&=cbzrMcwzEB~3?)D`>A<6z3!jqPo z9{WW?%-|Z$5D4ShoR-e66h@-(Is67nQ7PnR#^zadJR^txSU~6r}gU` zl;#h}WK#1zh9`cL6<4lS>9+2)7#gpWTLMxZsyAD1*V?ULa=JgB2{}E^9K=kQk@0x^ z4vxwf&1Z6W{Pz!vt#o>vo;IEs?Di%z-A2{fTJzwi4{@VUw3mr+62~i%3R0^4iu}stRGmqO6TgRRcvY>?W2u%|7g$GCZ7Nv#m=ReO z*f7&D(>XL)G0dPFSQ}XDSz9SnQc_k@2vSUBw2H`?ITxygm&<^y>ToJTDv_;{HpG3! zqE)J`YBEY^6wS+Fmy}%_J4E>M2$W+hPnTsbQZKU4+Rk3jYUZWpspik;2MZ*c#w~GI zS}Lb)GVN$uubVwNioYc3PhgyfI}UX0J388S-0&Sex2bM6I%ZsBFRd;wc;jG+n}m&nJik43pObEsxhPRIY55g^Q# z$j)RQy&qTM_P8|RN8t%bqS{AL4vooln5g)Yf=;>Mm7S9LCZvvGk7X=l#~c}rI>ouwmZ z_PEHJ#Wo$Z)259w4L8laJE%fV!PJdY`cLO!{@*nFc_NIVu zEZ&;yS%$EW{%y9LxSU_ve)8FgT&AT*OPr3g9|z+fU$2RY0ou5B=*wu!RW(#VRx2NB zcEQV0RoFw7X&J8>F>FdPH!*fGoTJt;8WIu`QH8~W2NwHKu5n)h+m^l7KQrIaw^Sce z-o@PmJ*lzsYpd(68=dQ&8=Y%~R~Vh^cAswLw>g`iwBvg`6LoOi**z==-hOjYr@5;2 zcI|fQcIOPY%VQv5J8=B)U|X;|V=Mtl4_CAi2d7i3yvaL0^lCGSr+1eq?H~sETbT@Q zCEiz;PoR&0uU)|IzW?G6{oJn^j@7(H=k?d^l|0U0YzD%Do_$i^^q*a@ypKk7brTeK zXMl=>7yt8Bx;jb+sV|Rx`z^qF<8JS)=Qq!49nETE4-TpcJU0SZ_RDV}%-pBtS8S@1;K=7Hrl1sJz9^O))Ep(d={L)P-_Q=`D&}w#Bwh z*=}?4pFx-Z#{8Qi-4+QpWIib4a2EWy1%=RLiI$-B4|A8&gwKEB7mzO{navwkBnfL4v#H30n zkUahop;uzlEunEquGt6b7G+S8u?n`o$JaG~tNJr-)VPkvo{HY!X~VDGhtVKb6-H+! zb41yaL^tTwl7-%gZbPO$EUiJMJ-t%bY=f^oYqJ4&&DauPYhr4Hx;fQS=hTvHYrMIR z(2{t)pw*mi!?8K|+~8{?z|)7&Aacc6X^>nMfp7Se-#(SwNnOkN*?szz1IQU{f9X!0 zObCh#A`JpE)CWUecSlPS6I3nx71q+yyfU+v0z+M9x~n7zu8M|KrB&+69aBI|+-Ug^AA-szByiTlzpTt zn-}^AA~8(TB3`Kuhx$4%`~R%Cg#fw=G=82kb)gftWat?q{=Y%&sF+1)ZmH5U*6jR7 zmzWuE@2>70e*0eat7Hos67B7gmXK;o>-7!x>5@&jOv}p++Duz#8@^0yKvT%dk`|6t zddj5`Us32&7{Ri!myW`#`e)@gTkk^e&F-E3d+X<>U$XybFD@y_?8)YPOCNh(a7(_e z$v?*p?c7F&nSM*+mB~kh?{be>>00@->qm(1;`g?EP#a5)f?s5 zO~@!$*8+2Wn98aJ+s5#6`27haFb3-JOJE2Q@QYwd#Dh{`V9>;-p)VFI*2 z*%=&pYlKf&)r^DZqWZ{4d5GYxEnbCr=w4AIgvkR&6Be-mi_RazUu54-4)#mK=|hic*WeA_V!@7J^a#{BJ=qp(;hYX_KWaf&?hMNfr)>H;*~V_gvBRi z_TIB*57sB10bKWuS%1IMCz|Gsdv`DMj=L)WS?yHY2iLf&|F;jMwGmxaw55+a$^o+xQC^&eA#yo6HUCP#Y*plc#$r*z5*3N7Lfg|q-;{NY%8A&DQ!50K!it||$MwChA>i97vRV>M;i-Vhz)E2ZhB(>WmHl)1U)wvBo zX_G#R3bz=tiyB?xYZl}>WDw7(x*rSl5_T3S^7uWFbUU+*cC#K$o0Jlm17ASArtM0G>xl{=_$~D<_HD$+o;{uJ zhN5-(+QnOkNr#bV%C2!YDMREWjmvZ<9mW}%et@hEPJNGBCs4XA=K5amD$n`}RkxJm zDP?Dcy1UR_7kleZrUR^<2>Mn)C%GXn=t!E0hA9%R5o#AAj}gUH!iM`G!9OC1fdJm0 zKxH{V*?2$2ofKZ^?4I*0Z;u7cJy}*5!{Jdj0WJ5Zwct<{o2*Oe7^q zxI&(daysiDMCD%|Poh0Z;;9^%t!QK^C_@Q$F-1!W*Gd7u4AnK?ZfTJ5sYq`r^IcK@ zLgMQj*eecVPS7iiphSo@Eo4s7D=1{%0Y@nIpS@{G;i>WG$G8HU?fd6Df7F6Cy13Nx zuiv>h|N8-?pKEVQ?!Nh3yI+9*8OKB9=ZT+nZ?=E#?)vS`%k#$v=vV(YqkoaW1mR)q z3&rbfN4Q->=E083;ubB(=(Ka>7RpPF_KjKx;udx5NVR)zC=D^LA65;*YH)6_eu#ds zekkrh^nQthb5T5DJ7tWO#QA)gg=`k~>Cl^_;TEMGPHWWW2>#*6p}ga1o6Hv54TgKH z_YmKqp5tws!WPF3W;9}JkoKVM{2BuQEuPnZ)Be2N6&F#vFE?G#p7u9ew-E98^fD;I z7!5#{k(2=#iE-cw&{{UlgHy2B%<0(XQnF(8Zuu|`k$;ITthFx|CdhdVp}hx63aU%N z!Au%|RBbC$9=&6MuL-{mXDz+G2p_lPHN_d{o zx-)YsE<5r&T}nD#YXa#XS-U&^B0o@HN^J^0SdRIQvkr|%_3`{&Kd0}*4^>`vw^z4x zvmAmey%4|Dx=VLtZmVDBKQ6u=zu$p;^XQ+1-VJ=i_*E5FSsrD5({hRtIk^8fZpU$e z)3VF3%d*Qfi+P8AM~R^#b!qYf9ScHJoX0b|>NlZ#3k}IQL__?Q(oCYO3E#T)6-jJ@ zt_cEMsLdD=gAn~uKa`eOr6s&yzC4qByxW+1j^YXKM?MftK9qREwFzXDvUocKC8hx@ z+TiNm~)40hrXz#$HLe2J5yV6&MobH3aVt?Z41?l%O?5o#7 z_{p98JENGpgw^^h?{Ht~x*)6#@vGG72O!pJ;Is{BYyz+AK;49Kul{b=K|Txf zTm^nP03i$zal%RDfpYIt;sqW${CzU>-6QP+wja=rS&xy}L+gUS?YrH3xvO!KYOm5! zs%hvEMpxwwBF`$2O-ejI0&U3blEk2Kj{}zuU#Oy0#-Nc&!f236H!W)Ls}jKNgJ2$q zsPDId!kt*qgqSoL)SxQe>St3MnOG-H84hW*Ng2%M4R${)*Exl7cO+L9<%p+t36MjV zZ3D;r6(oteJxo^++V=Yqty|Q7Ug8n`OVoeWF=g^$4Ju`pypgIZWSJR}#vr&V=69X6 z+Hl3NR=vE^kXOBs4O(raoKfRHoKb}Be;`I~5$yFcR~X(ydh_(p;a>-TI4Kdr2M@x| zkg^ZTILTv5pA4ZJ5}WGHRzR@h&ZBrxXE0oI>(|$eY}i_`H>2@K0W|;weUm8J4UFs$&p}5)cXk z9gA0`4fXs?Nml1Ae+PkuE{iIt?wHCiG(OcH0v0M4K?6ksig=n6>U8Tgm@ z7x=|*+A4hWzM!!|<5(7|(#EhrvsmKUaI%HGg7rom(Xk7_xQsvuOO79C>0%LA#qVtB za!)OSc~eg_70O)_OoGHq-NSavo4TqVX#B}V$NjCf``SEUr2 z-i!G#=?|nnP`ojJqxokroYK6qd}{V22#l)VFMoP|gW!uvED9_lo@f78*~A?#cg*L> zz#Ykdv~#m#>C(3O3dA2L!ykrtBJ!%3GsEIRUhil3K&@8}zRce;G(c5^tsc=$4x@re z&P3LIHbLt4YbS0VJbwxlDr*#c#AB~ul-!n`Pg+8mn>>Ut#6VGx zdfzD(^;Xn2hC?hxG)@6tgcTpkiiCP9jY3X@=eQtE++qS!QxH~NiFpjHO@inyEs6A# zu#{&5u`wz&rI*f`S+*Ue-di1>>t2MWzNloCfRUuSxg&!0BAx~FxD(NXdL~h@%lHn5 zL})~K0Cgi~KN8Q;I7=ZG#%xy;Ar+Gyh{-3asBWagFjDXHDrv0Til+`w+3bdzW_)EP zr$z|khTqRHUAl7e}*%Bg^!C10v+3TA;9%XkXtxX^jzT7)D&GYJszv742 z2$g3F*SROOWU?u#oLp55;hK3Rzf(48ZEnej>c<0F86n=e^X`A_sYL<{fQ=|F?N3VH zSLEEmVLA?SU`2`XIt*~2R7e2}Y#?VWBqB&;Gn}Pl{N0c~z?RzxnJB6Px5nX~dR>X#-DBwpeefNmuu$mAZvllnrswkWyp#kA%L1P&m zOS6=2wCp&4$@IhSqEGf?If;ZIRts>0>&1S7_*>sq(Xo(V*}R@3n224;tZg+Qw=;LN zAw8>}ya^JHVi{SL)y+)s^gc~)-=q|B+1s`Ivkwqz9sQXN`$=Xgh*&ZtBQwD%CtKI& zWU9%<%+19}bnHcWsqW+lZA9Ei_W6D3-}>!;JVcTdql|$P?Xsw5A@*t(=jU5eDb<}( zVo`BXlp&&0e#kn0X+?s#6?h9;z9JJ)>hzcNFzo7GHq+glJit9sc-jIa3Sri2MzA2i$lIVje;}fwh+albp zZJQx!yQ0jcbT7q!-4uFNX^AO{x+Wf{jvUN;+lItYt7NocYk7&C+Y;xj=p6^GJUyFU zT&~uHmWJreX*B?bZ$6`1F$lLaH0_Sq^a0tqDhH(7*RLu+{+;gtdPnsevc+kF6C`K8 zoRvk;_+LFKYHRU-zSx6P<}pMMd38gbU{BONNH~B>Uvs>WTTDq-F_p<^e~@->^18Po zy`eMfh_u)*!au8u&=t8l^Sl+D*gMr(EMAYnP?fv4`{5}6=a z#w@th!&Ofzx^sKL5n(Msvx`*f4q*RP{&t@&1(n zu7wg1!9nFRPNonaf^m>1sQW8 z6J(FR2t)!CgRa4_Ig6=HqEDbc>F)mC)%S^&V`#I2c%Vm||HM*y#SI+@$4?@=*pd5g*Q3xt*+PQ*+4 z>zoI~(~9Q3=8up>_xyvxq3DV?nGWs(d_ENw}2(o6CmheW8z14>^qqnIgr@m<$Y6gi%Fz0PR_+ zmrNwvOol0)h5O_9cImyswnFXe80O7Kw|(^OpW76!86BVxV@l*^W8~$&iKnrC+rH7U zA-+d8{9;&OZNfSObZo*A?uPz=-!g~!pVW+5&VO_acol#i+W$lbz|#17Dn`;+=o*FXC zq0l8obUT8M6}tDAJ`+KvDmG|HL{3T5i*6Ifyi=8h%TR>}D$&{2RfC+0m4%7ZW&PD8 z%>O17TAn@eX3b^0sxpgE`Ls`=rdK6Lys)QJluUGJ4N%i`t2DPD-3&vURu859i6K9n zdIJW8E()%31hh~hXjJDjryfSa_t0j=p4Zg{gLgw`LK^4BDmN&4uBH{=)q$BWF=mB_ zmJjL3$X9J!G)`0%Q=MQq6Q@mJIrCiH@;YNa<>M^Vjg&)6!&qGze#4y3x9UW8WQ(OL z#Ts!&-2m|z{un$tKTu;T@+?jjpK!ql@fINGgJcz~_G8@;+5L+a>pe#!MVpm?8UNO% z8m;0e5A*rsz!w}Ue`(y?1YjdugWnF`#@0~wV|bLZEag! z-Q3*r{IeYbSEr%Q!IdEcs{X>6t$=_kLK#nBA-Kn4ln$TxJW$)XbNM!#Qb-wEkgh&N& zmty0jC43#m8qhTW*cM!S6F3Dxl_Z9GUCfXdi~#0xNJJTJ-?tZ|2-~)%#EtOfnK2{i zty5y(KV73pv$p*Et}*lcu<~>!U009Y`s9+OBsB$1fhI$Xk;?sQ4EfwL5E33QZlhO! zm%p~CYpYY;X+b7DCg?TCk-rCH`wepX<$Uc^E1!%Z!+ zLbCtJ;XIvSI_wEcx+*6*`K)&paR2Kk9g;v~uy9I0mWfrtAno}w{v1p5QGjI8A3Oa! zH-1YBR}vHzKSO3U${4$2WeC;jVNO3Kzmx6IE>D1W&YxlKHmqkm29Z@=!!g9HPQn>G z9T3q?uK?k}?7G=li6(YxAZL(>A;1V>Qyg^x}D}iMibcs!W2+lWX zA3$WR^A(&FF8GLj>6V=HjL>*nt~tx$|1{x4#F_&va#&?}|&-(o~58cD=gUGU~Y~ zZr5AgewMFC1mKVp&+pBQ4vL`+pRwSb!>!zN`j^ub0U!G>=a{!87xX`<3gu=^tD$GZ zJIaU{pByJ8PN-ZdoQxO@iRoY_=D?uD0jJvPKKk+^)aXEz4jQT<|N#4S$L< z$-mQH%~cE*o8(ZhTkMk5%2YvEZ~RU>dq$*IEpZBYG_|7E?IG=24Z z+jwgja%nVIb)Z(-?C5yA%2>-PYVe{`O^ryGJeRiBpDTwbn7NS=T5=X06OsaWY!3wv zH^(My1985K$u!oDJz__%!LPAt)1cEVSwOq%shi2`{9kfT#dYztFp0E-fQS;^W-{17F<(he*2RAISSQ zn%f(W4)0JEuYrjqpG`hS^OK3zWYgmKBbYr0ZMOY#dC>e-jw~Yxzl?NNlvs1_I4jOV z-PIgrVW$oJaUwC=;8%RA+NnfU^xEPKe&ioxF@GRnTF!)=roeQB7ke*5&QEg7}Hbm2TM+lMS#1}{Zxg$O^oNCKM(C%f?n9yX8e+~;#>Eicq}(!_lD>`EIei>8 zn_`KMD7ED1&m5xMX!wJ01x!fVX#@(iUf-cq63qlX!qk=X#!`{O~ z%`>L-2C(E`+IG=19MYhhUJ!E7^4Edt`xFoBF1a15L6WHqkW&;FZL*Fv^6MmF@Tzr+ zH8CoEi|EjjVQF8oX9lUk())JHoep^rmg|Nhc2`@s7F1FPG;Kus#As402a z!+_>5D@z1;8;~RwPUByd(KUa&7^urg%a%<^NAmgwL)ZSQ1V7cYT4Uqke-7kUlK!T2 z+(wPm?pL!XPc}>2Ghf%w=Hb)HA;-2TJMrQWLYgIJAACk7`WSaP|8kyPDY5qyGv^dgyrUO3z-g=~f)wSF2*xkEaSyOtQv7>mKp+F=){ zy7X;jcU@n~ZJ;vI3^A4AEJzPxPKjOXk)%NVjFE`G;`9%Zy;C1++az+-*~izTOJW?b zEE_AiBf|>~!#Nh;^a7Can%;1N`i{E@)y!q>BQbs3s`(kQl zaZ0|8Bc=?dzS(XPv{?Fl!@a?B%$so)4lh2VAiLl>ZJ|78B8jm6vg4x%@2~Od{R_(r zj=+2=-#9>Dv+2vtz*Epit=F}C|5Uct@3b}Do8sq9`c5$qa}j(lwanxcaaUn3;MX>f z=jm#{2$|oT{=i;u7pSP#wW%;|0J(_=oc3 zE6@BGi)zmum=JVYP#_PqP!MJf)(7=0xCY)Qb@eVUDL$stkVKDi79Jq+4F@ z0vg76tKa#mRnsz$JW5?;<;?!ijp?axiimyl9PZz3=n0XXkT(&*>L0jZK}=xRz1lu* zdqBESXR`ZS&5Q(=K%ldWkq;tkc;gMkHte@wlsnLJ-8%hf7TyRO*6kmAE5;fSl)BDA z_PN>-?9pHPQSDP5Yppn}Lme88O6}yqMTB#)N!F^0kQViAFQ#5;x6|&=H$$hVEWQW{ zK0VTHr>J|46Nod<*kb_38XFAzr|Sh>{nXky$78uujFAv~CNivV>n50&PT-*>CaoKL zhwl&;H>=w@j49AQW?(<C!MS&_SG-Z!NLiNSWLYR6oXP%_qFoU3wGbOK`6x-AvBO znh0%GfL?DMVd3wKk0y{qPEe&E%zY9}e2)*iIk(p@vp-pg_2N9Bm$IO@1AbJ`yM6q7 z?x`U+`hRX9=r|CviUtH9^+dg zt+SP{l#`E-*H}}_M?Dj__m8l2SLRMIqYzJ$H-TJXynEm2y#x?T?~x)m@owIoCvYXf zSM&>iCG2m5bfNhKgpBpaF5NDAKfscHn3rMOkGFqp@Os7U=O*X$d9mD?igpXvLUYs9 zs+p6?b?*7(>Bi+c??=;|`$)3XL{SwgKleWT5RR!g!?Fh4@BVX4DVd*pZ;^fe#1VkI z#QqfkKME)jROQCxBu4)VL=)Ze0l`x_Tq+p0tmGEqStcXCmA!+ke>Qu9+VM(3vkcKw zgE*(#1%EGKj&vW=d-&~@(|;LAz%V-hnf75r3w<$s*_)pQx=eu1h3@=K`9OX0DRpEr z)qbnIG1DDz*?5LXYULb_S$o{}NhFrEiGI(;AWw79i0;<^=E#+s;w96ZT3T0rsyFz8 z`Q#{hlvw5*C+GPNuw3^`h!M^9ajH1+? zfx3B9*_Fv_&5C@`DpkBGC%2_uZa~*#Fcq*=w=ivw&1mXXot3>Qz1Te4wimIzl%=M zqp)XYcLr!hFf{=lv7R}G_3)Q)!jwdDo$MlRBeXV3bxI_X5xl?-(TQ*Lg=4Kmd#?oj z!ICcfe22{DvLp5A%A6%0KkUQ(^onisKo7kCn(}KMTNgdSE&rhvxl96RoMIhZ(2oc> z;@$h+L00T{_ba6ID0~n5zCo)0)^Yso^1kh42%j?$E`|U#f`UR0qqMY?6@0e)@LwXVUXBs2mc5KslIAIkYDS2Vl~9aSLk{J(f^Ol|qPnJ(uEyVxzeJ26 zxBuYse(CAj>PkhD`8m&gn`-ZL_s?qWe95}4kiWZndC-3ErbKsk((A%1b zi#xt=-k?@H=F=N^dRV3ptDgT=6Zep(gYn^Q$&v1!I&TkYTy@y(1nc{3K$uMaL)N~u z8^OO;i6bNqu5N@W7&#@&M|`~_WQmA7HXd!~a}47gV2XclS9^I`*E53l@P^Z*3+!KA z`{q{>3;x;Y$5?YMk@+jmX~hz8Nu1rgrd66C>J{bU%i?U+6#pLU2E%RH22Y1PkD(--M++&oGDupy82RArSz`7l20S^V@@f` zw4-&y$(CHq$~lgZ2|L-#gnJ{az(&UOFrKd8p=x4A&b*|L5_frO!rt9?Ag=5&C#sxL zdBI|ZVSNuA?Mi*Po;@c@C5&Akww^Gm{;WGFnDE$x`|3~N)m9QvIUw>?wXA&|D%$$Y zhS}Eg3<=sC60H-sM|=EyG~VkL{As@2`$PnMo&#b~wPzG8`7O?ImXj(9e@~Xo&sGpR ztKHgGuc&o68fn*XDKy{|9VbB zRS`J);mcF3S?UV;{neg$>g2TDxB<}_=*0Fs$XWWo=sL@wx}M-oCuneY5AJet4esvl z7nk5pfZ*<2oZ!JBxVv54-QC?``R#wJ_RDUaFH@&#`gC_qRiB!fe%}6?dd;Xa>SChv z>mSa$#Y3fuLn2>+d|gLW&=ad)yO)Nt~l*lz=r`<%E`h zsmO=Lt2yIDmOQ0=FnS7y2~C*=3opA%k#};*YI{;X?vUaa*xmc~XCyCiuQARW8T54$ zb=PFbgo@+%uqT_oCK4QKT|`Nps?)U8skU*$NyB9l7d10RH66X21sZ6pf^7Op4uAM5 z7L8ZN-5Jg=_^Br(-s-e{0iMy-%z$#?v>2<)Ui>?-!tVTK_z89oj<$vN`tJ9>A`zza4hSc@(TAj zQ>j;~HoJZf>8m*-GI;Opsv)t3b}EV5l#F2|KS8Fr2N~09*D*_>oGUmA$-+#AOKpF7 zSpCM;GCHd{Et>SG#yR^xcuL`Bg`T6Yi_&GU529bp{p6V16=F<%@AnR_O_m3A9o$&w z-;^u4mJIOCh!3m))>pM-4yq>2|T$LQP*;7^a8T?{1x9NVVqL@<1>+Gg5=rOJ_5ko{__XRtD(&0 zjCSI_YSDRzPuBx7j16C7La8X5G}9M*RR-fT1H4W~2QvxoDiC$d+^T2CZ~VB}q!tiE ztd{&!(~7DMj$^m|S5||4br;4fb1IKaw6`64C0>LU$L|#3T+Uu0yWV?gtGlvhpwCyV z?+oL--a7Av{**4x5L`Y$ez0we{}XJmTV!I~;#}-cUzL0HR|_dpOv>9@Vx!jT_V2*{ zTj~!<hya233G{0fD#0ytkr5A#7ddv$2A5vX^>E$PWjbq(<#a`bca+ zw$0zKn}gr~^5&TAT^W;Inn4$E1;MytB~J5E=y3Va+5$mw!pm1*J?HK!z?37{Qb-t+8t}M zGf$D%QH1gVq|WoZ|ME)HFrJ^NB-DZ;G%hXj#v?5hrsyAH(VY5D^g{LXwX$UVa4qFD zVQmobfKb<$yy0@D;g&CSgQbOf2SBju&008xJ^#MHYF|6iU7?)gLF|m+vt|_>Q{r%6 zYH5FxlQDB2?d!{=EC|mjd9&0!_rbV`ueGzxzqP-H{gkC2-A-%0ai?%gV%KT6hD*}X z_Y$x5oRPZ4Kh$NhWxY)FJByzr`VFHEeuq{ue4g?J=JY5Ap_Z>C&iO6Y*1jAZ6=geV zWLg<_GIH%S$7bTk!DE%=UyO+0C-VAC`_ry533^mauOD13y%c4JGZOq#y%b}@KU6&ueONv8 ziUt~XJ#UepsLB(r`i`^MLKypFe&rCC*!}6QAPQkxpwAf+&JH;V-S+9Oi z;VNIAf6X3zTu`^ov;ASp_ylK#PIbytna`Ni9MzuW2l z!nG+Z_A24r3v|*^$di;URavzI801eyO=w+-!cZ`tFM-(yE7J#Na(Z)?3y#m;*L_7}YxO|G>m zt^JO3xi!H~b0eM&wS#Z8R<4Rg_=z($nUt?Qbll407YG9GGK&(cOuuFx+NIplMai6H z6q^8qQ#fRJsRQr6iLnjmu?_#?=k`r5u)GNxwLPS%F(rSfYhp&!`jF->p$V1j7vBOM~SDQ<*9U2qC;0s z#aU6N!>Sid5TOTx0>RjyhvuQ_Xn-@seUD^{0L-24>&1IKz%k7^)pBN^kbM+Ww2gXI zJU{+&_o(b~KeoR8S!4&rBFEj=4bXx9V+z{*-&65$teSWG7E$bW3;Ih(l)z!~5YDa2 zMgrM>Osdz4S<9SvYx(_3p8!dLSNKQWcYkWrsEK|Q?%3^o5vQK~T|4<{%OxAnY3t6b zl*)hJXfL+tjkvxVw#z6x-W#FG8V(N)=9cg3w;krTt+=vzSKS?tenLOEnljAeT5|vf z5)7~ptUs7PDXGNdN3kZ(IQOcJDV#gG^Og~4=a4yTcJB3=9~ye zi{9_Uij1Lk{9IS>h$npU2X~h&xsq8p#z+%$i|#e_r9qr-GPLwJp6)zu$g3z>;-vieyf4n}Jrt0%f?uIf8yg>^fblr4@e zT&Evo)%RW4AAD@#4xG%IDDMK2yj`7Gy_b1LNYV`>uT%E3k~jvH?EVE_(~o|4&PJElAy=0!A7*({tt7ZA=Xgz+L=(7RP~%3$FmNs(eSeGPL@5R#sHIc0gq<+FbNyOeHktD6&+Fr}pWo-B@E&bYnb)Jt{P64SFPP1Ly zk7O;$hE3>xlig#Smk8qy^&C_mK7yojP9>8&x=P;ti^(ye|vn#0){43=ARC*^g z@w+U_U)$Pu7X5e=N3|1h(^V{V!f?WdY8C- zA+~%~?qztvSW~2TL2AQRDo`Qzx?#s547M-Bh_X|}pjyu2HuN2Trnul3muBS+c$Meq z?9^q7c4oRS?;No455D3s)p0^AyBd3sJ1OP(=|g#dn={QzeMwkKnH_!I$+(2ys8vjK zS^T>qRw;+5|Ih`;jIBoPrGaOW)VAmthA4E5poQYPojVrb8PX~$@vQ#Y&+XAHLU-iO zE%!yw;bv)wi?eFld0&XpSADdk-pd&NUep%*UVqHHMsmwEyH#xB!*6ci@zaUC=)iGH z`&;*GKiKB!;%R_~$_>$YpX4;x9T6yZ64>0M(~3!P?`(TpWF# zQYXU^rwv|m`{&hr=ADem06rj8Fk#0W$<&2WH{T|sVC>^yugZV>p6w0#2<C5}WlZ9YXcybt(Jfx6?lwo?M+BN3mbMvLEc0@K-<)Esa9fPWtO&^ZH)V`|c^@ zetWt^q6yA+1Qq7IRaG%sbR}n{NUNtR90&C<>fhs)EjxsdZTQV+!`M`Cm>^BJ5cBS# zlm;0K+(VvJAv{0f14kC4)Z6b7fdFG(JmC& zQPiOf6z8{B_9=qzT1Vomt;v~EcS!>$F?i$@D;pG9f&G18=&hyOw#&2+TU_h%g;$O@ zgkj|CLe*!)cfWMZjE*7Jw=%UIw8r!T9ao~~Dmrd4WcDOn|NJP|37JA6G5B`A9&#!n zPwf_r8yJu1!-k^jrQMd;;oR9U$DHutI%p!p zY`=6xGFwT+`jkC{=a-+fSN7%gZ{^V&6YTc|<-a0xEzG8J`)kt<@Jjbo_S(deo`YqD6&%9}6oU5E{Fp*zjkk25s36Z)!X0ESaJ9d7w zymkqRw%W1fyq%pfZxh-kcKK_a-}p;ei-1tM9uh;B@{NT>)x$YdU&Ls^E z>0KYuuQpOayEyJ_`BOV!vt4FNF{w{O-V=f+PD%qH9)z->Z z9L^QRxGJQ(rV?lD#2^l$5m~-z?XVMKT|jaTXi-xhl-$?nWTN9qpbPStzsu{;rDz|r zb5eCKNb|!#tkV1}#;CLRI59TuB%e27X0@5`WCj%Q@}O3hLeK2p@@_~*MuoUXwxf0? zUd~_E^&uS2(Gy62?{W)^kj6Pq(!uXDMStqrl#+7KvPwbdP@of7XR%sIkmFg&iqh4~ z)JyB~y~1O(Vb~OY_CC)G8eWSFf|`2Q^8uF^;c+QsC6tIH2^hTA@lxU%h(T4UgAw!aWtyLo4Go z^mXyt=*})1SJkgm7^kZqO56jPOvu*_WR7hP(vE z%i7sc*tAbtkSdWvW}Xq&>%KI7X!stV^#JM5qS=O9K1=FNw`*>XcXjB z{V8)pDKMI(^x!u9^7y}-c+Ei%1%$15O(@cRR^%2d%qQVOvZXWQO~s!6UqwOM$zot%)<*qgEq5H$9W~ICPIwPf%Mwm00+x5y{d*tr3Zt;4TT3D&?vEY znqhIbAXW8-;nC-%cZ|m&yZi0PAp7`J)787aiBGWRF7x+x{Jd!f*x+3B-IuqMFxvLV zEs;hQY#5a7D#JX1@6dUCg`^J?Dx39_>$YZFlU{HKF=)ku1%U#y!%+l+W@a9aBFrE`lQ6_uOeCt8+*)hoa>D@nsoGqbL5q3)8{$0l?&@Kj-5xBLR< zNwGb|-X>~ePSN?{!YMyQwa;6F;^t0(urm_hOMjrpqNR zd1#$pHoWwH8_YA_e)|r%K1;sMi0MRsv`M$yPjE|ukEUWCZT`BsA$7cJ6|kFIRpXvf z^Fx4UhQp&1QSR+WMWS<^*bue-2#6;B7b91&+vEl{7qo6O!G+=YoxyFh70H5y58emd zgGbUQXLizpQ0gY+B6YP3!sp{_Gnsn=145e=@mk)Xg`mrOz&p}yGO5TpTMzdchX1de zfeDA5EN=p#CK0;QMC*FP;|;j;IP~T0x&$9`C|-}oJFlHr+x5UKESCr#@!0xsapnSE9>}2H5m9t>&3j6?aLa&xtL^;{6Y7*Z*59T)$kfp4wOIE zn#^@YJeYN$4%rQTxbnrpPz3y9e#$ z;K*vTu+?}_EnAgTswsC~cysvlEY~#plL)~HzvdxXcIj3#Qx2bxVPxtob=OSn5B(l1occrwK^&M%xCXT#AtK<`vdx76Z6wbxH`q#Tn+EF#_I2ZK*dpRd~f z)r&ifj&@xH_lk{4Q_WcMP58&0rg)pbc&hdIsCCW6$ctcTXVBHvuGGYJ%JnI*vRDAg zCy|qtt`1eK_VE#ITb=nZuRVYjVN+;y-xcRVg?d-bvP^E<@Ha!H5l_`V`coEEe@Ym| zZ_xS5IN$cPrXLJeqQ(=m|FE8R;d(uaOsUwM;hg7u_}`n-A6B=}u1ppCVm1ll$MV{P zjVL8EZ19BPq~Vi)zn=XAbd3?J7f*AoqAIq1$>H0$oIQ^VY(gS|n@r2uzrCrmHG zOemaRZL2q z&Ku{LXaoIa1%Qu$%hF2{a^|3qu#SC5zYkc)ijA|;oB~5c|DJ;lNdpM~%#Qtyo0kVw z%0o|GU%?Vy74s>nTEsUOB_zxW{eN!8E&9u2(i5@wS>;Dg(d(no@*hs zVmOM)G?Uy$@Lo%`UMhD9@8F;da1gAT6?J4LM{UYmBU698`M}G~5+Kp#l3VQ!>$Y$$ zI+?%O6fXp^1_$G+=u5<>QC)Ust!nLtN!?1{&W%>Z^M}*q`1f*JwhI15>+I<8T+FwL z8&9p+HKTt7(>xgUE}~x6Rw;nvY_n|Zc-R2>U8_8N+j#L@WbVI|9CdWhe{{&~$fS40 zThHu2nThbpzL}`)DFeFelAmQF}1Vo^h6<$BYi$tCG+e7uDNRqFoIK26H`0PmPj;`8KLa4 zRs3-6xw^U8*^(3a2du|UZ)ki`KZ=8>a-&WuHeYjhTC5E_k)fjA1MvWrvWLz0lHnuQ z`B?LL@HW*w%i6}2DYFzi;q+wC(9kQ-_#p%a_8t}8R`!e2lWVz^eq_$_VC8Y#e^B+@3^OCE{;f43I{cG~ps;Kadt72)%LfDO=P7@F%~e2aHAqJ&%jzcPNa) zMkzG@TYpDs-zErASzxl2W1^1X2>P0<<^Am~4lm0NiQtLsP@3G~b`S;M6O&g^62!yn zR(@xNIr|GZiLB=-UqNs8Y+7bEP3$LzPOwB-eW&qN)W3VozyZBnf7Kn;-G4eC>XR( zq@>E$H?#bqdO{?siK_#miSi^FXzT26doWp_VZG=`Yh*7vkl)eqaLdcXV6P|U`nNu* z9S)~_VOXxIZ;Ppp+2Ia!2R6*q$_m#GtDLjd1tl*P70NRTVcZwj^#j8gF^?4}kL*)* zSkf5JnZo-f(M7+rE=r(B=VJDAh77RqMUFMF=XD1cl3F~%<94-*#-+}ZiNb6bHO z$pgpnnUU5aCL^q3!|8S?27*4qYJ`t zON*Jd3S_fy+>`$@F-><+6V;OC(wCAYJx{g-SA#vQF!i;7y9vTOYujd%NldwVZwEEF zwS1M#-%|6iZ|Y*vCWpN7z}T;S@(s>?d1m)TyG4()nV8AcJj93EkjyZ2q-lW)VXO8_ zOxYG&P$z}BmKj15Vm4W7kLWJK(v`x2R1}5D+toZLn-uBoqmC>tWdL`zko+Xl^1~E5`mB!>ut>N8)zc zh)kHQGnxLQhSN<-SAZ&CzTai&X}anw{nF2+n8_w@tA&7Ph6q&wE5MTYSKl{9H|Aw3 zogB@-!0ly(k?5I?uD)PyaI8vj>DBe;iElo&Riia({Vlytp8Ly`uwOvXtBOv_09VW-$i5M4Q%H0qRrYp0RMn&w!Q zmadMiD~P~dHmkv`c;u7KMU)0Wqh#SdIsrJPktHu#v1=VW$Fx0v^2u(#-WmBQ6hU71vQ;ImDPE)Snksv$urnU}f||?7 zu=#0>X+EDerqZhIhGsW9xkh)56!d(?6-UR`**M-(!@55M%Yn${2j$-)b;iL8eAHv> zFpjR@KBWb9<;%+JsK|C{Da%KG1YS37%W zQVvdbK|y8-D_a+HCuRv-V;A%PvB4~5Ze?NVLdwd<^?!(Uq};4roXiTwcIM1l%&M*? zE}o9&%+hwo7Us-q{|&ViO{~pLU6?hk%v>!0$F8%Blew`S61-ISsivogyaj&e164eh z^qE-VpTN>Itw4BnHg#UNJfwm9B;}ibrt;C$f8?>$b(NEJY-B^xJiitG%Pu)&ar>?} zifWS*LS-i4d?B#$lI6g6u$t&SWpVtV=(N7^(mu-5`Qm$F!6ty_QoZhbF)Zd6^P&2C zPbT5t^oe%r6=5gsY*~SDM;z@^4fA1X@=dGc+hQz^gOtuof1hACqH5hmRPadxCqp>F z<29fZakEZ##7jTS}1Rk>sip6qnE59M6QeE8lsbo!ythlqp#IDe%;WAU3zSeraTt7tHhR*U3qLXSKHqy)1Ms-T>!N+Qq^BqQRObaLR7a7H_kx zhBRd^*oBalNJeY_y{;ui>@~uMn`op){w9q#xMw<`5_n9#zHg8W>AoLIplE?Qmy~m1 z#1)F1o=$m8caW%KO)o<1w4P`-kRy;rVFk((B& z1%4xBSx;nrl^?EOs0a{vPp_Dt4GO2z?K{Y{!Q(9$yjC`FwrN)ArOx`heT5ov$4hhg z;FmN-k)F;PyW_7zv9DPT;A0SWJLG;V-=#BmXsFCRC#z_P367Y5JoxHw^GZKw7Cb$3egpU8md0BXqD6{fd84JFr(XX;kv6ycu(0&5X_)l0{AyiTiZdXn zX&-?qhis27R9=uV;oIbxZ|k8m+`n{HTn-xsiF1@hk-!mAQqg^_<%z z#SyLXJJp;3v<7B(qZ<3qMPV+rL^)yEpzvAt9bY{-orY~nH_%2LyOjyFw=?N5+?Z{G zFR~xa$Joz_36Hwz#dvIXb?=~_w@7^p@xB+mzVvsu2 zsTD9AoxLvFagRPg!Wr!w&E$fd`oFn>(0mb?ra06c#=@Ej0d6;3L65=?L}=X?NBb$| zK8lw74tUerbh851+Mov*GQKfKDy*@#zjCVHWi5GR*cVdI>7F=GVjzd1k5d;>lTqze zt-!DgRrr5%i9jRxh`ssDA98I3$7S4ts)=CuOO`>nqD_h&P5v4n_=tPI53w=lS*$+PN{v8)X!8k$YE`h zRMD3UB9Cqd{B;}9=csz!`G!dO^G7+zk9!|32vCnyQFQhXo2TPyE~%7Jj99pC>l-cr zKj;k{J*m;yZ{`K*8H>{gAE(JB9!mr);z5q@DcgubLTmbfie6J%5@cKqY9aOP)c*}G z%iRoM+nIu7N*nHK8|^FSv|ht|sSu`Xc)tl!5}p>0G1t%geOMo}Rr*-aB!)H1N0ks& z&wDg;&pBq`d~G2mTn-{30}7J|T|vD2fhvzrOJt%V4fQHZc<%pPv(^r#$r)ItaMMcR zepf{}{m>1`A}3F=-NszOP3)cJwTzA3n_rwaTlekQMC8NBbj-4lDgDLRfUSJmVaaqL z4jWG;Oq^0ePk!o1R1h??3H@YW*1mmKe8y2hwD%mYo-|=CG1+OC z-5AB|{XZ_7X@pQTXt{f5HG;|5XHFA_w%qu53(N6JL(Z^>DOMW}JAT44498d#th^IR zJ6KJ7w{ek`50Cd-kj;XvzFFI5lzNHn5y|K#{j@JkN680q4Dm0%E5Q*dxIfnLLOr=g zFrbDMeu@jCvv4Un^rE0dT>sdO0DiyjBkt^wC=^RSGP`~bxK00Lv*yryTdbJ6HA%ue ziW~~T%O~1oAxsDtfLh{e7bk!3W))q-+iAtNXU;|mEwjVZ^AT&36=&lfPAY0Icfy>?WEyBJQawOh`NDPN~%Is3lR5)Gd z<@ZXcjV2`Tq@D%`3Qe^mI_=j>3TR+6)FORVck5P_$X!k!z*#~_Mhj!Vfuoq?zV&Pi zr)N$l*s9iAW*Q_nLF4FrfU48R9SOOJ7xjOdf;_soLMS)=_LM;4JFgP6=!22XPco;J z*$I=spU3yD%`ILdEyaY#UrB;r)(0x!y#Gf&5p&=fWDnZs9>w=_`;lWFS*{#U^)i{? zO2;hA`wncLf8tpW%sy=oB^e^MDL-@i@&VeHjHM1^) z5M?JJ>`TZw65s!rkOYYX)L6IamANW3(gPQGrmgh=WYv&*RwcM)M3DNZ4+sntd@>6S zKznce5+8{_j??e(5-WoZ+e`|utl#2+F(O}AV|5^Vji&Be3YxzPQVmTMl!2_m2A!28 z&A3Or(9@->M9?2g^okZQwMqWYMNkhh#{R=!0H+QaJW5V4lahc!={Z#Z2N^bV16}0e zCXQv%W2@wbbOctUQLJI?kTVh;@jrw_rD_Yl`{KF|`y9IDVvP9#%q9(ylX7!Q0qxRC!3?uSdzG?BrtF<+dxpvnBgzM2` zlvBRw!oHIjdN>|2=7YDip6go!tgNYd{u<=&O;Wvz)`|E<&|)|vRC&zf2L`#8|D(8E z7j`+QVmWxqGLt+dO07~T>^YVg>`QAwHW|fLpir#O!2#JLwXJF^GRxRskdN1N3XFdU z1r0UD-}k34fhCR*QYH=n~@n zuIBW;``i*M>`C$9ruc)-o2NeoPGtf0-E3Kk0Sj||R77K^5~mQ;xG_=Cvu9FMh^ft3 zELs36+(_Aa#aH_3T4ZDPzaU&QMigWdmanX3)y$UrmGRQMb{xY}y|*dpT+3_aV~A$t zxg3xifAs6wG2l|(eInMo#7z<#fX7|McCw%evJ;vSe26@lTI27(l-Yxr#oqt4;Vx}r zOW{Ua10#;9p=}2{a`C#EDq<9@f1bT)Zd94Dr~IjU-<*)Rt|_A(>#A>vbDNu%BdPv( zp!yHGl9|)W1~~n($oz1aUdbPGu}k$0E*=#vT9ks94NEveilAx*UZ3I2nne@|rk4hg zuYpl0BWjaoK3Qa5;uTd|#7Z<*SX5%6rkvyz<<&=D=t(NJ{xB|hki8*za5~t0KvAS! zr_te0aq#Nb`L<$l@z(79(Qw>mb~~;<_JX7Vr-GC_9i4@r9Y? z7MDwJYM|F!bCyo+Ms!9mbtF1tVt}JGrly$^1v-%GMNzR}MQ(PVrR`)m6%&eiS^o9@1^R{{YM>OigNU=Xy`|$dL9bV-z`?B^VAK^t2r@cqdWbRtP=u*zE&1A|K}d9up}$`kb*Tj5rPdBI23Pm8n++otv=w)L@kav@Pylye zdkoc4(`Pmy7vxiwxF(6i6fgx3U=Fluv^1-o|1s;*KF0+3P^wTD|87TK!wI_Ds1Rcw z43?eb>;*STknc`{Mh2(sd^u<8h9O7Q_f-ihVDOb!X@NK14<;z z=2W8fDL+qq@=sZB;6Y)k=zdvh!t0HX$0JbcY+C6dt*eAnMxe-1@CNCEMc`)^qRZ4r z2|2l=_4zP>I$c>{x%_$$INOvoZKMW1ggVAX*|6l`Pm2 zHgsAgZuNcEhzh1IN!=8Us#@3r&90PDc+e!>e+J+KRX zd`^e`-X0_-T$->nmd<#a5R8feGQg7W>Brgy*DH%w)zQJ&SA;l=FLEmtBchKvCy-c1 z%H(t3g<-Kl!V}gv=gUTxv)18m7_LZ#GfNg!>0o08+%+oueuK3Pap3lFx6G(B*GpZO zHv&nWU9HVbwb;*;*<$I3=*3v2Q%FKT$d3DFDH7oYa}v4hDH_JIj;;3fD~hmM{=IY zXMdPG8xC05T~$WB2Za}E{+4@S!PUVp9&wExNV8WZ)_gIo=EPe|{8=})Tn3TS+y~C3 z{G&K)W+brzr~s(RV`>ci9s=){Ogs=E2;usnC0iTQ3VV-&Ne8_eaqR9*`6|BxXtvXv zP+q`~AEZ*rF$SULvrF|rFOZWnO?b$2ig7j>(|(Y{1g3tS{CI#0fb2;I z`6-vQx49xNll-d2gEhzx)cd#76eq*9upaqLPNZcKgeGIuKn2ZEBL@cjg>Kh%P`NSgLI>sQn2Dj4N0T(+49-}CloCrf zs#~|OgrLKpE64!f>NEW_j*4jj3MAXfp!w_aZ2Q<8KV4(6S`h6sAoz*6s{}lN_rVxLBQ`37iaZ?Os-IV7LB@qt%<&abaJ^c7onsXbe zD}eb?`EZO_yt0)BN2gV3xHaz1CPrh#Sjm7FBg?mLMQsx}tfr-QGcJ&+U?K8=yruEy zjgNvmE1VUn9R@}q`|xxnnbF-(qCVo{%tdfbpy$AURq>?qEpwc@RgAYSbo%<~TN826 z#-F?5mQS80Cqn})!^F>97(ejtm%Lwda)Q5c5aNCw@b}~`oE&I|G$f5)F_t{pUq6%G z7paz21l+;B6UptM$LE|5zXpE8dw6l>+4P#zD1C0BC%8cNyZFltd#NDU6rt^aR~{FO zzzIcq%g~AMiX$s?>>m-wgQM4ITB%u)q-3HshVe-Cn~Ii3&puq~)ptC?qIa!oh6oKa zAM?Wo!ogTB3#rkdUb7F$TEKzI=%lOFqsjv!@3L%_Lui|pkLWfzyyRaN`etLuNyVY2 z`%Z;s1(rvG_7v=d=?k;a+e6|vj%S^&K83=c1ZZrP%5fhkbA%7OE%au@7awZU^hj@9oVc^^ z9vj^GKndAO8*ff>4>kPX9xgbD$wjHIB8Z<8`s6tcame>Z6JA_VeWOerRUC<#+y2$< z&Dn$ut5>y5S1Je9PuRcF{QIIEJw(a2(p!>7Fnc;JkP>C1?a%dGDhj@m5ti7(Rqly8 zJzSN5czpJ+M;m^JpM)ZLI9I)eT7-!*0qV;bc||(=LB=rE$5nD42XvUEs;pnCoJFV! z(SAnVX`qM?eRQ6tdMl}m<92n9LJR+Z3TH=E?w&N8R_SF?rK-46_D|bS%QxNP6CcIL zwIBp#O3U|yGgSZ_@|g^V#+Gb!rP6_{f=a!U3|Lrl&^w;Z#SRm`S%bs}T>{lOD;p%K zbsK)(_or(l2j}jKz=?0*aOU`Xox!gjBuP*a!@ij&^2TjuF&W@FM<6fVO}&wRbm-hK z{lDv;+)i0<%L!4@-%7O*SgR#cn6YeVSD>9&E%dPDL5kHDXw8qbxO>v7xAuMOYMRa! zC_i##%ZaFdEk&TEEOAq8V;a0!0$cQA&?r__=$*e9GMkofn=3QW^z%kg&NxQ03ut}U z=n(3f*{36)smtf4!U{*IN&WRIlb`-rCWJGpfW~0r} z-rcufi>=m3;x*i{@OFN2pXc|u{7(kXoHkSeYUS75zmPStM3RttGQT!L=hc#6tEJM6 zeCuhZ893R+4f9NPaj?Po`g&6kuWmr2QFOMAAdkEX7D*O>X4-DW_(%B-_*e2YmRnfiYkb!^6 zFUB8dGWl^`vTf!YqxtVDEv7hA{x!cwJKGdIqd#7q4x2pC==0+}sl%3KAsEj61cjEg z&LcTT5Ih4IUTL$MW9Ub-5}vYNxRsvKQ^^@oUT6@?vH3flAYOxubT+ z*}4ad(@ynCw6QgmefmXr8vOuW++sMq6hdTF7mZ#x*|anl@iGDgy2BX)A(2?6D1t#p z{mi2Nq|eKbHUDrh)~C70!Mz>KP{xVOzb=647a|R1+w7F#IwRkX?xU1vA;%<6r73Yb zQS0|-N4?$CaGAnq`q~N#!F~=5mB9O+Bm>R4cFC(dw$<+j?`s6k2C3o66S75;cr#os z=HsTqScYU;L(<%@1+@=s*{)vdiv(CzfqLa9XyuyyRw{B<{~$++7$SPA;>+#?zxb`} zw(tG?LZp|VrE)2_IhG=tOV9BCZ|vqI83Y5)#831_&P6!2@j0S* z$DB$L_@^F7Rq=>1*4b1+fBaF8bV?p*L8|upY3cxgWG*E?!UGy%^jFFjxvpP#Cm5qS7`|p%5rGDyG*ZlH}NKxdHM= zAw=g<7A!?7d2+_OzkXXwo@n8sjUJ!67Mr0@?I6-FFnm3(S;a#k>kuoF(`NrME3f$y zOPqESB3k|;u$C2b34J25_`lucQ14PR~=ZZyxc-yv|=AV8$ zvlQ}hZj#$pDA|qbIQTrBV*M_J0T&)L9&v}ns196jP$_;dl}IurNs&vW`51k<(nGxR zjY^ZA!1Evp8CMy&22@M3ZgTp)K?i(cR#VMH8+T*1{w^?X+dTF9KkSU`0;)Ir&QuTZN@kj&X=siz0>MnS~bi1X2!F?-`4 z-xc-q=$tu+s_|TSAS0#z`H52Nj(#M^dM9+Q;>A+1hyIb%{`V6@DXUrMl(ZN7j)zLY z_Ra2O@*M$&qcNSA}{?Z%1j>VMdzb3J>{+;w!e)x*# z>#DNyKUdlRd8o27!{57pMf4S+vNGe}lfOd7-xH?4C;!C$^HxdGRIwfaE7bE9?#r@aHP&P1hqEq^p zPa*$hR`Bw|nb;cJ8Ct^qz2D#QYq@_TYe<{en*Eh77+6{V`;LMWYU}aqtjIpgYC8&d z$@DEK(k4oWTDDqSjYcZZ2AL2h)Z=Tn<~Tn)Y9G&@){W{z>R zH~6w2s@c@YZZDcK9_30V7c(xX96f5gJj8rE-LH3!Kw1ytv8YHGLX|41@rx0J#?wJyzyFpYy0rHaqo10;IM!-#FELoAqfpr z2pLi|07ui^)Q{+5l}NtA0$Q*2Zhx<_W9H48f!)UMe(p;*f>&&6P^@{}=>>W0d)@(A z-pS96-`KxFVTZujzH+;Y(c*TL!~3{{#OVV9()$%0C^sLs5C2IT=%Q>f2OX->6)JhH z_Qv!U9Kl4XBIfIVrJBGOP9jH8kRxFbaLfyq^E{sje5JH<$m7ogWn(X=o{+4(UO}#= z&>erGrs*(-c79SYR_^%ptE#(fFXPNBiS6#$U~<)9ovVNCPrs{K*x~t9OJ)v!YSbU1 zaXEF>tnP}gc7i`paqEAG*4v5Pj>XW=&qo5cziAZy1d5E9Ap~(HXZ==(?{SsR8u=Q4 z_ANa!ycl>^`57pbZWg%=={xQZUORUE!`bD5(ikFG`GW&1sI5sye>1a`iLP2_}DVZbQywD%qkbwVsjD4 z0b|S`bOCE?9M{rH1elAy`)?@hQPB#vq+x=0TkqPLgxJ^Ipq_2oTf^vrOj|GeHA0I3 zR8N$F0S0H*aA;%oI`1Gl2kTFJD^#1GBN8@45?+JPIBK^zC+{ag33yG>gU6 zuQHnWe&OV%x7)_vat(jJXDao14CIYo9d^&`98ddwG5kl#=@r>I`%^o6g?moH(^U zPxlKgtIzDKo-ku3rnJWCFl^bJQzZ`|Yc3Z24tH8?FEx+$piS?}F;N2K;QXNEQ&GQh z9G}jW7|LMTw#i}`izp8Yp}EDLZF-jzL}kSz$Vq<)F@$O+^tbNlHXf>;RbCQdz6;!n zy20C+CZpF+V3?8%4>yh0%>^#VFoYm3{F<=FoRaLWxU6$wDv%l4QZgG0tUq1fP*8QLX9WsMO!nEsJ7A>@ zN1d~YbL+chBRuJ9c+8snjuzi9)hOmr?66p=Nsk}teBOV&!Ev_kWTmx zAbW2R#kd@Q!u|Tm?OfL_vvc)7g5Tl^6qTEL%xz5>iXhf!dKX&KqM_z}6^0{?DhAwt zB#AD_l(@MAkF)aG=r;s50GOU@D1yKqvVB)}oQxX{8EwWODPKc&ZK1NxC$V~jRMjpk zLy}lV0CB2A5jYiJhNM<29h;1D8AfeHwt5zlV6V~EU>!rl_iu#erf`SK6@I{UKnC&Q{G@4<8Y{#?t#kqI zIK#P~y-C1i0D0K&?7LX7NfToaglb)$p@>p5VMMd6@b9NsibGQ-h<<4WTiaDSJ0Z>e3PMHzD3<_BK2-VTD(Nb-%K?It|hJsWmirst*n zx*vN^E+Qc-A}P_iV!%l?K0?M=pJa=Kb(Jle_>*fX1aTPNytzk;znxKAB!#UyEC`%U zZ*=-PCZc0KQ+8ec$Uss+*@6Xz#T3B8Dfsh2O{KsI-I9N_J=);#5i3ZKj%`V`4c0x_1!sezLD^JT_27t}vmu)sPkm%Zr- zK+_K{!+3>4G5nPZ0pVe@{2b&XQH?`_#by8&+o?nhtWW!axMxEItkcVaC}=MeOy2=S zGL1|qyetga&n3IchA4P_0Y&&C`b7NTYtqj=lu=9| zA9<@mtY2jsLVbrVV3hQGOtk!gyGRa&*9Zh)I9rb;Yy}A(t=c>mdn({(I(RWXa5Tm- z&43WhdQZ;{(0wR_61Z(0-XoBAyRvu*H;&NSYyIV!sJa#W*N`GeJP1aaz$c4_@Lc{drz?biF1B+fU|AXw%m zA_z1S!TTCHDOz(RgHISb8K{LIEr#ol|=-lNxIS8IJXy??&9;2@bBN(oiEv+b-i!ya>CE5jpWhl&MJ>xj|N;br(Mm zNJYFP#V3}&%_O9H`_iO}f{kl(UqltaYL=nrmm4*R)h!jpP{Qk|K<%9RGte~gk| z+GhkN#f@^qj z3fO)$=H+Y443nJwFahaVK%#Ga94ef%*UX$a8);H>uHp>mey-!i z9bE-95LpEj+i3-SaPSRKwL!GZmpAJ~%~F8m%E>Cj3HGKUGCEa z>SIGL3p0{$)l`Use$+Uy707gaw<&MvzV*FMkKKBFMhkUrW|aE~yYBoJ<(~lswypvH zg#X8+W@890XxA%8P^@zOoVr!}@-|jzP22I*IX?|=Eo!J>Eqz7O(t|UhnT{V>+YuvI zM@+&q0!M%VDE3pVN23-S7_Nt&9^wZ47478ZQzFRpMDKy^t>Ofu&`j+&BUb4!uPmCG z_nnX})*1EkU^|}%`u;eh?^ngr@}eh%xyI1>7%Tz5w{0EOA11u02Zx_e9=_VF=uuW? zXt@SsOOOE!ZkDa>DkyCS?M5a@w(CyTR>{ZpYn%RwY8kIQG)1Kg)zWHdE<=NS*=PW_WIBONEG%!XVz zLM`sh=;^py_t2a=yY0R6n5fh&{GfquKCA#83??KAXmgVj%5c5X6gO5%${k7HkX6*| zk+KiSgUT4m;BC!cDMof=g6vKnUS4M08MCH`i-n*vV_o5gTMnH~i%+d{In{F01r-U2 z;e3R!RNjR5(I8NiWB$xr);O%GxGDXrTZi=d(RyI&<5GVU#k9Yh7YfGBxy)$`FTkBU zIp$8VoL^7&4xy*;SwRQIeMtqC36n<5-F}OFG(RZ011%)2WYw|gQCE-leQJUMe-uXu zeJNT1N>#SNl9E~SkJa(98d%b@CKKf#hX6!U7taPR-VLwJlW-^2^`8diBgqT(VC!$Y zvS;c3{8i^gyq(GdZB+!SRdn0dPqdDUMigotazO-Yb_s{++8nK-dJV(X|}eDd@CbdP?XgD}i^kWR+dCmE)%^_}x*_Ud=PL7wc2v zg5U*X&ai9^9cu^Ul&f6Rf~3dJR~lyVjw>7#X_*P+Eu|9Uqim92hsIBdJ{;1^N0yX- zNQfvJrNf&Q2hRIYk*p4gVSRjjtxo0^u#9*J2pq+tgjP&{>IT?d z#Zp8F{vxJR-=!Zwr{oZG|ApMyt7V-JYG-J-p=DX{)C1L3&$KNrVPPcmaoQQDOFw`24O5!-s(hG_iJ8~D@QfiLE>HEHV~ix+5Eg6Z(C zt?ytkuq0Iaq)bYbfob25mWy-Uslsw^MCLOCR7!dR^?0*8SgZS~o5=?8-kMA9K8akT zi009%m|=aw#+neTo=bB`lS7**$k3bg`3UoHfX;Zmxls(RIaD!CeVRpKwPvYg+vS8{ zk5+x*b;r76IhsZ^s=3|MX)%xRqfCa&G_6n&bAe-zW8y9nN$zwFY~Db4+9aYnv2k=d z2l0n3H-a3&vOmZKmbIibU;4ze7J$n@V0Art9Knn89gw{`SJ_;xM9ML;id5z7qqFcX zsGU8%7iwq6y;nu$Bv(^}(i#YR3^T`q6IcL=6N&Nq#ktRo6qH+IH!h5HyH*H|;m)0Q zx&krx7FS5Oh@q?d-@bv7zqBY0#gphP_tE@3gKGAwlgn?&*|ATV#FtMW`CXtMQ+aJn zMvyIZ-i(irwOuiH;_0q_a2=+H<@X92RYDo1k|M5H^JMX{hGeHHsqstmCseV^ru!=C z+#=c3IBQ(hR;_O(=^Px)UKt*3p)fbIYIusb#vYhioO=fo65S;=Qq0fvaJJXm0Tjg{ z$GZYOy%TaXs&xg)Bg}>x*B_EKjss2>iPHSySM3uRnJdzOiFU|PCE_8V0EVd^_PvIv z#|u*sH@hA_x1XXm!}xOu@b(z(twtHu#?1ne`exTlAaHH`XUOCH;_C=ukm=Lk*K?zo ze{Xgd(8$5*zk~|GU&pBQyhy-44r;y4vh&tk);cCc|2`cA30GI!ATvL)~VDPLFDP zdRHtL)mZW@k)3xgX=yxJyp?9lZ@j{FTSHD>k*cA$jok}2j3>IZ6OgisNQLa9Wxy|} znZJE~bVf(KS4oAwJ~{JiI#`ML4lsf2)7g#fKO){>UUiKkw zb)_nws3JtAoD@3=f7pT%&^Jh3FrNW%Pb7dvexH39fsr{saJ6+It zgA*&_VGb&(Z5y=76W)4$oE!~uZw48$b@h9%F{QPJ#ZRyTLUm%QhiU(K=9~J1(E;qTGqeu{)^VK{wJ$t{f8X?A11Yo z{}WRC_tyVQQp?1`!uH>j+5t5UJ8Usz-{b0&5->9$_>wC;B1rw`5z24_nD09f90=O! z$&F3KVfo0f+jc73O!G3hR(8leIKR}77u4<-Z-3kR-57MPCgk{P@@`%&XT+>O9$2@w zeF*yM;o<7|k(d=9YFp%+FS}+^_Jx=i5k`)yMoslx$=ZE(emi_xYbz-X`s~%QgEZpt zC8yN1?`+G=npB$%Y>J$qqs<7hhD)={*jDSF;4VFfiwPVrv1FWle__){(O#O3hBss8MwBg6ZBV2eFPc5xpg{j{JCX-Ed z_$h(>oDlyH`NfAevi6H}n%2HTC2QL9M0~TIG?VAn@ZQ^qYIK)HtWTFy-2(-`d{OxGcJ>AfI+{0JFE~(X~xZoc^jQxCjYM*2i zML}~92N+Ka@oyrq9$>TYlEp72w1AX>3`~FwP^MX>ykuE{dTL_)B$t(ue}P|yY(cmE>i0tQV$>5s4iv2d3&6^ zX%<`voNz~yZ1|q^aRpPc_t&qiecS8+pJ&DW-)f(og+69`gaa7(&rxgUL&ARdA?0f~ zYf|wtQW%%N!E*I}11~sp^@@^19-8=>V|e^+K}lKp5S+5LDAdwx3IZ~!-Zd`t!W{LP z9LQ}#?Adl}g2_FImjnrAkY#G?^`_1y*)v zgVdlUv()D6h5nvRHkbf}ZLHGi_F{SbRd|T^!tY3I%5Bml)~J|`prQE6ow{Sb3%M0r ziq=2KoOYUxxN+;az!wPHjrhL~@Z7@AqmMTU+fRX9??KLoQr!K9dI+R`W(+*sD4mm^ z3L4bwc+Fho_G=edoNvTrYiLKeX#-{zPy`7D3Hnf=%LKLfKzi;@NCEx8dr_}1 zt+UB$fK>o5(B@RE_Dc6f_o|(o=m%M$0HgLJ#h~P_AxgO_yU*(mVoyt&WjCg^6<#}< zIXp(GRFOZh;#dHrydj{Cbf1IX&VA#ge|K*oz!~T&6*-APZl_iZ1%$Gur4|E-Bfw)Q zx9GdZf%+C$F?V;SqDUz9Ni^Gd`}w4$cha&rnwNJ`RjqwEg?EW-s1MjtX{FlhvX2qj zMze(4Hv&C~VvJ>veT2|bAaJ}ebF69Ka_e`{$%lDz5>Q+Km_W+$f)*ETM5@xn5d40p z)t(}wcRXy9lCMEagP|7VlokLzND6pKD~vhaP)_qB4dy3GA734UqQQ1Uf+1g|HY@~y zw%+&~Xl!S?q)ejeSn(ohcv|os#E=Tap;=H(!i6?F9CkG*k_>i40wqTOJ3**INuY6` z;7p!&R!HIfxPvVmQ?#P|_yFNaU7efuY$Kg#xGvK1khA007o}rhX&?hMg4>4k(0mDb z@2+h0Ahm-JT|i10_5MJjxb9y4DD)WUac9^#M~0qgs-=FKbxNV2aML38*9&>)asXaI z>tp*GUb@%X@I|1ywRjH5=9t|o25C%OHcU1;+*)Zlpd>LoHQw`z2G8iGuI$<$5U0b5 zzS8fJHRy(*R%?&+s6#amS*gK6c#kte6a++j{YFyy>u~3Sv_Jrf6)|~Ik?~BXdeQ_* zbqvXcbJMvpgHd&^8mU+5Qv(&+U?G(v_`G1(bxo0-kAfStklZv0AKb`v!jyb^VJ-AF z^Kn`!B7WSS#Y7y;x7?1Hl3}|VZUX~7o8@*W`i9y4Bp&tXuTFKCG-3_=RS`ABd|P(B zup?v}C|fZCXzng^pkmd#nwsisZYCUJ-0I(>g77$6u0;HLFdizNe7lU@dQ#F~@?!3V z5RMbUXNY{z%;JpqH9)<@GAIUXh=D`o*TugN(Zl>2lsI&zO89lc0$Wh1fh8)U!e<+A z>ac;T!t$u;F4x_L8K{6t!L47xSn~XUBpuN0Or9Tvvq|(+lE=eW*V!-@yCe=@$bgD!a$( zij|5wmUT$A-Hn_VYL``A5Un+L^X>H(N<6{7($sVWZhrIn`UT1>^Arbo^R-;6Q+^z4 z?0yR7%2_Gat)qt&g_2@W&wYQLB$|l$_+Gf5hl6kXda-P59?D0m#8%@EbAF(d;5~JJ zpyr*CUwPlQ_F{6E$y6c?<5qyVQjt#J#BT`T(rN*_- z$#4Xrn?Ejr{rDM12>V)ixXw_8%76w((sC`i4w4wcOGbdwxb_-&_Rz)65%e6W)s6ej z`;eAjiKY&RYNqbn)bBr~H17O&Lj(@;;IsN%mYC{}TZC@2Ir;#paMJt7lfDzfqCO?1 zfW53$dxxaw&z|;tEM2in94ac!%W8GrPEoQcu>J@hSKZWelwN z4R}|74OdQIgamQ@(R2v{m#SaS{^iJvwLL+xfwMovInuDM+;MQU!SZmqT2rYOEtAjJ zWH!-)E$fC`15GURO)zUgSPSz6r19+QGR8@PU{+?O4@^y_-iVduGbDRj?XhZ@p?^z} z=pRsbsP1a3lQSf5Be=errJiX&27M=G7)TuVVX!>qE&A0KQ&Fr-pv4(I!1yBSHB3O2 zs7(Y<4aja6_$s;Whva>LDBid4>g7a>6Y9vwS$j7;XRcR*E6x&-_PJHEb39Nn)$rSi zEWGY}`Mm!zk(nk$Mm3`|>nEo72JuQ6jYAYhBqphf$?jU}51FTiO{qJd6Xi_L5@_jR zndtq}8cUIUBsg0F;X7z1EKeb)1+=0wXGH)%KtE1C2tpAdL}_w}Xe+`opsY&kzb0HI z0VMUKmLgPSdq2DelUG!>k2|mDz4IQSokud1nuJV-AJ!#$cj&wO)wlgMBF`WgO``aA z)#NpY2}v%kF;s(Zi0_2g_wp2f-g}lm&94u;4z_`uF{6ZXmGB5dFfj#jgE{67&D%wE zVmb&{vK)J|aBRBrw*il(Sd$1hN_W@*y$9@Gl_?CXfV^3(y@DFZr@CJ;&H1N9l;!9% zvh6^A_!p~V@EE`P4fe#(UA-lOmG<`!;&YXc;7nQt&1a{Y%$FI<=H>aN^lwow$)oFg zkq;ZY16gxOd0=SUf}V0W3F#kbl&qm+%f$lYTx0n6_p^R?gS@C;0X>8y({zk8J}8Kb zxJ;65B0mHBlBsk=+~cv{egRk3*)H_JkL>(Qh(7-ewGpA;V@Oo1x=1~ zp2Up^Zj4CmotS$y;d%R+wrA%$l`|e5nAJ1Q8p@}hgA7&h?K7pRE6`Zz!}2#4p@KG) z_cDx{LDU_&Znq1BB96fdeRdaYK0(q1Gk~abcTfrqRvw#F%_@ zsr^gbshZ;Qj*Gd_c6Wf^TlUBt@|tr1YEzzL6;-_t+7kae)uB?`htwCweQ9qxbg6rg&paE|$U5uQ$~g-e;a(1@W?hzw^Qgl34pAuS^#CR? zXq8KRn4pq$3w9jq+{;l|#AQ`V#CdxwT-!-}D0AVqv+DP!VjuLw-TU&y^gSOOBK=CQ z^-k1==2DgP@(j8HWfGv`Bew}K-(;Hdc!7UY(F`hU8=}cKOlfsiwE!O0YHeV%_wcHL znNChh_jjo$1>7}^>oys|5NMHU`e#9H?u--2asjv?;4h>>tsI0v#H)-zYM4SQhTz^X z_C)6v-W4eTA*Sg~uC~zA0qH|aXsmjItV77)OltI@IPHOxKW>1CbbNgJ$2z9<4{v{Y zAvJLuRCTH^E%T)>k zTwi%jZMeF+neOvb6h&U}cvU$~xpi@HY~s`E+0nuuv|q`}B7{v2ekobEZ^k}hXj>cI@bnsXQ>B2j7eL#kA=7#8-|rcBUP6+bEk~&=yW)Dc z6YP%j1<$FPOG!X{nukUH(0G$a24*q#X>{+>W}{l8tn28oRNV=rZl1h4%fX0QiYj@G z&fAgi8>e<^A)b7Rk*mLCG-eP|9hF~Gg-7mavA`sCU%XaLIOKW)!?(j;hZcVjBGQ6h zWwSRl_AuwayIG$u^@qtv2xGd|8QrFuD}v8==SQ?xRbfHQQ8%@z3rs3P6;ov5Ci*r?-Si%~14r-b@lNI| zbmzNR!Tue~fk3rKItS06v=D=u0I-E;n*}~)e~hXPO3hi)Aw+zP(=q+Saof1^aDxo9 zhJmJ3r8{rPeiWz&^2&W&FqAG?Cd}PuOTP5JR$}S<*hLuC0&5GFK1kq_)(SM0c0`ydi6#toUYzlBKE;Aq-^WcT<-K@< zaM85V-seQ=QfV4vabCXsr99yyToQ}TVWuNi{XPc}Ge!mZp_Ol>i~o=9%UoFXRBUQ0 z?iC>(Zw+SEXPI1hwE~o{#^sdNkx@be?7?S(1mcukBnq z215O#^xDgptGflS_ZK6dh2_Ln9?1qp)=-|#8~U8o^rX}ehw}Hc`Vfp+NNlv%F24fo z$-{du1fFJpvV+h$h2~DR2wt*leC}V2qh#M%=L;u^>iUy6KxehC2~&>LHqG4mL#piy z82R(=O&J~PxK?0I-+-s34F0*(37Idx=HIOG0emmcQhU6cX;FA%x1iX!ui-TB&=W!u zRf7^EG^(oKC~9IgdFmCu8Ut$N5~U)!Il>eqeuFW2LEpk-SX1t(CMbU=&B!xzYU6grGLwn={fum zVZ$@BT(h0)twkt+eWAw~E0u_-tsEPcp@))lDqn567v#)_=|z38p{I;XH?D{D2C4E5 za=)dx9CQwZN5({;?$O6|$IS>7ss*>mmF$!6tjWwmG-t*B;XoJc&sbJ1D8h1}IDZeM z<}5UTW&s2YI?l1>zafYj&%jE63jPfb%-;kEE!!HzXp3k$2&@67yE*!KtM5)C?Ax`G zUyBh2qdAEcUG=Y_x;g0N6~zCTv=1KVDP{+sf9@ z_TetS=ebQmYa6)s=#<+1q8x%L6b%l$w-YdE7dAmnv6C11F(R_C(kUarMoeaIP{h2$ zUaV|~ek37LT*wW`cSbL_c<-UgU?K&*k?K?dOibExUK9gIJxBD(VDj8=@7Bx-mOo5^ z)%9^F^+lFys40?bVVSAKRUa_pVDBl}Rc|mIU|Gh=zs?mZ5{>!-C0)EPN-ZsL`{Nsa z7@!@dTFY=1D*qEX32a6?qKrNf0cN5U7%11{a-q$}$2!bg;A8Cg2t?KJJEw>!5&hPd zE!sUNromD{w&1o{0p69fRk7_*L0Ox|6Os?WOA6LzSw#BjZ{8w0oR z&v?%jsriT&irYKvslyN-#Ql!FQbm#hb3FmUU1c|>7rr|a(_J%Iug9?9jg)t+ zYoj)#H*xhLhpym8kUNJu`m`GBtn&j|5y|i;sW+59MALgl-4;<4Y1V$ zJ_JD_g$AfPZJ7u7@m#$zLUBohP#Z+*%CUn%ZbZ>_LU7W-EkAj-mB5 zt3UGNXF1aF_wi}nt{&HYe<3G5SrK|bOene)AI<~-Up9%xqB(<#flQCEbU5Aadx*I< zM-iCz-LypaXifC_`Fog$YFech30tJXuexlgJ32J7dw4I#g|S7Iphz=Vv~z>eIYj2| z|LpA=?gzw7%wR&(mfT|%hkVKD#b?96sj2{8o{?=2wmH$P84@cTd2Kk_LEqdSY=80y zaic`jw6ipHi}am%v=&Sc5N=Rjj5K`Luu=vdg2?D$vWxQ!d~vNq?R_++D6Yg@`hKQy z_Y9`VY;F;P7?3gG6G&Fk=jazfClBl6Xh82|Z?_7#{4)q!G{Y!rANh)DOX|nQOVpf0 zm^*2kshx}zb(D%Q=*n3gS8!YWO1snA{o*Wyf`Rm zp#d?n#B_2lMj2>6BN1i~df>t?>-b^IdCMrATT3))U73k?2={Z5vQZghYix%#D^xM7 zK(JiCjHy!|Gd0vOtJCU2MQ|Gkb)h_kv#m5O-&ZqfjeK3kvVG$Al6Opmu)<@XrzsiI>EF(N z^X2cyIrvdSCCAjE=mFAK8BUYz17~p9#db2R1EHX#{^L=NLq8Ypp)$|chv6(wStz~p zf74rQ#5wc`yhN9?_l)Md%Y;S_r{!Bs2Dc5Recx;~6=`dnKgxiNSY%k8vtCsb8=Un< z$C-QIE476bi{t#MRmN1tsbmX;oOu|+`cg;*cT3*M>&wgQNG0MM`M@2}>HXA_V4MHB zZs6uFgI^fRbY8aQ7b|Cl-kLL4QR6`~IW{L9r@|ni^(@SNy^46ZDs)4-GO&58B*Xeg z7I+<cM!2r+Bwp4+}EXJoOckyxhms}JUFZMT4Vxu=baP_VZ4M0!pjVp|o9py2tr zhLY(|M0i?U5pv@Y$0UMyE)-&FkuYR5f_QVa`l?eT5=y>?{97Va%R#cqX8nHdvv_>w z!TsohXJYok^+APA#OUwdEA~jdCvSD;a8)RBq(<;TIuDWa^K zE{QA24c#D;p-pYoQSk;(6y)E$1CY;F%hfg@!DPmN_86N)5F4=pGog{jM{Gh)D5slG zrel|7CfoH53YbDFvQn9QDB>I>?1WpRLzpnJhl>kht3Qk><|PsKBC%y5tU^V>LO zf=O|bwr)YAUtT_A^bZ+xQLjAI>}W>j833`|41R1jqB(6E^fnIVUXjVMRUQ6riP09x zUf_4J*^{0%oeJ(7u=qZa39b?`FPx;*7)fkJHc|4(y`_2tf-_;}kF-evdupnWC^7e# z!hLCr+0Gzc$GvfW@s`;Anc`W3{fDU2tv%&-XItrWE=DmGdzMTphnG(Gx5YNHd|{Wp z8fvT^%t@Q&ePv!j{?exkZ24k|U}ZLq%4DijVuKpfQIfGr1u>DC?x^ytBx&7IlJsKb z(!f@S=bAU#k}JcMB9@{+i6lFI3GzITT3=haBxVG=`um4^8^~jiuJ8DFY*B*U?9AiB z9le$W@&4xKg9w^WS56;^vVzGaHH?a)>>?!euO`MM^*2r9rGQ`+fcaZv0t%Br4_jxszqc9$oBD z#M1M%Pkr?)`yl8~EFYKRLDb?;I-~56DhA*Jjbd41Ade|7UuqI#BC0){EJ6@QA7>3- z%{Ugf=&84W;R9^U_|bGk=E@6L_*)8lVb;i?It(0PVw}zRU{g~Ct0BxGei`Q7oqL($ z-njH=e`jxQ^os|sMyb6jVoRSra1-Zix&DQ8`nGY745(qZ0;shuI~R41(YsqnWBkpP z#P=0Pn1NLNs*%)Mn$42_RP$_nqrDo_iCD+#eTRs}9_KO{X?Bgb6w>}YD6`1VIcavb zUFjP=r^&GsWiFep2>T&KiS6Ng1qbFFurTLt_Fve23ZR*ow18+L^Z_V#J3QGvesjaq zc79^O$ZAH5yn+!+(aQ3V{;GHE$FUjqhA%e5mjcVt+L3#UG;z+6Zw(W(X6hS=gz%pm6tB z)lE-2xa#QNFArZce89)~nl}=JgWL0A!lp3wTn!Xr+h!(*LfhB>#G{lMk}i&DQ-yJ6 zbf*{|lC-Oy$)4A3574e>khY(|bYQhvZV2&7!R*9)aw39~M5NzxWOfx4^C>wvmfnaiMgR zCRfV_{#i`x^RelwM@BPCNQJbT+DU=J{MDV{q4WCIL!EvEA1p@{BHR zfY@CAHFpix7L7xzqWgDLP1JkK&PX?0wDD+b_XXbVygfVOxmy?lUDG)}=dB;BsIO-D zdwxZ~^4&7VClo!PI^l!n->|a3X3PJZm2v!Uv$B89{J-wS{8QcdRjv5t#r(^}`CG-v z`Y)vSw}z4RpE&*xdoj%a6IS;3e*bG$#>!6r|72zV;l+qe8FHj|wFeRS9}+nr8X1NA z;~#L_lV~mpBBRCg-d#2Ss{Wn!yO?;r)`lOau6U~IrR%hSZ2kSPeQ`DW?d{KO!n?1_ zgRhUQY)o>7*6s4_&CL-L2g|>OWwN|)Zhmg{Ki6r@sKz~iRWAZCjJs?t*`sd(T3f(+E(0M!dKE zPcBQU|G%uvJ@7~YS`i7P=(swUDOy)s*L$U^7EX`H=NVR6aNOUOD%HPxEdBz_m+Zf? zGPhWSk8r(yxm1B=M}yJo>oSsO;V&14;a#@)g^U+~|B^!iSc9-BsuY3)|~tY2$)z>^DdJaTpS*;Jo*{Pr+0bv5dP8ejTo3E3Sp#fli`%T;f#ARJm(L~UE>Hxo zEEPi7*JYL(wYa4hxEDcdWW1!LR`&|zLNCUWN|Q!8JL@m*0_~dbbu2Js$mwIya7Kyg z$L+8D^jtI_uH*0QsggGeRX+1w-)^@(2Jk6K%GZ=9q?f z8Z-NV_iRLeI+!+u$jd%_i;A1C#Wc8j0#z(tCaEcFAs)~u_&A3P-RO~KTn>Opjg1)e zY`Hm55b{budQo0> z4||ru_q%B@0KyH%OblQ-C3;P1AAG44-DV1)WOo?8&B^vo&=Z1uWKM1Ck4O5C&iJh3 z>JzxG@ZRZd_ftm$75MsA?!H^oZpc@;LLPnBUA;82v@JIRPqndO{sa{O&3!KDrmu|S zu%A)IIQyaFvaoCpP{j(jIwbH3+r6<+_7@oYssx_BC#MAkRAgwv{&vTuOo4XIRh0fs zSElUX3x+#Qw?Ws4Ic;~+5;-xA3Au@S(i;p#0L`F0Y1)i|ZmQN!Lc6L0Qicj1o@?Ed zB2y`8aMLN-;NTv=IyaFVQtSIw!>9!>mGcd?<~ytjxs(v=*VAN|AS~8CC#n*MnWufy z=c|u1w_cehHnOgP!)(rRK~BL81DalHe(lk|A_IvxH$md?q%ZE7q0Z}x8hLW)Oc;6N z>K?ipwoONAk$5IYPeLj5~B(3 z-CNutfoImAkO{Zl-A~R!lL)%JVKK8lKkeLGqK zG*_bL?V#%mS$lA-P(hp4`5%>MIN`JXppKD>hHrv-`PYk=RDa@_s8HPAQ zr+RGt>b}mWy8AjzyiyrBh330<-lc2_1@w&cYjQVw1|*)bRtPRVI3p_9!3J!iOzMu$ zUgIv?ZiD&mTff}GkUW=-;(UJ-* z=UL?Law2qZs+`Rv&M<$yMBuK8HyTZTU2|7O+062k8-mOH%l)J- z>Xrj5H88SnXqZP-c+whMEvTPkF5@D&%SGJbXQ=CFPg1^20Of7CB$8ZJ2@V1;`KrwX$~L@pugy7~(h97Z&Lh?Ug9Vyhugetp z1`uWRBqNHnP=UKg^q(y$YQLyqipZgbszfxTNuh6=5+rp)_JnEF_B>lCuNSz4YI@W`fb zV8QGU`x%yf??Ss=)}OC8gAhAZKrT(qglS>mp=S;U zchY;qc0^NsniRpex(8+F?}SQq01+Tqj-IkXj;0Qt*Z5P=$1wr3@j(Rmb%)8H*7r?T zUpNdBT9M*cxq}GD_foYg>S2~m|6GaY8ay>+qQK-$(us&RAdugP0!-cWXsyLKmKGlT zoY8hBE|gH-Xwb+xMgoY8*T}+y(g%H15|Zv59Uq6~nl2Da^v_63oYsTuzC23LZLVRZ z5a!K)tTu-(3K9Hy!7|it6|*sU20g;noF0NmG1tlg7;as(3bhe*JKx(yYnsmX{$BY-^bGNTH;MD{!meZul#EHA%xE&Wu2>kA1e}1D0(l5VXC3(PgjZGeF?QP0PM?SQ`%o% zb9b@KbuR1P7A*JV(?Ri^Ox=Q9Db4fYj~0LW_1zO##o-E}?mMV{JdpJF(7sIR8DvdG zJRDIjiU?bdB0ks%>68MHyUgY=gd804UqGDv48>HGA+AdvOCd}rn#J>k+N~fHN^NFQ zc4+%C6H&f=!7S%u1QokP!AaQgXx8ZOwD zL{zDhbdOBiV3SFC&X(R=LCgoG{4s$<8gPx# zLcRj?I(uP}C;?@9O!#U{BldPa}2^FyEZvT69kBn8GCY=r@n z1T3_I!L=9|x`>g|rh``c?R!2^A{ImRBZB#i;H+0DS$fiTHflopyiv->uU-UancCk#M7Or=gz=yY|eD1trdEcys*=7$fM^$8wEXmCgW}g5yAcwlZ zxeiy=gOC&oGpbq;9rLP=P`xNxjaE+x*Aw^?IZmfbA!KXSo6%PQ5UtMQqGuJno=VG^ zIvq-5R~MyO{D;dawK{gekE7d)WA6gA0C@N{kFSW1x50L+d57Hj!GU-LW5l7%CP(hEPHx zS4x$?3=uZHG6_dSO9qC;N=lmsF28fxI+~wzK)9#8C~H)@+R*9n0JV3CCh4Od=)?X0Xf)G;oasHvpBbE*yiN@PR7DDpnX34Iy0;fR;B6QiR+*2c`wP2PALrE@cP z#S-Vr{f6B#Ykfs$_+}gj`-|CNP|IxkqAx647w=c4j=spom?$Li)TjYSzsT)Shh(=KeqUP&&6@*5T?`*L zLVr*U&iWvYf%R|XfP-e9IpUs`>b^qj0Mjk^+D&S$hNrhcAA251gQ48A+f=6IZjnQ+DdVDd7W z)=~~-;6T($+>dFHIq#WUJ7rN({CtN_C`C_i!$$dT97l=$6|D-4$f(Srj&G@ApDR0| zETXtX4_GiF%};?oUxqRt8_)qt9dX=d_E(YzWo&Sf$kx=;2hro~Yt!Ma{N$SiJ$q8b z-V4sv9|`Lr6SUI`k}jqM9A!^U(sZtZ6&-f0>D>b5*QyG*kMi-^dX?>@YGkSz{aQYDw@cNW=vU}6++`+-E93jE2 zEDNu-YT~P|-Y6$_4fT#`FU1#7-A=^Yn2u;(ZJd{4^8C^&i0XE(!3;iu$dHT9=>Yil zMSg>!Z}(?JL(;Apv-aOW*pp3peYyezPXaWZy`qGbXrPvYSnm4rYEhd7aaDF&fheCQ zX42Ps0ZPu+wPw|e%~o0gi~E}&%{j;WNJT-di+5IPG)d#{C3Qf{YxxRO8v24Jm7q6L zEvQ~+LY>SdG_MYEP{4pH5$*#?P?W$A&{*{X=igE9m`;tkNPgi#j~`3SY@pBFMD&+W zt$|^x!i8@6BQ>GFCqL^}%RvNF6*l@Zz08}17rCx1y5g!8AnDQT0=kqnaJ(N0I1 z?H?e;zP7Gz2(4;R0ZU0OCYWhdW|<**-L)ssZ;RVib4qpN#2UB(#o7h3!s*mk^KcpC z^d-EB^SodD8u;0rDE2Lg4K8ea3TNtmymnu)kT*<}FSh&UB>Ag^#-`lo;&l&otivzD z$y_c~PV`ht1Q)#V9? z)-*c^O#d=EW(x7);z7yDmF;aGI9pNG)XSvocW$D)+J2r_jQ;rg;|qcTVA!h^@lR@a zjQ@uA`p?Tz|C`!7rGHU-=MJ6y&#vX)aAp5%L6Py_jcxym`tJYF6-CznqN4bZA^Okf z@V`UR*ch4rvy!4L8qSk9h#+*-Vab#g0hZ$@v(O-)~C9E%uro;Qy}qwr?aP<~C=tZ{TvOf7tfe(A8|)KC8CejK%Wj@cM|L`O;%=RV2wZo`$jcS zBTeJ-HP+JxHFT?Y>QrZ=6ix7$|*HS)7n9Q_XcwQsm%=Jm4h z^0x?!FNcn)&-jl~8=7FevFIorRX_PDNtO1*k-*uQ<7r}IscI^|i{|CnNvw|#3{{=K zKu2<(peF2`_P%RBWr+pHkll`u&?~V|G`~JrBkFv-=`Bmdrwold9OIWz$@>YRAHsVL zC%`hO9p}Fl7Rz@r+M~RCmUWZGu$9lIo?L(6Xm>VKb2e9k zE!S=>QFvFWb>L~d-)3nXY4C~gx0Nw3mGGWy@V8d6FPCs0$B%9^S-7{K$QRpF~881PBJ_c%}S6Q*%PXe4g5gd z<*M36S-~V1Ea2?S?;>MQTS$Wd^t|zi*R`w+87SjcCYHV{)Zbco`mwc)sr}s%{?ffm zLC<$A(JDhV?f8X8ZeTAqx1y^+NKaU*LEb_(_bzp-OZ32DiKg_h26IuU3HK=#6SYmG zL#0!F>N4;}`XBh5Fnco%6LUXYW5gX_u7j^mRr%uJBI1kznl=YdKY@EkkcJZJ>atNs zm)b{~Lh@hkLi9^u@T|MqhwntK3pD>a{}y}|FoF`<=WYa5NtpgZbV?FtFLxB#1!J)T zK4=ppjzbpUb_>|`-SEBN>BfJ{ZLC+QIxSUG|8XivuP2gKOK7zV#VF;%xK!`*u2UF6 ziw)|v0aY;2>FKZxV1S{BCQ(YxyZAwRjI#|-=p24uj!K0WMR$td0#P!K5SQMuDCt@2 zPh;Q=xV7(z9x{Q)D9>)!VeyDzSon{4t^`&8xLw@xeERu;o|w1){B_3HyIv?Nruki# zzJ|6HBtS!Dm>JOqy)dE88G2Zk`{8~IotLt1-CfG!I&l9axvwChb?H>vo>1v#_5@&p zN2-464DWjP65H!11H|iN#am1K!CoZL;-KkBs3CwU>uk9jx9f2T5eR4MAMrf+JBy&C zHMU^U)i^06=ekG;kZ3i>{8PBJUr!C5g|=4|$sxb?jJwWZwgj~!+sZ+5d zcEm`;9^-b4mo2|f9h!Ni$|R>5)Kq^z8?|fs$*{9c?3F%BJoqZ|n+xmGr!{nvc_0xRwA(&=E{)(KV9Hoh|$NmbJY<;yIMQIAt%;7S%Ql+8V)IbzB zIuTw9L$r%-mgIthtb0o8k+_L|496im^XDnQeb^V+-#kN{_y|yuD6xIx4uDA0Kzr*$ z$~{}1Yle}UhfV`%s0fNgOMe>oz!YIRl1<~>GAKm$BcZN#23!=w*bB4Qxw!ViX|Uy% zdC?!1XIdB~F`N&kK8n5lZ6;ZsAsHkAYfhMy^z;OB#pVP)TBU8jw*WSKizzncbiSd- zm`MJT?8vlZK@A`0iOs3!E|1piCQiMxEPH|GdhITd<+5#V2idKWzd!K4Ga1|rV%wG{ zA=`@LC>ul-B8|e(?+PDY?a3c=WZOU*2U@@yPuL(wfo)+$p>6%7pH~>?(O7~7BstI` z7g=Nrp>hf%^EUT~B#%4rB9vMzE-DVAKBXy(Vgc8z(dCsZ6!EZ`c2bE)BxpW_+SGpS;6FG?c)}LJy%&04)A7`NVmct=|C2(_ue2Ni+YsA^_M5Nd5+kpo{_&kl8rP;hCZgyD|lG zT~X89R2T&>@soeME$fg_m(ncNS&bA^g6*hPp!3QfB&&#uj8~!Y2;_hRywUxuI{2dJ z(9Ux;UwPsdufWWy`jb|8gA_L9eP<-5sRN5lz#t1&ytu^W@Yuw?Z9QD9+6;6TGt=+L z@;8>ypG-_U&r;TfNP8ei+7L-NwF8O4^-r;~rCz2XkwB}U5~(>N2~ZZPNNmn&_T?6- z?pp#B{BqJ%)7w!e_MnY9hSiO&)wM{he}s&BqMRfOh#_v4A<(Oa_iRGDyQ{o^Ud#Q! z0iy`m5yvzJ;;*#6?sO0N!OoO-1wV$_kKpjYIFWWC8Yu)ezRILXle{H6e-+6ZDYUc= zyMW`lx_3bT;_W*)MWg@}lZIa0H8~ewZQEluVDKUuA^@sA)Q=c2?Z1W11{n?Y{SGYZ zc4SQo@O(Wyb=6Xmz~yT%=qEAN$_1eW|I8pCJn_Fbvj7uxn29FSTEWQHA%-0Un+SSh zA1nJ_Hc9IE)eWlL(W9%v4S<_G^}=}LQpDasi)c}_>|Y468OBKJDlh_g50!SK z8sT1FMMD#6@ND3u;|g2o!&FL2h6Tn;aZ>7N1yyRaeXqAbq>Aw4m>8i&<#2HiDBO5p zCs=*RIW1G;`k6i+%;s`?2HeD17f=S&$?4;NWI)b62c#M7AJW9BV7-*6(3R=Ifj#@n311?cd!q>4qUpYkb^ zhechj;vAZjrdLD3%2Dz0-0aCMi{WtH5EH7f1nXJc{LgPgU>PurN`{LYO0KDYi9bi6 za%tORBCc7gU^uTCgB<3mku0Hh`Hc{cFx6D6jI6{6N4tgkctI?0vTMdY>wU*9uJDRm zb})P_dACTU!Cd5*@TU+|T8~TeNod4y;AzG!qnUH=lhFLakz-w_tyzm$BcRrVHO0Ho zT0A$>YOt8_^l+Dw~t7 z=-}QHWnH{hmbEaVKf6CZGIMBbhCPX=Te~w&NNszPzBkfV zK!DH>Gi*=;KFyCcp;+9mre-Cem&}{HuegXV4-v>Kn70kiMmI{$e*%Ml4Hd@%P!$<) z3l;Gi)yDYD)wi`{i}-@=+vEt{4S@gfltvd>odDF`wnv9ALbcnI1sK1Xmnla*Kvffz zx3fDu&(p`B&fncu9`p9u+sh`d61e%M`W95~H`${8v%|@xUi{-4l+#aIAI>191K}>E zFKhouPh^Y#)KRk=?k(8DQ}CTW%kNm3O{w1qh>izpCm!0J?|t>+x@ZsZ5&freaWh?x9S1aV41R?>Cdh~&HZdI+mS;5MrGAHmF~SvkiU-{ z_%bjNf$w^RZ|cIUgUj59eNKOA0D>&O-gJAq(g!iaO_~0Y)*rQUbKRfN6Y|FVcFWvJ zj{QsY@p1r8b-Qo^|ETt9tBSHIcKXJvptAia`8#~c`WsZw`{CMDgiT|bxS&@OHlD+F zN^@VSoFgWUs;B-SEuM`T=Mt7H2pIl~OZFIiZ2xexd~BZsvw0^nVGJYqsRe_TI%XF< z3Qa|b!7Xj8WNP!YGCid=9?Qw(L$9p!qR7$a2`L!eHiO-sOjJ9gaulsm2`$kDUeR7k zdZDDLD}{pi#MsC}!ywKf$!(I*f1volkG6m03SKIFUcZq-_LNq7LwV3xI3q<;r4fm( z3fJ#QfEs&FJP35eFKTYVYyqA@%&)_E2(n%3a|J)X#n@(A7z&Qq{vGP@9n;yFvN-k% z4J+ot(HOd6tI-~h7vCiuy^|)5{qI0vG9VJ@t3MXbGvX201@BT>0Kv!3?-U-=CP3b$&3C>IO=)mPN-TkaU z$D44wFnkBBg&rM6@h*Q{*f1N(wh->>2-(XWzKy#q0u6v>{L%(tc8jaAvrmp}PkXlX9K!3< zvt_6rJWQVeF_=KR7Ja`vTq_LB9|g8X5|zdu6%p!U=m zQw}kjN*Sq+cvZ*;^+kqQg9n$Mh^*(L@-`b$T0pi8(CCWhN5?qcwd7Z{`#TZm30~!~j zpzf`GzaPkNWNSiv6Dq2Z4w+%%y3RO8d_5B;D<$!-Q4P4U8aNZ6sckBGt}ryzt12S8 zjk!jpx`O1i*40wxIeKUnw~Q|9i>`>Stx|55n|(t1B4P|(q#&TYfVOKTofKb3DIbb!@%7< z7%X|o%=qM=K;|ThL>ynIJ~=e768K8S_h_1rHVrW}HgB z1p<>5{raE3@x%h(i$;b67oB=;xk=K;8|SWGk>(l+1_F!_6bZ0pl}3-K#pB%-$-^|V ze`@6>Cr&LD{JkAie&rGwr;VN@&CDLWD8QDX9XFKeulZRxtS6Qnx1%-%^|A6At~!9F z-GO~KNPQ}NsHY}qE@dF1*UIm^YteRo7r;jm{ z04+gKxM${u|+4ksE=twkCvV9tLpadwz5*tN*>Jigrc!ZX)W*T zsg-4dEiJ;iYX5wHb9Vd6I%y0&v>nNj$2Z&fTg;OBL|pVtcc#hUy*ylZ=Gd=v@7FW0Wk5cl7?omk z$awe0$)1hfA$_5fB{Q7Ypb68?N{Ag}om++fD^R&Imx%ONf|8*Ta%9xuAQN%&_6T?kU2qw&fOJ+otOJRANnJBIQP^qck5Um?l zX?j=l_Mfya?{?uG(1&po`l!t#)=8b#UAh{xXQ9nG(%zN_EWIQ>eHakW!JzD>at%ag zbuCI{mu9iaiK23a4XHNvp-LER(Q$8T<6^^l>duXI5Mr=591e;Z`huiqBI-5`c}hmG zA5sQeH52seyr6o1-jN(j!6&k>wTsK!%RrBvn0dK2yCcsqw?m2orFC}~!e7TE4dVAJ}C8bd9Z zFA_4tCL z4CAVxy&-<@#fCqC0iFKAmqmU42^K(GJV=4lFX4p1=mXgH zDf@&l6E$^;rI#Xzbr3D%e%21dpS2?@D;e=;?a(f+JWAW$Ea5CqQGi}hZ>+VVWOZLl ztSD(`Z5m8R$?Z$WKr}2>AOD#ywQ=uuL-Lq)JU#&wuz-$}Sp19DyCL%v(zDB8C!ocg zG+DB#^OmBza{qk+ELx7#XMxhZjxn;7-@+DCvg7IDtl28JiIO@2(G^G4$@lZ}!9m4W z;Gt+n^EKEeu$-^J4G~ zDN>Ms!S;K0yryRczIYKHj=xK9o&koqgLOyg)y#lTy~o~LZocVz0TkGbHUC+y{hvYY z82@Fe9oxSrg8biB@3Q|7svZ0PpxUwj_c#(}0``9-octeF@3Q?@wf27rYsbp)AF+0m zshWDG}G_ zO9FixiI-V^4Db0x1lblUs$!*)${j@_tdWs_Tp$TEhDyE+pC0BKmga2XrwNgNx6{7> zqRVu=uas6@QyJ9>sg(WJAQA)3*=mG=?zG^Xo7zY73B*sWA_a>0T9p*ae^)_Rrg5Q7 zyYBfL1=mXQ?!*ze8vNcx{1n6W-Ug2%#UK(EKhc10M;G(g!~R>pqfhvCe@srUj~EBT zjw}H3Rd>zAGp2{Va)9c`@V?gaJ36wr{gr&OhgfU%*!EU&;&^75h5jdtB(v?WRIZ=g z=SmX56*33DE6_8A6A+)iM8H1FBWat*d$L*&QkF!-5OP#16_`<{zix;!yCC%iGaUz=?=~)Z`Cn1^BQ^_*koFvF1=QldZmZ^>xB= zWLdY}fKwJCGbWK4^PBAFsCR!OV6TWUIsez7jq*YPXcz*u0oFY~8ogxLOE3Ra;9dJI zmzlcx&%Ac?C4B>>x_7;}=|Q4*)2({9 z73E&s<+~N~eH3R7T}nsf?*Y`5lDl?IhfX}K7wsr?dUPNO}WTY;- zJs^KMG@Cf>4wTou?&PU`H~Y>^29Thm zr5<;u(+^A>hEEzktei6MZ3qC`db>=K;4zGG!9YkM|Hc-9&q&4YPU)vcrC)@du}&{= zJQt9Zwvx$%h|I+`k=3Io;bcNB035bvOcOZ4i;m}f9d7CIv)b&!p0h_{pT#1>74&C2 zIldwuX1U03>AF^B&VQ__GsU{f_g+qOZCeGANCc& zO4Zw7>Izd)q8_-_KajJlLgy|8gqpv~-YFM1jP5Q1Vf{{a`3+Nt1cz3^Ob!pOLKV;? z90LA_Uv3*K#?bcH=EdGTRAeY>i3(LglWXw%!nicUWC6RBrcT zopT9~@J5-i)(`(Wtjf;{m^0Oaz*e08I2Ir>O(bsCmpA0oT$$&329)Lxh>E^D>?(x zd}1|Fz1oB%cSHfo=7nyq?`W*{X@N%&^##FP0}kt{LvTYI*~%*52`^jU-|B{tx2#YX zu6e1R>e-6a)C}ohM`yYoI~x)?mF;_Ns1f%_`pdo7k%!w!&(QJ5C|qBpNC3<#EvpKO z3(w7`B#Ugn=y~FIm5p3mDn0%Fi_CLp@DS3qp*p^!kJZ7ovK{IPYzfsX@jRj%(xI)j zE)gY4SRjTQwaUUQs%jKVxXL|~o(!MKB=cz!LH#~r8<0n0cr|MpMPnG~w@-h5KzLg> zFxr9+L97BRSP>q0qjL_~an{Q$uM!{}|}IryvbADqiTxXtU51_snr0sgcjzO{aq zaj1OOd@t!P@L5cs+Ak+OwuWD(ANMS1%Um2X+QHZ@xzH{8G>YM% zNYa1YY2M!mniS&{WFHY|oTL>Z#JXO=uDX_HITIGSQ;Tf3*%KB&&=#$?Srb@Vk5R4i zx5X81G~Ig8_Cr(@3`cLf%12UVnf}DHIu+_YJ*7ld7bvX8Irgy+C@OpMqczek;cOg} zQA4axk>;ornWJ=dMBb)iiZLgJECgJMU#Pr}7bv~4bg#RooyAe<99beMz#mfwFG#@e zUgUML+Vu(kde zG~=NrWh+!qUEB0LS;fhMwxW9lV*}se$%L-$rl^hDIsO8Lf zu$tBs?gA~WDMMg8&U%@ubN^I|qHmvGZmRYpggp6rGufis8{8>aPKHaq{ksgk?R3c@LI+e>L6AO88MJGRJ5uLHOXz3V3syeR zW;0!*PhqRwAJNXEPoKI;ACC`)RUAb3$EEXp@S3PJmS!834FVg+1 z@p!=(AQnLx2jD;stL^(m8d?K^p@_WhY}jD4Mv&VFkuwmtOCwhZ@OCHWTeMX(&gwm^#pxBVa@7zf+ zh6|R|q|@m!B9(`XOP5v%vi21F?ICYtf$2xw9GeAN%)Az3D;xTAL&=W7(PT_clYY5h z2T4m^0H*E^J`ZyoIkJ!4c1!3unL!=o+5^R%=>fv@l07yL2G1h0T7}u7O}3u;8(fO; z{c6BcH#~E)*Oi#jQT*MyLmMjCkpKo zrVGRgCU=8&K=$RjPor^HbGGgww_**o>0BMcwTozzMK(ZI?$HwY~^iR zGeFRTpcFIt*YEZKT$qdk@$HJD;=7QT%7UsjURJ#p+x==xo&uf~?O{@b!D;o>JiY8=J|&e1xY8SmL-0o;+@wSRq)lFAcL#U1DwvWL?@XM89ik@AtW zXbg3oy)XL#k1>AxLs{1!OmMHVURJuWV+PB#BpVf}MV~<}aR8zl9vTXJpw{fggvZOr zYPIRA!&SUF<;haqy2gU8USOXrD>lDi(>iZ54Byjo$M&pRJ`d(u$3) zUfOzB(D%AH>R(5_XwQAt4jfGcrvpi620bn@%U&Y@`4oJsoZa+R$7|R&DHHO z&Fl7)283i*w$|s`#RZte*Rzf$PW~$YTq6*bNmxHMr7K5OS9_NI#fX<-ERZ}K>MFAw zY`FRBJ4hPK0rpYEv?L6>bwFXrXX@!a$YwV-P%WY+0j}G`3J=4^PJ%)n9Ob2MAg1R< zMtiw+%v~PlLVDS7;LyY5Y>##iyGZ*pY5{8T+qZ=ck3g2bw*2eLKU=dvm?~(!al_xQ z_xO%eH>Vb^bN~~k5hsn}ukXIWr6g}?s6puY*rR?gWgSntuAMt_3+wL9!a(Qz%yw2N z$R#kRxaNLGzlnB@{>% zSa`8COZ}^t4Gxwm;+|C@KWD9u&}0Q0FYR$bQ{vB7uH@*pFd0xdc|cTp>@}tv?4EdV z$Blkk7l5xr6+yw%k#@*iut@luRyH~wZri#Rf*G#e(uzfJ#cAQhvBS3J5QFSSGMH4^J20fF1K;?g5;$VpiTK^~)qzR6a$06+&G>OcUa4;g# zNnsH#I~cG_?Kdh@XGfhrNphsg#xnyljmFo6LmY-IK4^^HW_C!78Ya@1Qrc;_RnhWI z=^PpOs$YQk?e!8Qf(Wl6BwWdNBk~3Y13I$gBw3mh*LXUViCd=lG05@bmTttEJ5r70x#g^=b`DoJP~6KKd1;#!Mne0MQm zu4V&g9d3Vd!P^$&qEqiU-x|aab@7H0*}$B#DjXWyaKqs<(ZQYkBwQBW>yE&CsR!e4 zP-FBW5Isi{B$$Ms*$GuVS-Nkz%C?aQiTC8J$U!64bVG`CrVEM)A2T{C1wdeRt;W_W z1c;|Zd_ho?g&EZ?#>TNRi?kpR*3HI3fDh}n0<>gVfn{XW>6hqDo*-7bj|@R^S5LXi z1*8Rr-OL1x>iJ>E6Z#572$kSHulfT>*(eC#Un2$#ioziF7Qq?K`s1B##NM*Si@ZdR zl$XySsDsQ%b@UU3bEtMJ+L4HZlFYboG7doKI(>z;5E+it!~^gOg6LsCkIgbyF6^4m zF;~L6&xGdmHJ#e)`;Ll6mA}*%$6``FnhpT_0u*Txw%`y_%^j3_r zGX})R3~HLs42`of2BaO#FwByU*VdIRENmi|+YOq6^vH#Nj(h=Y;LL;SDtU!H!rkfj z<%clkd^)!c*aDYa!!H6^*L)t|Kk@l~qVUt@o^)O@G(+dF=f@G|ON?N?00^_OU>YFs z%_jEQ^Bo&bQ9>~%LO-O8&&I>*&py9#i*ZOTBua3zQga7u!XCIbEHt?ztoNSy%ic1d za_qR9n+Y8d5QQou*(WG~!2KcJCaDU_BswA^n}@1Jgu@2bcVd^85!*PgW#fXjEZRad zJa;njhNC`W0G?^~S+*u7NECaE`9*35i+77Dsv?dn6Ns}>j^K9q3Xvs_B@z?c8;;)t z!1)`#zmb)Yd$@_``ef}6cEQbwAIfgHY3**!k2wU>&W|jP707NDLu9{Jfk-wbVpM-9 zD2pZ~O|g;2QJh9VjDrDepkGxejSN>6UzOqb0b;rHU@U{2X5~@>f%%ZJH{g8v!l)h|&r?X$^ohFP$H- z7JlEN*m&2lbMM&q!aiWfG>nTi8G{9FRbS7$&ip#X-#~!TvL?#=HUOhW3qT_=w_6>o zhFK_jHG;UjDF~vfAOgW`Oc4uz!NfG&hKP*NIJZ*_M1Gfp#o*Vr=+k1Z)(ZOCVgWKk zNRo6%f;Cd|jd|K3jt*KzGVY-?XD!Us9Ln!C=Aqn46kmrdY|ftA6exMig`+sjt!nAi zf$KIVx|dE1Es`9%sYTOPJY>Y|q-kz}qPuSBI)<(_97Dj>D}b}it&K?1y@NqB&oG6p zo~!wae`g=u+J9O9v-;_O%`E+YG`Gym{~?E1D`6@kkO5)j#ytXOL%41!qme+U4u$6u z{NfsT)#wt+5@rt1>mz$CiOx#k1pPSh?<7h2x#QKlI@ygr3+!b5MK&x$^oyQ=&fYS2 zomBDF)Mx8Z52gk^lC({Vc}Tv?7Da>*8UAV3aqZ~RSd6M#@MGY+_&0Gc6Fy?o(or*!x*gG9fmw{EqnwU- z?lYZYDmXP1I`&Zo7|F~hgBj|`4S1p+C>QcYV#<@KjFyT;GTJ|FRv|~-jQ4p;N6ASK zma{o6T}AJyr@7f#yoLO`y_BE*`7s_)H7Q?kEBw01&F-7V=P9Yl9JvoD20-9(A z-|JOJA*4bckdY5iY6J6f#pbo^$D&;IXHMvIULyBX`Gg0qO`EdoqGN7^@lktsHeb&1 z&hvbfsCg*-%SBPDHy5m^cE^3FwN9y*D}1I6$GM@r&qVeyU-s5O&DGvqa_9!f_grMj z811IV6&G*%Y^urUy4GUyLtUx2>BpCoZ$0y0DxYmJ=cUiiqI8$jM=rLiW3ud~GIWNnI*;+rVdiF9km>QU4* zR_aB!Ww(DEuc+>z&qnYi`0)HWK0Kdp9=Erhi-@NX&LCVwMu3WnCNjrJhe-d+k-&bBorVdDNxWk? z=o$5hxyL+j8Z;xGi^xap{piq)C?(tN*f(J^E!4$z&uJaHiS{%T%OmlnP1l1 zitnbYKYxIjnEvC>THK7qAOXVg4c`!sD}3Zy z7U}P16o*s%jAy_oS%rK|V*@z%j~F(qd|;}Bm#;&|$12}TN~2j@oGm}h5`i51Xl(8v z#1nz@^#FJ}eC@3*gT#3t_>TU38Q-dB!&^)uDyQGXK-@9hxgQ+=s3 zZ1f@+SSMV!tiycMOr6VsJZhJ-u2aGrbp3A}d`}@WOW!ZpgMtxO^-wGGU&dJFaFdBj zrE#D9UwOl0-s&nPwA&@|g>JDMLSrYpcw^R+2_>?5!xVr(d*0%dWC#^BPsF_dYs0n- z|7@K8Yl_SNo^6KtUqn_9Xh0|blWSr6pDaB8FSDBIAB{2kf5A4x_V3^PzuwCGA0Qs~ ze?(FJFnO2=*#Eub_-`N{_J1&W{tvhE*#C=G-am%u|I;?Z!p!;~R*OYd%~<3Sq<>JW z;S)?tZ?@!7!a*Gt1j)^+Zfg(wOc{qEJ;SY$USCQp-kH!{V_p4`?FH8Bv=vvX-_I`^ zMmh$br_RrRdw*Q59SrC@Ke>FhxASOjZ!7m?XXoztl+kGyW+No0RNDuXONy^iXqs1H z6XS%w&~5)cxxKT|&i-oE>C(BWXdw0eFm77gu7umz$UN`3na<@aH}Re3Xo+4hnmivb zAHI(`1Dm{DZb)64y7c1Y)}-5rP@Z6K5Z!2`^=hx^5AC5I#xlqGqwzYkKD-v;7z$ry zv~X_W&fAeie*tRg#JZ!i0&OQhwen;;k!w1W(tr*hLwN9eZX$cYU76nZFUv&|VJzmo zP{=r|McnR^^%P^@g$7GW#!er*Tjw8bV!}1}CJPKB-H8y@2VvNP*d4E5pcG+rIDLJt zguXSSodw|@kN)~l&G8O-_m`ZHLu)S^Qy*JcnYV9=xj6y9%rJi2kfh$Kc38BeH$?*w z+A_)wXu`a}9t!ihVf*&O?8=-~;P09%J-HhHIYC&MQJ(G(hVKXeD+LwcENB(7{=?%82{ zCD9YLwZnMu@gqew+0|m2BO4YDLP?|-Xa(CpYZm5X zlrOLZBo9feMj74^P1pWFA!sB9II{3(0*Bw*m}sn8ScL(n0F1geqf+>*J*@ zS#S{w_F{mKJ>Rb3^kD&$!$$z3cLD6dTB9j)6PW?XHg%(-dV!!Cb>`5`VRZr8vxZ6Qi*c#5)H~0(%yQ?dh&y29>Xk zCcB9D`2OC&nl4V(N7kCgAIW1wK>p<($=MIj4KY1p#&Fc4|3^1=oH)Or9iIr4$dCYO z#~gcgy$(+II#GLJW-=QFa>~LCp`tUX>5meXpyCJtMq#z0dm_TE0 z0x>gRXp(|t$gkJk5BAhZj&ab;@|iDhm2%=X1UK1DdoEEBIk2uVo;^tg0I9R$M{)>n zZg)cG!mIG${xt4^as6vz{YI(&qH@BE!(?H8(GwCCS$LR>oGprpp+8w?=|l9DH_F_S zdB4L+rd0b=C7{jh-Z5)u)&(o%!P1|D2)8Q@oYGO}*J6%Y0f!J}&0ER*+F1at=uYVC zWQ+y$PFuI|5a2t`5j?6dH1RrenE9)xBWzI6Spxs?3bjPN)KpVKD;h^Cf{q@~7xDj^ z1R(gH*zs9zCAVu;$#k~G%_y^-1+c>nvlIpB9=RQ~R|4Q%myPk>7p--KaRHL03UTU& zLoEytqzMg|w72FfR#;0fO)SXhe-rg(5poQhPjDTlZ>J6ux-Vz z%87GEo-K#EoFZVwdNGizPV4C{h=-QLYHDOZhT?&Hv}CcIumGO&jc zW0mCJki)P{_y^NrY{IKjT|J7GdUCS;5SZ?G-^AWOl5+Y@??E#vozsoP0R|e1ZK|6L z%tdO)g>~*|0CIbv>f8#Iu1dI`qX?!MF}(g8Ta6J031)F>mAbJ4^C19GMWBi`He?&L z+P6b6vXR2p?*u80w0i^457i0^peQ3Omwi6Hh8K`G9l-W#CC3l*5(0ZmqldI{FAyZ` zl-VFdtXp6>R$T|r_zJ^#Z<~tw7BQ?9vK%PCaU#BgsUws78w95w4w4nk~ zGSC80@}a_?%Y7+^OLPlF_f12dFrBfl5bS%6W35Js93+v~yi8PZ#Z(hXfe%z4qLp9@ zpxPobsu-pvBVVF_0~!NZO!YT>^Wg58dAK8DvY%(oF9ShjM=4zw@;Z!p5c2GrPZml( zK=2a&AzexwiaTGpQAyd|^i!gXgS9E)+sYd$nb-b{q)%yG^-Cp>plq01iMz?Fgxc^`9G%60aT#+&3g zS~B!*dXW3==%qEmVxNe(;Dor#LF;Crwk;u`%fKD$$y=oLPR(4I5Fjl@vadNOBLK?Cl})qF!_^( ze{jxJ?Zxo*tUf_B&v0DFr*1e|LG2K{6qJ)~{nX?d{1J&VdEicbj=FH=EV++MSYM#t z;h}~5C(M$xBV`m?g--tR1-~DND9Dy@@?qLZr6=2?<4%>KW4eOm7>{cN7Zll9L7DuX*&V%Q#A(7w6;5Mj6(OdFHbW_nozHWp{MqUi~`P(7a?HE*3m^GV=q0lGKD87yW*Bo%&vk_maz<~<+xpM z;{zhi2hSscJwtc;u`?1DDZLvx-qQzr+Hw zQG|Y2$S~AboEdyTU0#ZHQTfLfQ&w1{wZ45@)1LKT$l%0X^@TdW>f`&~It7=A4w=iF zIqpU8U-V;l|3P<>)5Im<^Nz92^C0PKDrx~qi6S<-P)dZ1cM9hO%seD~z~BxJZ{ z%WkIgPBc61U-tDvj6%KWb$(A^F7S6u|P?m{XBgIdU4^xINVfl23c;NdTv_5zRUsV z4@39uuXJna-B911~1t6Se(IQWzS@ zrftK(H|?JZNbr|pnN4RRql=?> zbYG(aHenzrx(YZ%ttiZX?2hu0t%2AZA@wNQkdG#E!2;Xx)3;tG!s8UX+Y6ThXkNP% zQd4pyuo!5<9|fiT?QAUBdVXeQrM=Q?ki*RU=_Cs=Q^y3&DbK)=B61Fu@MdXYSftr18rjD&mpwa88 zn-xF24v`3$u5c&|B<7$IX5H3YWeD$Mo(+e$UtFqm$fTXNP)U)Xt87!ek^hOwl2u*n z>@ACPwrXbMbsj}B4%2$e3IFX&l|C2UyqO#fyJv8>GYZY786$uet|zxJ2Vf^KB`Q#r z$Qq3mDad7N*MeTkVzko9HfslnCH*8}hE_&00rRj_m$Jv!l-ZBP)N23VkdWb<}aGWjD)YlGI{FBk}TC%a{kG+G?s&9rrT?`g9?avF_B9&tA9Z&JlV;F); zxr)!UKY<#ohH8T}FJhohX-5OLqWNSkawezGVwaQji(a28G;4B|?I^E28Lh936=gY{ ziXb83zyLDyXpVAU^L^o=k}uF|2VhM~8)3yPBww3>n6@dfWVLylUfVrH z-8wr9duxB(l*m|Zfl(ou>F@~Oz_&dHjc5>0CCi^a-oiz#LV<2tHfS6-Y6hf3f$jKn@(QW|*cg3TxJ(0N|p+EVJrQO|P{Lyp#C-n1OYM+w0Y~~8s9T$A5<^n6U zgzooLwGy>ti*&|S`HAe0UQ{*uxa~!@JW>-MvAm$V;1Z+{~F{_jX2OS1%ogK z_k1ZGZAsi|k*|5OdLP1n2U)*DlpQW^O#JAmx^uTKy7?d!i1#`r@Fcj_Z&tx@FAPN# zhJwxju3uG}8VceE*b^I7!cb2?fY1iuy+OVV)8K=INFPKR8@!Jy!VAn%J3xjs?AO%M z%^1~FU&@_J*f3h}po2)c{ZQFksTw|II`c7LA(T)gd;IdSx8s|79fie@sSB)quqAlQ zg)e}~nRdR8C&q;jvd=A?`$l|pwxWQFR1bd#?L~|Dcsp@^^o-Zyf}#gW3{+M9ZCI&S zbTmDd-1+O4s&tC09cC3p6Q+(#4emV_$6{Ia021u%(HC|Wj}VnqX^h%I!Z8h0)#ViE z@1w)^IctEPmG91^gpbNez@;l$1ftrvr4)(BiUaWyhUY}?5^8b>dV9DK5Nj?@8i;ww)B&2nH+CVEna{b_p+Es>A#wM`pwY(Zzoay z2M77Ti-R!#iQWHSPvf$({M+8^>alB>M_y%7g+#P()r>vd%9kAOCCTV z(jl{0yHTO7Z_hVM4*4PyoQtEQ*jU47o(+gS=EIpbrwE?xg~Yd0S_5jQtz6GHNFgE? z&)KO0mDgTQCWSdtT|qAn_lX{y;UY6h*GkK+<5!jh>~GGuks?nd_xuQ3<^=ENh>-=n zs|80rTJA~T4Cc*dUKAv5%hTH%Fs+91?&~gQ-WfMCO*4GcpvF)>HR)_V<7w({1FcL$K3O_MSIF4*$H}{ zL9fz7Dau$hKhe2i(*j(;T>O6@;~+*l1Vb)|wAL8Eizj3+;r0SvK@1suHT6Z;eYA!u zweKkp7Ued}sZN82BNd6;t;|4%h6g2YLhT7O;1_JX{us?Z^ueVkI~V8 zZQ<7n=mo}wm-T1dZ0`c#a8PvD==UGeP`m&Tq@XqU#D^6Cg3OV8=b~@WiJRecD`phq z`Gg9t0=k`Crel29@#>;*=l7i86HILr>Whbp7>OOLx2(|OL(zTLUy0hmZ~2(? zvPxYLVUN{VnVW!Q9P8fJ`Wa_kxs`B{2Qg0~@(q9`xiGs9{gqt%Tlnt(03po(8FBsp z355Jj|6x6zunB+FXMYd>`+pw1V*XnoA1m{}^I& zouQ;X&ikPH#b;2u;&pogAN&pu!Vq7zAEKK}kK-u!Qr8?8e&vpM<+ra7OyRFoh+j=> zDd4XWXDrjFVpf=(T)kL6S5C}D?P0WbX!JX;I}GsCNG5*NkBuZ*o?Fh{203T$T@(iw zpGlveUl@8_T)#PB@$Yas=B767O|xAY2WysYm2-+VvTO(adG`8uuEamCUNk{?Z!C9>E%+3|E$; z3NS0#sS5ndH)c-RS<_nckm?exA4Zof3N$GLL`H`o`T9}=dOdzpYm>q38fR1!tPRQy z`S#Pqt`Xx4%5DCsd_N` z@c^#>!V?C6LD*)R9XbF>xdp*?kuc#5SYGW2E>sWiA*vzMJRZSN?6!9Iq9XojIbLDb1@)k}J@-Ajw1IE~<0o1ZZTH$yxL^>ICd6A;|l z_s2(BY36d=gCJ@RSc2EIa6kBwECXS)!W-ia9_Bk$zWpSMHD5C=Nv$dqzj4~Ovw=#j zn*g|2oaSuN%)U4S7fGKo&GIamgQ|Ph;$u*DB$#!&5NQhzstp6N8B#~NhzO?o**u7< zK(x+m6)ZWP$fRZ4F7x|~WB%U|4amOtUK|F!bP!p8PzZ+!m; zHRu<&iIBf8mGdIv{2FAH;lHRsHWHZZSvRoBkzR%<=zC4}Yk9d3jI8L=&1Y%woCpt- zS?$~9cBYtSD{M1*4X>%~_tZI?rUVqHk_!mbBlfpKK|5%MZQM&+A!g`p;Gx-e9Bt3k zCBGs{S{?)zb5m~>51Q&1<#Q63JLdV0jiFcK62@Ch)@4UC2M$i<21Yz7bW^&v4^JS3 z&n$~-=*rcNFjbpA8-1h?eC@8VxY2-&?>lW>iy`KRB20?x7TvGCOm_BCO$r;1S?kvS z`OxiVhy-Cc6l0P+g>-sd}~0eg3#$}Q*#WHGEd zW*)t@MpO&X2KX1yDhLt}##KmE*n!cUfhq!$C-?)7m`pg1r>Sq29BnXfX$E$PKK+fn z=?0#>P2*cP4o_WXA=@&)$M{p=vZTN2s6Y9e{I5HTnd9H(VD#AUS7YG!tFa<%6T>bE zOU}ss2Vum`yH}C9XB%sPYxj&|CEpL*{LTM1kt|g!wXok9@pWyiMg-B1eRzwxQu@;^ zr)keMNL<4EexHJLx>;Lim z$BvoqFro!Kc*4-Fh*a;0DZwWRrqo6Cy)q`d01YV03zOjXsqCH|5TsB0FfG1^olkIG z|7cpfxVK6A_QVptMm)OD+RGns;w-7bIABenTV3=`!2aey$ky_##|7xXOEqt?NI`JAn!fO3g*$Egq{@`K_sa;02DrnL(pGY>5FKm*z6q{q~A?y9)unQwo zt0Lj4iUOBP$Ka;>rD9w=YnVMIpBlja@^ya91n-6W*5UMIa-q6XSZhENp)HNV%^=&; z$5W?*NGXYC5Zx5R7-JrJ7I{8eJ;;rI(JmX)2XiX}_Fnx^a#Ql3hbF)paYb{!eeEFl zSeU5{(vle?Na161Grpfa%AQe34PuwEAXru`QcwyV{j9mK^O8m#mY#ud!#1-ahJ}mKdlVx-DhISnLk?sl$q-X7lSI4CyZYblAmNk>Yz*vCORgwW-5Wew^hRUp*nZ z%tzh)*jdzfU`zd*IM(*`v{AS1(|cWO4;9yK#I#LSX-3C%RR6VEXiaPb1KGOo#l0Si zB_cnruF&kr3%1hbxeHihG7}d)7wl?&l3|oXz__|L+RBTc<*9EKF)Fh>te&`J-L-h` z%al<0B52lDsZBB7hiQecX_Cs&s8?9>-?zg>1YVJP{S@A}#AQa{7*^X-^bbp&;M03j z3^6TDFv>uNw?buHm<8^3(v%{j{4S=w=N@%P#9f1AUzRstlM_WLWJ8_&T_yF0!7WTr zA>z<2_0tl?jnRVN8O!{Y$PMZ^_em=HyiysNQBXWSV!Q`~Jo?kQ{G8a`=NeObc4?)| zpCc&sQhN&p<`m`VeQFK!j&2@JP3&?V8g6$tXSijAEoRl9e+H;~uCT9s`z89cY`UQm zzE#kIqj$n`pFM1kOTBvj5elpngy}c_g0c|QetU77zvlHmv^MXSySJ|RYU#PON$mCU z{(4pc9U9&t`5sw$6Y+jf{!@N`CA$BPY0m_B*#Bumuyg%>_yLr=zkc|` zV!p|A3nB%64CCGDKD_iGq2wSV7JcD*L`Dp^)YdaeHDJ2DSo=n!5%tw_W_h@~ID==q9H`p5K z&k@d{8;@J)C;yk19C%&b5r!LR)Rt?Wn8j!@PF{(KD0>!bJB`LR`ftrAraS#1$FF)xS1;v-^>bbg_Tql^4k3|U%I_&dS43QGCjm4lxvY)^=IIJ%V1OT=m zef_iBU-jsJo*?;$IOF2v_*ai|va|i}QbxxAs!vzdw5&)Q;6JEe7WvCbLr}oMfMZyN zLbHyDojjOdH`P~r5Bu2h2%}!^@l6NeP0mNj4~5-aI3x3>t}AbGC3fL?^LmUSO@pQo z$xb=-kHkcCnDc_();@av`;&TE2B8tWRGPB#e=Vgc61$5HpV-V$p8?y9Q1^uZxVH_TMkR!WM{mfN$+{kBQ+DJ4~k1h zr-h2i3P#6+C*BKE!u33rZ-KlmERp@~`WJQm1lkPsUtxdf5~MGXJg6GcpxhjuBEB#D zZ0l<`>rEiq7t%}anXYfzC{XmX=*}?qqZ=nU304{$T-9xZIAK2P?zpfkuX^J#dmN$| zsB|$a>}eQK;*e>0n6S#Qv~o#(iMF!za(REg@9~M);BRetdl@4k0g`dK*}A%ae11B5 zTj9D`2?{!p5ilrG3RT1AXiv}3!u41JuI(y_hA(CnOzK5qKRg&BCbXL9FQ=WgZ<8M_>U5Cs#w{IWgvNsJX$f8s1$@eIotWKQxL|v zraP=nCb?#Qb;Q2$F?HE-q4M++O_Y1KIquK#HG&psdq3h5n_Il!Vd5|;8DurHTBWJ| zcOoBAcRj8q_A9zDw=-WL1U(G#o6 zTHNe6@js%rSOdOTN{Jkbpi~#Mk zTQ<$BtRnkx_g9q#$`KrcA1C}@Rc0t9aSTLq%k;`<+Q_wQ-IMmH>`N!hpEVB^v(*AD zHI5v+`j}&QYk5O??>youhHHmvM`CxIhM}p3SVn3GQFm4Lg0Ic5Pp?T`VE9zDh)!Vj zJ$%X-qVB+J+6Cu@(NpAZ*fAC`qKg4^gOQ*_ngz-8^9=WZ_HXAsg9tWZ~!+?c= z!hnW=z<`7RKh+8BQQb-(mU&a1OHf4pSdA@gg#S^=<>}$>pp5V0?&0q7;`m1Db@N`B zS&8D6Sn8Rm<(_r1(cw1G_HHHs&X0Sk0L2;eyd3AZ)M?wMXut1Vd>iAh@ zL9)jNH)2KBQn(3zj~%aJtMNz_Vt~qAj)h{RJb&9YE4GAP7Wd4lSAeU7)p}&FFDjy^ z-#MJrTCard%gEZ@;GOS|nz+rNN)ab4x^>&JE0*{#&fQ%a>2_vw#F!J2)X%}f()`xf zz|9%8IJaUU+flKV+)pL7st$^!NMdt`8^^n)((T7(is^Hvx71%Nb7B$G-4DwG$4#-? zLZ(U&cZDekxl7rMeqppN=P0GdR&qV1)T-Jknn{=3mwsP(GUZB}B)pEh#zmkg74r5a z^l`=e^niOJB?}jnJsQMJxJjal|}8Y6mU^;si9!k zaabYBE#5>Gr34RC5@6N-WXrc#K3Mvt~)}QnZxxD3a#*K zF1(6g1JHmUyDQva&J?n5-T0{&TAClWUveTiP>waI2R+vdA8TR1{)b)8FUpjjt>v5} zJS-*1{$E^Es%Yh+3yu_8PS*|xbDBGmx$g9i6>CEa>F#STb6_J2d&8?`ubHd2aUXqc z5i3b#mZK;fhBmmhjo~UK%$38f)OMI~=nWqdKfv$Qf5@Wu&hVj{YjDP6Eu--w=7O8( zxu+3YO_4G^Qvm|~GnM56I_6s(M!ppv0+%1#0Y}S8f@WN$=+o*v%^&}iZx~aitk0rt zyI#}gVD_^df5>%oY-E}{JrOn29|4e{Cz>9?ITLyM8aE*#(f5yl51?0HYxc}FjZ8-# zMBF~8hgTdIBCXR3qXm_@#qh|J2eg9~@{k&wcPH#hM~DkCQbCb}cjY-P52eG$^5BxU zT}a>A8|0Tz&y!&~kU}~aQ*-n+=P4(moy3IF#PDp8@vcQtaeMSEW}o{xEy9Abi2JgLMc^dqZN(7UWBe-7`~uOKXqyI!xgI4D z+EGNFJ_V9FZ6)BjlR;_)=eQ&H#IyuU{&6PjKXN($%8?8ooS#oyU&GUANei{7+2T>3 zb8NcK-7&s5_GO=Y3RfKLj>xq;V`4-fm zNoSxTWav+%>qn-OUVZ~vC5`%auP=VDEza&vCS--ON-kuM(n;=SOzLJx+GT;#OWtLQ zQbg`XMCwLB3aBb07cxPKBF9aR2^SZyN&(9kzf1g)OW%d%6mW>ONvWe9{pWtEJZAx}i3CQA~-Zs;?;9FNSfguzt; z?P`pO8Vsi-hT%{SZMZf$Y@I%F0&QbVpCXPCB6W}MY1JV&Z3O~sDaqVT-sHGR{ftGB z`9c1767S=xByQRi1lWQe-6KX>*Kj4`k=JPb#E+G->pJkjFyKIcU{wItDV;-v2J<wh*q9WL}OX0WOKbeJMc1X4r?gM*tS?L=k&B>u_{okVOQ^-iALajzJVUSVqp1qcIXq^ zDtd5Sma3DgvF_&AQpt|y(^ARyVW>c4ns`3Omfq5l7Iw~-M)mhO15J(bxqNlpO&57Z zYTTHnw9=9Kdh6`PZjT(v=H}nIX5LcCT2(-8XgdAM@pT#eL_a$H+%a=G{S+X_)U(`8 zmnT`%j8`gI-3(_oT0UGAKdi~vd|Dz|QGZkDkgCte3OhI!7&ZnGG8Py#1{SbzCQ-TY zUi3p&I~(L$63EXR6Of?&?kxxoCE*POrmPGU3Pto22n2$N69@!Y`+;|n53%MzsGes~ z8ggk_+lg&a1HPtIh@EwieV$sj>ILJp9ek;QNDV_j($`$3iU;*{9Be6>NDWyZ)7M!9dyZ2l_o16M3oB2(aC2`LzOY>4n&ncYYs&F0dY|yR|Hg*C5sGHl_?7x6bV6c za$=kA*3q*ulMo@4aW+(_aR3At(uYq15P-px0Up_CB(1@rE6{*Hn}ZS4g5V2w}EfAvU~{5twpfge(nvmU_|UVkco zoWdbc;@N>wsayPFCbC;BLfRhJxwl~um{4jg5;kwzd@QR}LB-3OU(y8rjV_Bp#sNKB zHK*7hPL-ExLia>h#-XF)@YJ1e_vyC#t7CQ_bw`xqPZe;b;LT}h`c$M5B;C(l=){du zzLKQ9DQiiR)&?!~!JD>Fz8o4~P>S6HbT^0}GKH4+9e!85i#kH}_AE z$B$2IP8a6{p3coKuUDW>?X6y(&(^Qo0|5U`J4#LhtzON1?|bKlE*~?+FSnPEePg+f z9jzap#GY=ifgkR7mzS?*7gi4!=jT>hAI>+h>^?7L zbbb<>i%rei%)2R|Y_mem;qs}c2;d#KG zdG9}m$5X^I=3_06ohH#>(Xu^TZ?S@27`jrgVZ%0XPu&f0qE!l2$W^8J-H>{%o^M9c zqJeMbI<4v~xjsd2g~ftx03k=lj!09!pj^Vrt)QHK{az}Sh5&GqlAXC*LFNA9y;SCY zr=xf>e|&*O&qFbt1#Ww#a-GE^|CkWZ#;^&(GCSoryIC7??B%{QGN57{Z`r4CWT-JZ z*@n47D)%)-uTcjjC;s~x?_U@0=Y{XV^hX_d;S|Mn!luo&`{~#-8oy4zV3zV|8}+Mu z9Od*}hoR*WIQz|_K{}SPbnMFuwKD02fa)3buR?HXpgF%?cSktP%P^cOLn_)FkB3nq zY>tN=4Y*(3q%BmMEme;{FVXVMt8}DR)t1d)d^)8qy=zHi@a$!gHm3Pqu4XX6ed1Jn zDpI77Rs%RiMt=Q8_CwSg7--43k?yZ-?>~X=BF^>(mil%?EPpI{WcUm0=^v&zCkNX< zO>rhB4%Yu{iu)^TnBj}Uz0uq(^3OVvhVO%ZCMt;g48vx!{+U31Cs4K_a8vO4!mUoJ zR?WyYK1ih2Esx~rR6Trwm38k+E;$t=-5i1+4a=z*DVt58s99B9k~Q#7PE|}J{9=rM z)p*JmSlUI`Ad6zLz%%io*RRu-cwBRzaFvANPzx2i5F^Gfb7P(v1-=Q7Rpt;d4+M$` zLDayc3QrvTw=fmt6h? zY-leCUIyn#4PyvwSKSXj8gjnas{mZKlAK~5PI5TO_CIp*= zd*0~X^n+2Dz|N7i7^)yXEG$TjRmzXX;3z^eApcRm^_zGiUevx z5m@QVQtGm*;?8hA0QB^(o_X6=&laDdPpIEa~BG$>ZpwW5bLh z%}3^yO=|L|Eaw2hiMGfg_B272HvyVZML%DkDSq(b(p;jPGDq20W*T;F*fa_pFFe-)|6U$3=2UnHuC- zyV-t}$bj)WzK@b&egkvQw<_w8+3=v1Q9;;onz6<=uq5v&X}MJ1NN4G^uL4zM<>l4r zq+24b%$rrTa$JuOW`WY0JZ16Kg{yCbN>e(TaoH~P03}hlRRvql{$X{ysaGxWNxjE- zVk{%nh;BVt7LAV=Qs$(j+NnF+RB!)Y{q%P-+SG9{U90@ylTvsqD$Mtlh)D~ca~`bC z2_7+;#~lP)uwjF!z;o>&R=Z7B!KF3Ct7#S|5@|EKS6ToBCXm*5q0v_Uo&5Xs0K1 zYk#j-VN50GT!9iNhUtkCc5KC-C)xA+?a5K%iWh-^K)NM?<;D3&^T*4P{oAGU!vX)e zhrc~xpq-c_q3l}FR{@B)eS_X2L{bO#e|*w|dX*tNU_RyrE{opqhl*GC@Iqn zb)`H0HJeOU1ik_EV)f;uhAdvm`UAV@i*~Ree5bAVi1?TMicRFDPgSCuP=Z{YcS+PP z;E1Xrf)Rqyzq4?$HNK*GU$w(KF}&R=>oUH?kVJt*MVc*y`c1lnbyJe*i#t$c;{^zmkK0;-ma+ImpiXPdUiN!T8^ZL8Xxr z4Gy?Bbi|dZC07+@e?jv6$sw{aME~hPDdFc2jhGb#kQ&Hfcumo1*V8r+mnCP2N-qDZ z$D}Z_eiT|Wq?4!vY<(bJR!R^WqE~J3eymc2h+gavQiKmy8-7w0OkpY;vmy}D3E7E2 zRyZSH7KLu=9`&l@q#q;wXq72;^kw|7;_7gTz2#e|4ve9CiaI#NhdsRAcJb9U2%NM+ zg!R>U9S2;8*{huFT*#2@5sGlb{!d>zlhM8r!OBU84)=;9mJ`E12kW95ld@A5q6_Wi zL{y7|&`l=B+4&8d9_AO7`DkWIC2&(yr)Fb5M~jpM4aWj%W+o-&T@?!b{?C%c-!SQ+Aa!2^ox;b5i5NVPf?pOm}hB ze@E}wP4>;@mXV@}7>+=LeifAY9%yuGl9p?mSJ=)RrZ}`C#zf+m&Mo?thwdkw6M2(- zXrq{NKL+>>qzrWef?P;4r?dCBuZ(u}8KY?LYVpLgVtUN`HOx$x3JHc#`_2#NcPmMi z4Zy{jS66rU;9W&)7nKbU7blAo12+7c2YRmb2liYCBTee#cea*^H=)kz|U7gY1M;3|WZjh@2A zrkM_cOG3|Dm@@=+)fj`FEF7%I^9V6V$8L#E7ID2BA04ZAGBgEtHQG zVmgSIijL@M$Y1<=5oQOdYu)|1j=f=fJMKKh^!Bws)c$t-(Qt(aRR&O}J2J(Csur=H zyvX3)7#;lSENH^D`ffeBs3GHF{L9c*8;cp>jM{rx?X|(OPiKH^?OD1?yz@o6%I{Xc z_6~n14!%M-eLSyUZjILosMrb`6W@9lF#s(AS9iD-wx|W`VtVld)hNUWnD8%jxW8RL zGze&AdOkmWglZ*QLBcq2DDcP@t;8-LJu6Q!2@p}^*n8ysbgDhD#w;&fIP@+`jK^=S zT=}`&_2Pk_eWD=jur}D?^gLn{o(t(v*FVKcWQwN|MB~^7`S`AXir7XlyF_TqSET2b zCR}D1o*Se*b{&1hc=;Q?P^d`o_zTg&`X^%5-xeJJdGWvSDJEuC_Wvw9!jv@3$N;i~ z<{kWD`MCyuq&tuwP1Shu-eM_;H7}plB5Sq#e&b;=H<_3RKOa#jgKPRKx{OAq(QG)l zg$yGprL3#&J9F3l_r;jqG>P&mGC8WMI5D&Y)H#IE$?mEYWpE7h@~%&TP#9+Tyq9NO z;zQ!tyqof%GTC{HlAStm8J~vWszns=tNY~9FXK{7LA^|h=e8CUjCvKM+alXw?9DP$ z6MQL%`*XVDN#l!?(YU_pu*cwzqr>LW`qvG_B3)hMG9!hT0hg4<#PLaPEu$4%QNi zP`YtncfXHM^4A~H(A8a#UaS(IAPfVzeI#nCTYQ!-RpCa_56EQ&9pc72SM6y#S4{xN zi}G!+g6UYUPk#<+0WXHJz-JTigHbToVq@lBJs+;6_ecEZ#b>lz)nd^T;FZBa7=CvTO9%}vi&t{?AhZgodf6MUuw z1W}IXLNmEw1kAjbxKGPFJz5PLo-WR<77-4^(RL;5dsPqw3J5qit9rv-I_YkUXropz zmLBrpb4Q_RS==7c!af6WJ$TNecBC$njC;)Z6Q#l~TxB@Uv~wmt1D_6B%Naomg4(GX zN1x*rx-$Et`ct`Dbp(3aQeR$gZ}%J@t_^O?&zCSImn>}lP{r1gl!&uDAD^Cvf(Iy* zB94JeEXOR?ppPXkZNe?h;zr~WbLmC7!tUGp9#9y9oNK0Y56|5~FUT^Q%P!ae#Y+#{ zKSGUa-~wU~Z9*C3O7BXljk?*wG#~EU7EAjxphbV+a=hEtwPU)>4YFisncleR*6+-B z0d=f(+Jbc~35EzFbe7>#2JzM6ck$KyR-X7|_|H`$HVMR$2M>rI_+*}4WzHSJ9tLrI z=s+HLM{Fi+!5+kZH>*EL25dpg+l;t;-AF}`AS6q zI*KF2y3V$j{5YnB;+^kC_?+WVQq5z1N0n#$yY<`qR%T*{)xyg`&_JO;#(S&AMTQoE z*GB&nGnm6ub$7+Yw&L0{J1K1k0Se*1=!tWHjvjx^Xi(|XB@?0ZzVM(sR5Bv*4YJZg zXf~l$;~7qh3F;n3`O%uk4OPE&_2Ci|J0Mp8D z(Eyi`J6OYz4vG(s4~BQMk0YM1YUCyXK*NK~+M~3EjI@&;L0%=H0^tH712TX-5sEql zWa&VDt8=^fb$&$WqSl3D$ja}iuSx)u6jtQO`>*8bpZJe|Tb{E2i|oS1_1}rp1Q|08 z4x~Q7{x4@aE-Bb!ghEh@aVTQh1!EQZI$^k8 za$B~76PSq%k8+ZPdMryctTs#Zk?9udgX$KF3z%!%6pHd!I9%rf)?h;IO)6yb zPRV?9-EsZCe&(gBqhvUPEvdj7V{&1Yn!yA{xoUQa63RlMCh%cFi#YOMLMpgv-rOdt z#c)~69Y8jW~z#o^x+BN&Jp*;+5s9bgYf z@1V#cY%X})3To!=b#9jp4vB=aUK3=2fkPE@u^uMR($aFXt6+Uqr-b$6$fkvRHwXhO zP{tZtSg-OaT&R?}u!hERI$fB7?_cXbZmXqR1uohHfY)bcR#WzDWs_+ zqzdkW(c13$ctk#F8)~l7i$J^Zg6n^Z;@}0v z1=m-2g+zVFQFTdaEv*tZ9gD5+_O50K8=N91Ttul@F=L`TZ~WO&^fMSolPn~MDx7I~ z@1i$voTeG^nPjq}Cl8<@Be-R-I7gif?UN$7l=xQ1n~sfbMw^a(^!P;_H#*lbo~ng_)|_E$LY=5`o0-BZGNN;lHVKfthnSUX*({z|C)iT(Tch04Du zCrr!$Hr;=uocJquh5TXQeRS25s?`&LsWzV&CLLAiNBh^IfdnvzKD`pCUDw5FuJs9L zxb5ZUl4vZ6H)xt36^P)BQgZ7UW)D{>7Ku-(!os(fd{2T(fNema2?*+{|D>+t7QL?R z!%lHZ8IJ9kFpoYjp+*da49?kk41;&AEb)`<5t-5c>5jQdNqoe(Gh4172w{xbCtKfu z{qfU%TBiD6i6gi;27~mp~c`$;5 z-$GI-uXBLuVX{pqb2x}1$+SSP!AjVPCaQsa%w;u@li)6weau0pkRxdTY`kvth!7Z? zbf8m@cvSBqc)w2=ps=9YnE}a|SvuK3y^%|bI+I`^ztFgAXqki}a9xFn2|0GlDXANP z1;K4a)yiybgMdQbxA`%NqMY&}qm-ya;LA|G#eyM2D)iW}#Hg5s3W1SSZ`ApG`L)$> za+vbZ&uXFQ(x+lR(|~z)m)ek{Bdfyp>kj$8=4UI0z=&&2kIl7e7Xroqa2GilEHVS$ zt!7Ra%s3=xBbvyE;0!Kb4>T>WI3!oj`Vz8G?zimq4cz?Wi zb$g}fTz58winvCQ;wXl4YEe#^HqUgVAH)dH``UxieCj^ zo@Mtv)tpRoZn~+;xicmd#C89(1nU!636!^#8S&c_X^N>zH+-%u>n+kN zYW1P*oS5YE0M9+hR z0Q)kN0Q^%={_;GnO{2Z~ebtxT^4nV)>sHV#7JzT(AEBC>FybP6exfZrnb)`3`np{m zbTGRT=bo_eMJIDFjuOxiB_MTy$z*I_!_zIJX5u>K@SwJp9MGcjcYCwx6s8fY35E0e zY?Qa(tpqan*Z|+@@=aAi18{9Yh!ZQQi4U|&l4$F->U46>6Slv8e{(|J{;Gy$!vU4d z?_ZlPos-E0xQTY$;%3jZ4J$Ws7N`V?U7i{bcDzd*PKz?uk*=-0o=^Ap&pQC2oPm=; zatdc=`NnS>@nq+kL2@8<%|bNsos00~2|{`&%{7fx;Ee`Z_T_c&rGaR^jlkforRNOp zL{Rud0O$>fx8s6;9a5ybzKXAmoKjU!3APTS`mM&JVm7g5qT=V$r-BXliMM-Gjz0R} zBs$$^wp(@fiTG<2GDpeYgr9WTB^wtNjyGFKOk}zehuewerE4f*T)MWsyORNk4JkQb zb`gts)rcG&=IUqsC33yIu9sU0ikII*KJ6DngHv!{%t+kJR(>_-PTOwEbWdy{`5K;d z_lj>iU+0TcGWSyjG4Y0%xzvP=jo&ada%Ftu%H{>DeVI>Jf3cd0oAzrE8T#snLiNDv zi+=A&=DL>Zwe9SO$5R6kDA1H2vHV{N&Ob5b|Gwb--_|W7(|-pLBuqq*vcdIhk;zQr zuUut{mBwS)2&$4Q!Zu711kR;7YSV{;SxqFC*v|e86|7akTvphN*py_DjegN0`f!14e-N$nO<>?r1vd_~K|l>|oE$&b^0~19c$iIq ztv8QpE)->M-|Q4F2j#<*?CzKY+E04saCbP8&K|Pl07|I8xuT1@pqsXod4sa-egc`oK+O{WHWVb(zM^S3faC&B;G4)a=S)_R4 zqJ1ut3fHZHMK{`7JShXWO`iY`*j3gl0fy7{+sgxwzaNLP(js#ab{*KKT4=dBe*rv3 zMdylB=(-f4Vf`oX>d!;kBU$8C>Ew?vBz}B8sW4+^eSNoGzTqVEA#|9Y zl)KBl$t~D@icm8oA%W(H`}bl@h#6Q{*i3r1{wFs2oXkoA4KMfSle z_qUb1t-ZUE1&tTE2S{?w1Ae{HMguinEBx(*9wX8%$JaRl3+fFE(cG(!xAC^uNZ94_jEaMXQ59563nNClmeMa>B za~}IBCiDO!j|DTc>2Y*#k!&cxXye_o_Ut3cvH_jogYp6HD})=!nfLsH|1pe=$}o|U zEQ&Ej7+Lnt&sT^H8aBTKA(^ZUYma(@g9DCB^(9neHov%`41^^ZH3&AJvr)y3*+1lr z8mN)uU&)z2t^N4>a^_!F9}^>h@%~vc8}{269&b-SNt{ zFx3zJH99fyw}%XURS#p9g+vD7ShxMO*wtjUba~S$E*KdwI$bD5DP%)poIX>!S@38W z6Vcu7U&Qs@!#~?t?W-oy|oG1~ef+GxOlO zJU1EPUQju?2toQPerlIx4YO5+7b_1eH&M=aCbc6zFyme-594+2$dQBLnq`L&>h*la zgAOSLE)inpvh*{wl_QeScg7LxmCkjb1#3;w2JR^f{~Z2mL&O0b0I|!C4>`CNe8-5& zi9fjJ4QeKqHN+hyBD?BCdrqWYh+N~%3x<=G+8u_VA3!o+=meg+EiNz2#9qJ%-a6z3 zClkZvVlFi^@3B!_axi62BAPLy zAVE(M+MsG1)?i2=7H2g#5oxtdMHljY0XAoKE)MBcZ&Wi0?-aIQHm?WkRHP!)K%is& zv9MKOfL*^bYxf||GPKH~845<0Hr8@Ky%9U@s{c_X*uBgB>20&KjG2pFGbJ~vqLs{r zCZCsQV&1oDPqHVS7(#NbSE+i9nv0kivWW?+_O}}&59)IEq&KrZ2mSy@gO8DynT^5@ zdcek|ZG0N;?XAu47tbFnGfxMprCy-BaFxm$fvxoDE1N&U-uN+ER?hbdBegozGuQc^ zb|O&uR2^*+_bloyYCTfpEga2jo5z;fc^XtoUT)XvmRCgFI*hHb&hT^F4C)@j?hB^Y z+16Y7AzAJl%_aW(>*H`+tMs{!Ep-gJ?pNKfzQnXeCoZnAJ&I%C|l^Pxl zgg^)MAyD6v**ws5g<_{)k7Wh2rgBjeN{(!!B8giCzzByJlAnT6m~FiDjU)zHC2u4P z@CM_eii=lj^b0H{S?A;%43?r0;%RZGvt#bqBS5i9W=)sFtMv=ku$Wp>GN*L>0I5Hs z6R~L$Y)Ok{cn#(mOJh8S6i4AicoPo$r6@hlhUvX6DhzyRwZhFv21;wtQS32O5|8|E7tzPK4Vze_6#AUT9Q zNbr*rAx;J;>gj7=#viVlNDT2}nn*#AVl7o_?AV}H; zc41)`L~@Rj1r}H`EG#(-NR}u`vXUetS%OFqL^4Pg5Q!2c2$JNt_yoPr_4(eXZq-}w zKXYLhaLwo%P*>RDa@NW5byGGK1=s+EUw#%hihu zZ6#8yzl|@SwQQZp?uGq2*?Y>~>JOpl8O@AY7}u|m=BM3L{~T!`f7B=Wf>6QxbMDo}Gq8qxbM4G?QBax~bEGM6 z-Zf{QUc8)VEV@pzpNCT-#`UMdCh+e{3)Bh z(edENuW8j`rE>04w@g1E4XXoMzC5Kr)h(8O$B*Ya#Ua@`Qj#L|lJAAeGdQV%bxlyp zv+9r{m4~mxr1_#mcI6z|>0Ze{ADjSHI1a`qj&U-jH(tf(Cz>T}r0T^yA`(sQn4H%p zf6YwYi+PgXT9WOKQ-z;G-D_jg83J}xumljd9xx=))Vc!ewc~!311UXA>FJ`0o_8?83H0tjiMj&?f={^Xp<5=} zy~&~}lnkPam7TXmQ*iT7`_iTlQ^*=-_*m6?PNvVwUnjj*tvjhh3Otd;lv&`HNPgg! zVWNn6kKHN?TZGMLZ+s7##V7{b_Kc+HJzyJR30@L`#|1VzCIYT;e%|MY?_AaSN?B@_ zh_av7%`=>~C{D1QwzH=*zxsR>a~%*h1@jx3y5?mr!=6rbmiT ztvVBK=&7ADQPH-Z*w-OECr#hRCNQHLG9zsjrO*&kp4oW83a#Y+c3Hwvi zTMh;5ksE^WaN@5G-jRA~d*siX>Gv2LtH>2hHS17@qLj zqj~(Zy66}EuYg$gm{ZTIG9=Oh#4wus-5C7F1l|Z#4BUQ!z4Ny8aHun~?v*M%RU<8K z{T}fJO(~itJL7TVn6?`~2!GC#f3PWOL0jCXd&4%W#Qx~yK)nVUzLUUa z>%h26=gK%er`eNYGgOjSh_IW|=#leLs{U}EaB_KgPc9;(^^7J=^>(R1MV}S1WBTPG zYN*>T!G?euyNUR1*p)ReoR|zVoGF5RMUv|#%|@Mkyv6B>^z^X;{%HY%Se}@>aFlou zKb9*FgY5hWkAt89T`#gVzgg|<0sTNifZ%^Hiapd(j=V66aT(P{ zF6+g!O_E?<$-~yLvZ~_JBWM?VkWY_CZguYaW#0Na^^vP{`PQSd{-HRZ&AMxKvt#ig zJq}YIQ}(rmZU%(6Y4&Gn3EZ$~+8nWH6{yVlLVz@Is`p{-u`&V#_N;TM_74Htv}-u~ zoiG9`CAf*16L)rJ&(P*w3D=-BDwsfSx1ocT=7vLWK7m6?K6zh7RzV&BYl=Wks`xEA zOU)?k$C4 z+=}HJ_3aFWjv z(cs`}f(VQl3PPAy^^{a7+_c#nL7kJ+O4&H6G$9dY&)~gV>B>^+LyF|ImM&g2otOi5 zITi`9z5QU42wLW~A!1gQq5ER?Jo}#>+rvq-Eo)^1)%vhm@sv03P({!>wdvwr?b8Q( zy$kcHZ|IgXkB9pEd5+{;PfQOa*MU1o#`u!m%Z-~R`gdyfPW&@`P;a{n6Zb}oPg?xW z%EZmqW;@QgH`X5~nsANzdHNrH+Fj_IJ2YnCMT*b7pFMLrTxnk#EjXE;W9?QnR^%dU zv4)wDZA(5PJZ$eGHWr(^H|x8%xs0tE(mZ1X_4>3*FU!Z+jM`rt5{;R4-M=H=IAGJN z$1A*k*|POR2~|2gf2?DbMmwGO} zy>tsJJ;2`G7~yerG{1lpsw0kZlDND>mAEA}@Utaq=**%LG&>BUQ4zvRYA>~wuEBcx z-;~vEJiLvQkP*itd*-A9v6!TmhiH{iur{t%3RD^xy2)s3aEj&_L{|zlEOChDaE7iW znz}508fb}a7`f2y) zKL#No;Gfembg;Akd*Sy0?LJ}toBIT{K|C9EQgFz{bgW`?x{}yhPI0n2ARg^Lp;IaA z-jv}DBktyKzLAj=i-sWxLVrO`Sze4<4)>_MHmmg`qM&*m}dUY}iS1d9uM=WxV zMu{uTjq2pus33BhVCs0hRNB-q@3y38o^A1(uRqGj--W^hIwr}lDJf-EsG06O$YbyB zHxj<$*=8C)N}kFQoLP}K25L+)gn~SrK5l)$UUV?wRWqd1wOEC``qnYU`Y=l&24FeN z0Pm)JqCTDS_g{w}zLz zB1?TUefogN9Aa*0Iok*4jx=2?``O5coi58Wn#R3UZ3cf(%MDz$FH6tiWvUxH%tvuT~pi zo48)3p?=KG15?P#gK=>9Ce>=7FJS(6WqMJPC)~=sHd%Q!9BSG1D!T-Z zY3{jZ(KD0jNflzVC(g$nUSDBOLVjYthlkUQEikd>W`A)y>V}-nk#jmmaEu7_!vy*e zbOvt%h*T(pM#u**#R@g|YTPBjXsj9W;FGRcGiTWDAamEU$7+BiV2-Q=`X;(D#}d*t zV=YNEW){PYdo*FzOS+i!A-{d6LNs;&wfnqFPX%&7g(8WDb<#;7@j{@-I?>u6HO0v{ zik%Eob|x|P(O%!DUpBveS$|!Z;maJV-gX}VAi&QFX@$#C(WIxznfac6S%L^xVN=S| zL<`bcd#L2ZEibTjU86xk7Ex~y`YVHj>OnO!D>l`^dr@>xa&T;;*hdLJx<+3U;m}>r z=PoLCWR;B_vXD~cEXr|JJ*#zgBhZe>)X6UxB4MR3Bn}WnD|i$hmmqm1cF>d~HZU z13Z-0?E@#xIDiNKc#U`bJ&WjPic;J9()q%zrglQ~O_Xg)62N$kLH2Xqdv06ZaYxYy z+nb-ywSaSz{%IQ98?Jp%-No2W<`#(7S4LC|7#Yuf&sH|~Kkt6sKV8`~Mi!hTj~DPw ztGBNt0~h?Z&TH4 zCDc{rziu7Xf3WPz@tSnxX-X|yq^UlIfDt0neE!)J$pwySUIL!zN}P3b&{WA2CCN#* zprNSGA(fj+H_}Mo)^a6=@ZaOCx>uUqC09n=U}%l|5-L+u1~+Q2d|(||KG3SvfYyrr zmGP#K9+4yLZMsL;zcqNw@m`y7t7rkoE|J~P`4zyWuk)m=zrxP{!h0X`!)q07G~@rj zvGc<9%aq7?9y;DJZs-}D zg@tl;^}9ROUZjLSx8+=?5%lpjM{BDm3qC4d_*8>WO@)~Hv$sy`1meikuWbXm7H z?sCo>ldBfiUoivkrcS(-)AGNgr3L%&bOeht18S8gL|nZ;FTuz967-gY*n)Z{=x#{3 zWf`IpS1X_9y7S|aqE`#j+Lt2?`ie|=Y;`FgcGc)pKU}HNqbJBF;(CCgR-@42<80wx zHhuhYmO22dmcl#EhQjofAQ1+WIUVNhcf#2Bl@>@YMLlePlXl&Kw-&w*y0msoFu3gb zVek{Fun4ufB`uJ4RaZA=iX4YM5v+yyFU>Dx|Lb0nqCUiE%Fi&Qi+itB6Lji6vm z)_D*^g{_%K9(SmJojo@-$%s@h;C**~CxuD>gjX~k)*>4~>A`v}YP=07+02R}77^~i z%?Zl!JQop8rEJfcqN3qTlI7{VO0Bj|D(vFLAlwl1`jYIShzYkgKM#{^Svh9(P!yIx z-w61U5vivn{N{iIWk7uLA=a?Ri{UHLORgqUxn79?b(=lXR~FB*TGrZdU;X%^S ztiV*7jQ6<5HceLV#CPl3_nYl|3(dAo?oo$j;gffUwNnS761J%TmVn_0loXqDSCC@j zK3~t459XbU88mjAd*cAZ*x?Tzvr7S$2XgnHg^vVV+>lEpk+xNg$)vfG%Km^pmC-1a z-bLf#mZgq+m2IeJaTmPo_*})A(D{bAuH=i{sEzrS+$g&F%v>{3Qwkdx(2`Ecx& zdc`=eCA=b~A;=Nl^X@)bOc_SOt)~*ocapf}^V#a&b;J*$&%MtT^UboQ;2PMImx7zBR%$K+?1D@h zIP}S>8nK(@bT*!6#}&cY^e}FB95~Qpf~Nfr5u_SE2xgsJE?FO!pvK3rUGV zL)q5&>#?PrxH%GO=*NTh1onf{5VXJYNaNF1fZi<{C0ga+6v;^& z{`e&t;ne36b~b%1j@&0;N0&zQ&RefKJi2!F*H(fPERF;t_(BPt)p&FxhU2e*_Re91 zSJ!3e9r|o2JC6a+93C8e&T+sVsW?iX_exO`TJxY#7>{z4oM*^j=yr@i?T5d~XQYmU zPT=X%WW6^4nvw<{nQnr8(N**nKA4{fH4FE4$qGtO%ujB>Gc4Qx40)s1 z&Gv+H%_#Iq#a?=p5c_dMNoY4WUZZaiQAwq3BW z9@^C?KF%t0szxTBucC9BLMHwo4-G(m;b$u)o;5y?K7o99?(&rx8TK4aqkJDtvP&)8 zK33N{#u%_n+Z=TKKw8(Ha&DHq_DDyZ?X{{rXY$QD4e_~R#uo)#tQ@b;3U98z%c#m$ zAgH4fn>lT8j(?WnQ|UhSxZyWW~~F^C*p za0DX9cXBp%;lNqp^vrYizO{V)n^%=L_9L$xjHrAqX%`aT{OU>3@D;ku7Qn}z!1lyQ zNjGWU551k3NA(X2(Y9+06wKtLV~7GMRusWHI_`eZiqqriSKB`kiI&?>Bhkq(0QRD)?kLwb_}u z@=#A|W5%fBc6r28_+^R`Ba>EesnuoblGVIV{yZU-&nXppM)7&+n^N))ErJvJZz22{ zjwP;gBCN)xhA3w+%R3Dm}XGTezCY!j(pItNdG)g7_UF*t?Mc<%&X_~8q%K$tJXcSay{XML`gyDYhwMbqLL&-e>}p}BW0yQA zM6^sovNF+CnU#!Mpcp3{Se5sVUZ*{F#woGmQ~2nOkNcNbZJa8Bw%BU#owNy^x@nlY5P@3mK%?ULjFCo4PoBC4juWqbBq!6^dh#&g zy_ZNX$ziPCKaeCYZ-M!roqifviCQ1R&zG{DO2QPr1iQ>FDub`78qaNwg#J#+IkQv6>`-tO}(LPyXa!mnW03Y=?s5au_M$ zp=NumnVWue*i}sL=nq!tz_Sj|x!=rK4-qYHRa@cSknPySvyG0mN>L#^ z#N$}p+V_)^5{*5n%Z!S}MZ!*)h-Y;B$J*D40<}e7v{xUb$U4K^m}1yV zbu%(oDi~-%he(*v7W31LRMFn&U8$kTW-%aQ#4>KOmXq=;XPT$)20!LxRwT^Li9vn+{q_zIuiH&eyo`K)b?WlA>DC=> z((wB9m+W7^&avP9GQ#K&yO(O8QT!0m~6}O zL{V6yRpTmdG!L->J({}jvZ!hB~aL~_REWyjc1d=xK3f(gu{(0JywcWw6r zmC%C*5H{|V{~Yxvn{AM{`@w6`4eAVth(P?D2l~YrX6et&d6LD+LUmYFmP@@Q7B~m&FO> z$U5hS{;BF^RXFRjW?lor(*CZb_m%5rSgFYrH|_IQ^rFV1mQn%kmU=vE zW2mZU-dqso`vy!Var-g`$S1a7S<+Tp-71pi+zC3}mF5t88cuIQR_R^)aC?%%G;Zyn z#-1^LgEf#HO>E-;*m9zvTPSKq1UN4Y<=k7LqG*z-p;;RXztRPMSw&MSY+OTA`lSZ^ENA5|&n=@IuqfS(B`e!%6u&cG z18xL(qghtr+85I5og62MchQ*WbA_#}=y1qY-g`R`GHqqlntxo=PaTcjs_zr>?BTAY z8Sa`{HjyMF9mK`2DQn+ekJhopm*H|2wC=_!lvay4;c0UsvA zbpkXm+iR`9z@JZ)9q0+`aD0I#}c)2{Y?6ZD|0iI&C4lj1v890eTGx1vnfiuhcy6tmt%X#G88$JwF-Be20~< zv1FpEQ0VoB{ka7!)<@)<-|6PJmX&S3uIYl4(5@E7b5F=D6efP^N~3RBM#?D?RExdf zM$6Yu_QAU1OwXwLy)yrkCG0n=`yQFeCY8J9OWkNY{Fqy6;mLq%%%dciGJ2gEkC~+G zkcekPN*&bcFXtUOS2(qnEtU~CQDlP7ooAG>%B_1vWRFG6-EJ>$b;6t<6R_i|BA|&o zTI@H!=p?jSe+qZKwNUu5fIm86@_ySVDxOVW*xOg4pS>R5Hm&b)B%E&wa5w5MK{wR( zD*O$Q0CZ zmC;g=3km@RQiExyJ*xreS+6CoDV13YZ`;|uBTmK*Yv%SbJZDke@>|D3I!4Lv2j%0t z#oNAbjS6}t4_-g<^gZ4E(sPK6L63n`;k;75*7e?LHjHw%3Z3FW2?csiirm`_5W1zo zH*p-YUj3&5ySG+m>XOU-XT_U(-!Vsmp4ze&NE7i4J11bV;y$IL8{TPfq04t(yp|M4 z{vtT?^8BUMH-+l`72&H5E;K5Ri`SxL(3w2f3{x7<(a}i7m4}Od1%Lm=zJiO*;(yEl z`GLUyWP$r>1{hzYMMf1Qi5FscZCYp{h#cHWf|o-0bw!r(9?aG)XA;(1BwL<)6L$A5 zu~J5cjt;&DGp!B1wS|d^c-$W-Vmx_uA+VShM|`#O74A1)R<$?^!=?) z8?(+^){>Yx_Czsu-(KX?4xSnaQ~yHx$U~eXIJ?YAKu_&vQM6 z`_g3)|C>uOcMgQ}HJMMS)*x@D*PaNAFu2NC54Bm%g?TU-L1!!Iu4Y6Y+A8A`WAS}? z)6Vp<+mj&q%>v0Z~*fscc+^Gp3_<3Y}3&(TCXfy7NBmaypI& zEbrgSS1KEspyDg0+}E>%>#XJ7FpF-nSxbPL;;XZ1jJoH8Z9G7SSprQvhlH$<_d>_GM)%`1DMdC*jS&rbF)#gF-CfW30=+4B zcRveN+%nO4q|u%DE?0}6@4A0p@oiaEMYeIL&#PA>5;FA^*_N`kZ#@=z*wU|^oy(pV zkJ_)+(um1CxK80|2sW%fFgvCA?4J8IVZ1jc7u4O&7ZwE@%FUY{Og zdC=O@Rz?Z&xm<1c$@eI-Z>$DqlHPbU^*LREeZ;3_}# zUD2AhQQdAs;&@-loC)}l>Qg3UMxelZ*<~Po)}&K3#LlAfakmBg%@f+*uZCVSGri^l zkNT8uSsb;Cfmd8r(@r)=l?Uqmn;T>|Gi%Zm51Sg2#qw(XNxpsXtJb%vOLExyvL@@` z8A1bH@T;b=6@qPlQ$;VAA&KJjzXHquVlM%hpZ^cA6heRXRbc}EZ5Z>1Nqr8QK$2kN z*L<&{VB!b5cM_lJG6i5`y4}5=w-#|nh^cj2U}aVq_;&LZ`{TvEbOEyy6%Cv51kJ)` zc3ux;A=xaCYp1tr@QuVI-^5#(#uk(qY_|w8Zjwndh3m^^mnD(bmr!8yII&_Ub&x|> z<*DAjRJ)a+C_ntfkb_g=g`-9=DlQji>8TN8f}-->CmU>9L8#{su!+5FFcHQRGzo<_ zdeqnzI@Q=!w4ZGBQK#DF&H@t(^NrAy`$UM{U{Cu@9|UuX2`8o61}*4WmH*=CW8ZMQ zcj6He$@gxL`@5%PU}n)HNw3l7jvtHC#RB3^%{ zW%!aD$}~sG0NBPM{uGW12(^fzV0f99K*$jB=w7jo_!MSNe&9$*C=%Nf|LGcOsx_~w z*8F^z^t<^dTdfln+A~3COG`cN2HV4VsAG?>6`+ToN9Om|i;G#4uG9t0r9a>Lz}eVY z|9aw1FL_yV-ck3xkMhv2`i>Oz{aD7Z2d?TQnOT$*Ay8SDS23qHsK74Li5R#d?A_L+ zsXy7O34Wbo#?8z-QZ_{70Ia1_O-$~2d9_P7^Y!?+YKud{-kt94wvT3QSvzcLH?mHz zu5Zqt&Ckqi7i5VOF*0m#F}{TPoIBO~`81q26wW22j(67Wpa`b$?6B7h=bk=rYr-&U z>$wumh-%%?i1D_e4l&NiVn5&k@6 zBL5{{XmaW%T8W|cXsxWJxixuy*BPNx+VRVDl_~B{SVt18;ob{mC4H}`M}rcXneVmo zsugJ?pX$oFU}vcpe11KrEoJ`XgxMFidspkgonO6jKe^TaKIaes10j5xuBI**@z8aZ zm3|ANt&DJio5Nk;Kh6b!ihDT1&1?}aOr{7+YX=z1c4G?*leIaFMF*q|P7I86rsE3G$y`w!^8k2{;orAN82aE-dc5X$8pwkzR`B<2~lepNz zSR^hom~@rZm?V)X1QUoC%wq-s3Nb-|yg;y^AXt!_i66iZ-~)j9fFK?qK!hJ40st}n z{$mltN2j1Da|;m-DVg7kL*KzztXy0iMfmvK-Q9WJ1$dDtOFke30^tMj^YQcZpecBq zJsn)&9y|`ttiK8QLyi=}*$idv=wgj@V7ibCH$}R-z*tx=3i|W+d%Nr%|18MCnfH4e zdCidad>(K|J|HiE?{AotmH%%xd;4E1}DSN?B0fueg{L>XyrZQ&^ecR`4u`;4Cl0OsKb zYXO8s1i>N#0{T$CzYzUU>34QX6avlqH|+esv;Rc&7xq7f@81acv;5yj`FFCvi1;oX ziPAzM?ZhO^P)Jj_3zM3Zj56F7fnwqZGFc!|Ogc!E`EM=xnfhM^DJzReA2!n+LctHFJkhz5^5CR19e;50&y#FRw-oe=g z?qG)aLoUc141yyNXlW2QfJaamEf)fZAb3pSrUHTpK>)w0;Gc4T;{7+d&aS352s4+T zx)j~9-(M_Egwwx1{UgK9S_};3yLd;?sUHF_vcEt5SH?dY_wNNk&CNv6nze_!h`}8l z?X1n<7cUmqIUUB4PKJCj6-E1v-e>!5u7NEFL`O2n)EY zoePVYIU4YooLx|^W-hL1{4ujak3nZE1RC;qn9#4XskH+F-Q9oR$bT*Hdxig6Hz>L# zB5Ek4xvLohCH5QOp+^;ylC>!cj`BngEMD|qNDz9_oIJyhw6T7+E1AGJ>$2hXhcPWIp3dX z{s#|QrT-uPe$@DXh5Q2z{7+r~KuJGH{->@Vy7&jF|EcRADCq~u|J3zE7ylsjKXv^B zCH)}z|6N`9Kh}fjDA6z$cl2uSR}0Rcc31vw1nEEH>iiZx`tOc$;ujPW`2Fnde!e~~ z^@_p6ekIOmF#7Rjd|XbdKzTEOH4Zxu(?^mkl3@?yFv226i3_>qMv3K=RC#KvuryKJhyv9x=I{5Q%J%Fm41gSd( zNuIPntBJK-*-p{j1odVH?F5kaQnmE4J`KH0<+bl{hpTq_BG3ozsEo_6H1g9v3@L;e z(j1`%N7*|=p?s1^J6C%LXC@Gz8VX@y&i|;EMe^>zdh4}e2kVuz{j0?kt2A`(27vkbh;J3cf)j(MA=@Bm&fwds&i=QIrPiH^eiY7MHMY2rSx4#+TK9=EB_7b@ z)FVrQp*_0M-i4&ypyj&C9C@81t(R{^`=)7qQBUL*%Blxy`e|0t?)PVs*T8iR>99}A zMHa^ Date: Mon, 3 Oct 2022 16:19:23 +0530 Subject: [PATCH 013/448] Create Leetcode_candy.cpp --- CPP/Problems/Leetcode_candy.cpp | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 CPP/Problems/Leetcode_candy.cpp diff --git a/CPP/Problems/Leetcode_candy.cpp b/CPP/Problems/Leetcode_candy.cpp new file mode 100644 index 00000000..3c7ecc5b --- /dev/null +++ b/CPP/Problems/Leetcode_candy.cpp @@ -0,0 +1,33 @@ +class Solution { +public: + + int candy(vector& ratings) { + int n = ratings.size(); + int candy = n, i=1; + while(i ratings [i-1]){ + peak++; + candy += peak; + i++; + if(i == n) return candy; + } + + //For decreasing slope + int valley = 0; + while(i Date: Mon, 3 Oct 2022 16:20:33 +0530 Subject: [PATCH 014/448] Update Leetcode_candy.cpp --- CPP/Problems/Leetcode_candy.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CPP/Problems/Leetcode_candy.cpp b/CPP/Problems/Leetcode_candy.cpp index 3c7ecc5b..b4db0d04 100644 --- a/CPP/Problems/Leetcode_candy.cpp +++ b/CPP/Problems/Leetcode_candy.cpp @@ -1,3 +1,5 @@ +// https://leetcode.com/problems/candy/ + class Solution { public: From 546c9bb6fe276ed427a2bedea5fffe823f43567a Mon Sep 17 00:00:00 2001 From: Vandana Date: Mon, 3 Oct 2022 19:27:42 +0530 Subject: [PATCH 015/448] All operations of singly linkedlist --- LinkedList/all_singly_linkedlist.py | 130 ++++++++++++++++++++++++++++ 1 file changed, 130 insertions(+) create mode 100644 LinkedList/all_singly_linkedlist.py diff --git a/LinkedList/all_singly_linkedlist.py b/LinkedList/all_singly_linkedlist.py new file mode 100644 index 00000000..3d469e60 --- /dev/null +++ b/LinkedList/all_singly_linkedlist.py @@ -0,0 +1,130 @@ +class Node: + def __init__(self,data): + self.data = data # here nodes data is data + self.ref = None # it stores the refrence of none or NULL + +# now to link this individual node +class LinkedList: + def __init__(self): + self.head = None #this is the empty linked list (initializing linked list) + + # traversing the LL + def print_LL(self): + if self.head==None: + print("Linked list is empty") + else: + n = self.head + while n!=None: + print(n.data , end=" ") + n = n.ref + + # adding new node at beginning of LL + def add_beginning(self,data): + new_node = Node(data) # creating a new node from node class ## here a node will be created having some data(i.e. the data field) and link field is Null + new_node.ref = self.head + self.head = new_node + + # add at the end + def add_end(self,data): + new_node = Node(data) + if self.head == None : + self.head = new_node + else: + n = self.head + while n.ref!=None: # we are using this while loop to go to the last node + n = n.ref + n.ref = new_node + + # adding after a given node + def add_after(self,data,x): + n = self.head + while n!=None: + if x==n.data: + break + n = n.ref + if n==None: + print("Node is not present in Linked List") + else: + new_node = Node(data) + new_node.ref = n.ref + n.ref = new_node + + #adding before given node + def add_before(self,data,x): + # if linked list is empty + if self.head==None: + print("LL is empty") + return + # if x is first node + if self.head.data==x: + new_node = Node(data) + new_node.ref = self.head + self.head = new_node + return + # rest cases + n = self.head + while n.ref!=None: + if n.ref.data==x: + break + n = n.ref + if(n.ref==None): + print("x is not in LL") + new_node = Node(data) + new_node.ref = n.ref + n.ref = new_node + + # inserting element in empty LL + def insert_when_empty(self,data): + if self.head==None: + new_node = Node(data) + self.head=new_node + else: + print("LL is not empty") + + # deletion at the beginning + def delete_beginning(self): + if self.head!=None: + self.head = self.head.ref + else: + print("LL is empty, we cannot delete first node") + + # deletion at the end + def delete_end(self): + if self.head==None: + print("LL is empty, we cannot delete last node") + elif self.head.ref==None: # when only 1 node is present + self.head = None + elif self.head!=None: + n = self.head + while n!=None: # or directly we can take while n.ref.ref!=None: + if n.ref.ref == None: # n = n.ref + break + n = n.ref + n.ref = None + + # deletion of given value + def delete_given(self,x): + if self.head==None: + print("LL is empty, we cannot delete given node") + elif x==self.head.data: + self.head = self.head.ref + elif self.head!=None: + n = self.head + while n.ref!=None: # here we took n.ref because when we reach the last node (jab hum n!=none lete) there n is not equal to none toh jab hum if condition ke n.ref.data ko check karenge toh waha n.ref is none toh none.data is not defined. issliye hum last node pe hi loop break kr rahe. + if n.ref.data==x: + break + n = n.ref + if n.ref==None: + print("Given node is not present in LL") + else: + n.ref = n.ref.ref + +LL1 = LinkedList() +LL1.add_beginning(3) +LL1.add_beginning(24) +LL1.add_end(52) +LL1.add_beginning(66) +LL1.add_end(43) +LL1.delete_given(20) +LL1.delete_given(52) +LL1.print_LL() \ No newline at end of file From 2d4a97fa95ee742a3afa1ce008be1a8b4a40b19f Mon Sep 17 00:00:00 2001 From: aayush920 <76609501+aayush920@users.noreply.github.com> Date: Mon, 3 Oct 2022 19:51:10 +0530 Subject: [PATCH 016/448] Created maximum element query --- CPP/Segment Tree/Maximum element query.cpp | 171 +++++++++++++++++++++ 1 file changed, 171 insertions(+) create mode 100644 CPP/Segment Tree/Maximum element query.cpp diff --git a/CPP/Segment Tree/Maximum element query.cpp b/CPP/Segment Tree/Maximum element query.cpp new file mode 100644 index 00000000..0ee23c71 --- /dev/null +++ b/CPP/Segment Tree/Maximum element query.cpp @@ -0,0 +1,171 @@ +#include +using namespace std; +//common file for PBDS +#include +//including tree_order_statistics_node_update +#include +using namespace __gnu_pbds; +//macro definition +template +using ordered_set= tree, rb_tree_tag, tree_order_statistics_node_update>; +template +using o_multiset = tree, rb_tree_tag, tree_order_statistics_node_update>; +//member functions : +//1. order_of_key(k) : number of elements strictly lesser than k +//2. find_by_order(k) : k-th element in the set + +//Optimisations (Black Magic 🌑) +#pragma GCC optimize("O3,unroll-loops") +#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt") + +#define ll long long +#define lld long double +#define ull unsigned long long +#define rep(i, n) for (ll i = 0; i < n; i++) +#define repk(i, k, n) for (ll i = k; k < n ? i < n : i > n; k < n ? i++ : i--) +#define input(vec) for (auto &el : vec) cin >> el; +#define print(vec) for (auto &el : vec) cout << el<<" "; +#define bit(x) __builtin_popcount(x) +#define bitll(x) __builtin_popcountll(x) +#define popb pop_back +#define pb push_back +#define eb emplace_back +#define ub upper_bound +#define lb lower_bound +#define ff first +#define ss second +#define um unordered_map +#define om ordered_map +#define all(x) (x).begin(),(x).end() +#define minpq priority_queue>pq; +#define maxpq priority_queuepq; +#define uniq(x) (x).erase(unique(all(x)), (x).end()) +#define precision(x, y) fixed << setprecision(y) << x +#define PI 3.1415926535897932384626 +#define sz(x) ((ll)(x).size()) +#define r_search(a,b) regex_search(a,regex(b)) //search b in a +#define r_match(a,b) regex_match(a,regex(b)) //match b in a +#define r_replace(a,b,c) regex_replace(a,regex(b),c) //replace b with c in a +#define present(b, a) ((a).find((b)) != (a).end()) //if b is present in a +#define nl '\n' +const ll mod = 1e9 + 7; //1000000007 +const ll mod2 = 998244353; +const ll inf = LLONG_MAX; +const lld epsilon = 1e-12; +typedef pair pl; +typedef pair pc; +typedef pair pi; +typedef pair pd; +typedef vector vl; +typedef vector vc; +typedef vector vpl; +typedef vector vvl; +typedef vector vi; +typedef vector vpc; +typedef vector vpi; +typedef vector vvi; +typedef vector vs; +typedef vector> vvs; + +// #ifndef ONLINE_JUDGE +#define debug(x) cerr << #x <<" "; _print(x); cerr << endl; +// #else +// #define debug(x) +// #endif + +void _print(ll t) {cerr << t;} +void _print(int t) {cerr << t;} +void _print(string t) {cerr << t;} +void _print(char t) {cerr << t;} +void _print(lld t) {cerr << t;} +void _print(double t) {cerr << t;} +void _print(ull t) {cerr << t;} + +template void _print(pair p); +template void _print(vector v); +template void _print(set v); +template void _print(map v); +template void _print(multiset v); +template void _print(pair p) {cerr << "{"; _print(p.ff); cerr << ","; _print(p.ss); cerr << "}";} +template void _print(vector v) {cerr << "[ "; for (T i : v) {_print(i); cerr << " ";} cerr << "]";} +template void _print(set v) {cerr << "[ "; for (T i : v) {_print(i); cerr << " ";} cerr << "]";} +template void _print(multiset v) {cerr << "[ "; for (T i : v) {_print(i); cerr << " ";} cerr << "]";} +template void _print(map v) {cerr << "[ "; for (auto i : v) {_print(i); cerr << " ";} cerr << "]";} +template void _print(unordered_map v) {cerr << "[ "; for (auto i : v) {_print(i); cerr << " ";} cerr << "]";} + +// ------------------------Do not write above this line----------------------------------------------------------------------------------------------------------------- +//Segment-Tree (Max-Update, Max-Query) +//1-based indexing +//pass the vectors as reference +void build_segtree(vl &vec,ll curr,ll l,ll r,vl &segtree,ll n){ + if(l==r){ + segtree[curr]=vec[l]; + } + else{ + int mid=(l+r)/2; + build_segtree(vec,2*curr,l,mid,segtree,n); + build_segtree(vec,2*curr+1,mid+1,r,segtree,n); + segtree[curr]=max(segtree[2*curr],segtree[2*curr+1]); + } +} + +ll max_segtree(ll curr,ll curr_l,ll curr_r,ll l,ll r,vl &segtree){ + if(l>r){ + return 0; + } + + if(l==curr_l and r==curr_r){ + return segtree[curr]; + } + + ll mid=(curr_l+curr_r)/2; + return max(max_segtree(2*curr,curr_l,mid,l,min(r,mid),segtree),max_segtree(2*curr+1,mid+1,curr_r,max(l,mid+1),r,segtree)); +} + +void update_segtree(ll curr,ll l,ll r,ll pos,ll new_val,vl &segtree){ + if(l==r){ + segtree[curr]=new_val; + } + else{ + ll mid=(l+r)/2; + if(pos<=mid){ + update_segtree(2*curr,l,mid,pos,new_val,segtree); + } + else{ + update_segtree(2*curr+1,mid+1,r,pos,new_val,segtree); + } + segtree[curr]=max(segtree[2*curr],segtree[2*curr+1]); + } +} + +void solve(){ + ll n; + cin>>n; + vl vec(n); + input(vec); + + vl segtree(4*n+1); + //TreeBuild + build_segtree(vec,1,0,n-1,segtree,n); //(input array,curr. vertex,start,end,segtree array,size) + + //Max-query + cout<>t; + while(t--){ + solve(); + } + return 0; +} From a7ce6393472b84e499044ab0537af14ff66050fa Mon Sep 17 00:00:00 2001 From: "Muhammad A. Noorani" Date: Mon, 3 Oct 2022 20:43:31 +0530 Subject: [PATCH 017/448] added-program --- Python/Largest of the three numbers.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 Python/Largest of the three numbers.py diff --git a/Python/Largest of the three numbers.py b/Python/Largest of the three numbers.py new file mode 100644 index 00000000..bcf44c0b --- /dev/null +++ b/Python/Largest of the three numbers.py @@ -0,0 +1,17 @@ +# Largest number from the given/entered three numbers + + +# Taking the input from the user +num1 = float(input("Enter the first number - ")) +num2 = float(input("Enter the second number - ")) +num3 = float(input("Enter the third number - ")) + +#if, elif, else blocks +if(num1 >= num2) and (num1 >= num3): + largest = num1 +elif(num2 >= num3) and (num2 >= num1): + largest = num2 +else: + largest = num3 + +print("The largest number is", largest) \ No newline at end of file From 981fa1f7a37c085bfc6724e439fdaa69be060bb6 Mon Sep 17 00:00:00 2001 From: rohinipatil89 <114460901+rohinipatil89@users.noreply.github.com> Date: Mon, 3 Oct 2022 20:51:55 +0530 Subject: [PATCH 018/448] added code for Animation Colorful Spiral Pattern This program code display Animation of Colorful Spiral Pattern with the help of turtle and time library. --- .../animation_of_colorful_spiral_pattern.py | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 Python/animation_of_colorful_spiral_pattern.py diff --git a/Python/animation_of_colorful_spiral_pattern.py b/Python/animation_of_colorful_spiral_pattern.py new file mode 100644 index 00000000..1f98fc6c --- /dev/null +++ b/Python/animation_of_colorful_spiral_pattern.py @@ -0,0 +1,22 @@ +import turtle +import time +#defining function +def myFun(): + #list for storing colors + mycolors=["red","blue","green","yellow","orange","brown"] + #creating turtle variable + t=turtle + #setting pensize + t.pensize(5) + #setting background color + t.bgcolor('black') + #setting speed of drawing + t.speed(1000) + #loop for creating design + for x in range(360): + t.pencolor(mycolors[x%len(mycolors)]) + t.pensize(x/50) + t.forward(x) + t.left(59) +myFun() +time.sleep(5) From b148af52ca293c322f9515eb2914b1fec3187b3c Mon Sep 17 00:00:00 2001 From: HeyItsMeBJ <104828846+HeyItsMeBJ@users.noreply.github.com> Date: Mon, 3 Oct 2022 20:54:39 +0530 Subject: [PATCH 019/448] Stack Using Linked List Algorithm for implementing stack using linked list --- CPP/structures/stack using linked list.cpp | 86 ++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 CPP/structures/stack using linked list.cpp diff --git a/CPP/structures/stack using linked list.cpp b/CPP/structures/stack using linked list.cpp new file mode 100644 index 00000000..ad42c2b3 --- /dev/null +++ b/CPP/structures/stack using linked list.cpp @@ -0,0 +1,86 @@ +#include +using namespace std; + +// Stack implementation using Linked List + + +// class for _stack +class _stack +{ + // private data----> + + + // node structure + struct node + { + int data; + node* next; + }; + node* head = NULL; + int n = 0;// for size of stack +public: + // public data----> + + + // push fuction + void push(int a) { + // making node + node* temp = new node(); + // check whether a stack overflows or not + if(temp==NULL){cout<<"Stack Overflow\n";return;} + + // adding nodes at the beginning of linkked list + temp->data = a; + temp->next = head; + head = temp; + n++;// increamenting size + } + + // pop function + void pop() { + // check stack is empty or not + if (head == NULL) {cout << "Empty stack\n"; return;} + // points temp node pointer to the top + node *temp = head; + // move head to next node + head = head->next; + // delete temp node pointer + delete(temp); + n--;// decreamenting size + } + + // top function + int top() { + // check stack is empty or not + if (head == NULL) {cout << "Empty stack"; return -1;} + // return top node data + return head->data; + } + + // stack emptly check function + bool isEmpty() { + if (head == NULL)return true; + else return false; + } + + // function for returning the size of stack + int size() { return n;} +}; + + + +int main() { + + + _stack s; + + // user/random inputs.. + for (int i = 0; i < 10; ++i) {int a; cin >> a; s.push(a); cout << s.top() << endl;} + s.pop(); + s.pop(); + cout << s.isEmpty() << endl; + cout << s.top() << endl; + s.push(121); + cout << s.top() << endl; + return 0; +} From 348d478227547fc7cd377aec257e2ac64aaccabb Mon Sep 17 00:00:00 2001 From: xsnatchysquidx <51396413+xsnatchysquidx@users.noreply.github.com> Date: Mon, 3 Oct 2022 18:25:41 +0300 Subject: [PATCH 020/448] Implemented Floyd Warshall Algorithm --- Python/floyd_warshall.py | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 Python/floyd_warshall.py diff --git a/Python/floyd_warshall.py b/Python/floyd_warshall.py new file mode 100644 index 00000000..68eb5cd1 --- /dev/null +++ b/Python/floyd_warshall.py @@ -0,0 +1,11 @@ +def floyd_warshall(graph): + """ + Floyd-Warshall algorithm for finding shortest paths in a graph. + """ + dist = graph + n = len(graph) + for k in range(n): + for i in range(n): + for j in range(n): + dist[i][j] = min(dist[i][j], dist[i][k] + dist[k][j]) + return dist From 3a2d2ef97356c20b03af0d40d8aa31311b9f6e1b Mon Sep 17 00:00:00 2001 From: Siddharth Reddy Anthireddy <90183587+Siddharth2812@users.noreply.github.com> Date: Mon, 3 Oct 2022 21:01:24 +0530 Subject: [PATCH 021/448] Create CheckForUnimodalArray.py --- Python/CheckForUnimodalArray.py | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 Python/CheckForUnimodalArray.py diff --git a/Python/CheckForUnimodalArray.py b/Python/CheckForUnimodalArray.py new file mode 100644 index 00000000..d4d53e6c --- /dev/null +++ b/Python/CheckForUnimodalArray.py @@ -0,0 +1,25 @@ +n = int(input()) +l = list( map(int,input().split())) +j = 0 +i = 0 +a = max(l) +max_index = l.index(max(l)) +for i in range(0,n-1): + if l[i] < l[i+1] : + j = j+1 + else : + break +for i in range(i,n-1) : + if l[i] == l[i+1] : + j = j+1 + else : + break +for i in range(i,n-1) : + if l[i] > l[i+1] : + j = j+1 + else : + break +if j == n-1 : + print("YES") +else : + print("NO") From c7662e3da60e5c6a5c0b05a88672dfa501952465 Mon Sep 17 00:00:00 2001 From: Anish Tiwari Date: Mon, 3 Oct 2022 21:04:07 +0530 Subject: [PATCH 022/448] added burst balloons problem on DP --- Dynamic Programming/burstBalloons.cpp | 56 +++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 Dynamic Programming/burstBalloons.cpp diff --git a/Dynamic Programming/burstBalloons.cpp b/Dynamic Programming/burstBalloons.cpp new file mode 100644 index 00000000..60dc3dcd --- /dev/null +++ b/Dynamic Programming/burstBalloons.cpp @@ -0,0 +1,56 @@ +// this is hard level DP problem on lc +// https://leetcode.com/problems/burst-balloons/ + +// both memoization and tabulation approaches +class Solution +{ + // private: + // int solve(int i, int j, vector&nums,vector>&dp){ + // //base case + // if(i>j){ + // return 0; + // } + // if(dp[i][j]!=-1){ + // return dp[i][j]; + // } + // int ans = INT_MIN; + // for(int ind = i;ind<=j;ind++){ + // //think in terms as we are bursting last balloon + // int cost = nums[ind]*nums[i-1]*nums[j+1] + solve(i,ind-1,nums,dp) + solve(ind+1,j,nums,dp); + // ans = max(ans,cost); + // } + // return dp[i][j] = ans; + // } +public: + int maxCoins(vector &nums) + { + // mcm as we are given according to ordering and maxi so use dp + nums.push_back(1); + nums.insert(nums.begin(), 1); + //[1,3,1,5,8,1] + int n = nums.size(); + // vector>dp(n,vector(n,-1)); + // return solve(1,n-2,nums,dp); + vector> dp(n + 2, vector(n + 2, 0)); + + // think in terms of reverse of memo + for (int i = n - 2; i >= 1; i--) + { + for (int j = 1; j <= n - 2; j++) + { + if (i > j) + { + continue; + } + int ans = INT_MIN; + for (int ind = i; ind <= j; ind++) + { + int cost = nums[ind] * nums[i - 1] * nums[j + 1] + dp[i][ind - 1] + dp[ind + 1][j]; + ans = max(ans, cost); + } + dp[i][j] = ans; + } + } + return dp[1][n - 2]; + } +}; \ No newline at end of file From c34238dd3dc93e53822fae57210ab053c4be5b66 Mon Sep 17 00:00:00 2001 From: Bhavna Panjwani <97038127+Bhavna-26@users.noreply.github.com> Date: Mon, 3 Oct 2022 21:05:34 +0530 Subject: [PATCH 023/448] some leetcode problems added to array section --- CPP/arrays/leetcode-problems/3 sum | 47 +++++++++++ .../leetcode-problems/X of Kind in Deck | 22 ++++++ .../leetcode-problems/add to array form | 12 +++ .../leetcode-problems/alternating array | 79 +++++++++++++++++++ .../append k integers with minimum sum | 25 ++++++ .../binary prefix divisible by 5 | 12 +++ CPP/arrays/leetcode-problems/bitset class | 25 ++++++ .../leetcode-problems/can place flowers | 24 ++++++ .../check if all points lie on straight line | 10 +++ .../check if n and double exist | 15 ++++ .../leetcode-problems/contains duplicate 2 | 15 ++++ CPP/arrays/leetcode-problems/count good meals | 9 +++ CPP/arrays/leetcode-problems/count rectangles | 20 +++++ .../delete columns to make sorted | 21 +++++ CPP/arrays/leetcode-problems/detect pattern | 17 ++++ .../leetcode-problems/find no closest to zero | 14 ++++ .../leetcode-problems/find smallest greater | 29 +++++++ .../longest continuos increasing subsequence | 13 +++ .../leetcode-problems/make sum divisble by p | 14 ++++ .../maximum average subarray | 13 +++ .../maximum candies allocated to k children | 27 +++++++ CPP/arrays/leetcode-problems/maximum product | 7 ++ .../maximum white tiles covered | 36 +++++++++ .../leetcode-problems/merge sorted arrays | 25 ++++++ .../minimum absolute sum differnece | 30 +++++++ .../minimum time to complete trips | 34 ++++++++ .../no of equivalent domino pairs | 9 +++ .../palindrome with fixed length | 55 +++++++++++++ ...ition array into three parts with same sum | 3 + CPP/arrays/leetcode-problems/plus one | 41 ++++++++++ .../leetcode-problems/remove on element | 18 +++++ .../search in sorted rotated array | 32 ++++++++ .../leetcode-problems/serach insert position | 15 ++++ CPP/arrays/leetcode-problems/set mismatch | 1 + .../succesful pair spells and potions | 26 ++++++ CPP/arrays/leetcode-problems/summary ranges | 35 ++++++++ .../leetcode-problems/valid mountain array | 6 ++ CPP/arrays/leetcode-problems/wiggle sort2 | 20 +++++ 38 files changed, 856 insertions(+) create mode 100644 CPP/arrays/leetcode-problems/3 sum create mode 100644 CPP/arrays/leetcode-problems/X of Kind in Deck create mode 100644 CPP/arrays/leetcode-problems/add to array form create mode 100644 CPP/arrays/leetcode-problems/alternating array create mode 100644 CPP/arrays/leetcode-problems/append k integers with minimum sum create mode 100644 CPP/arrays/leetcode-problems/binary prefix divisible by 5 create mode 100644 CPP/arrays/leetcode-problems/bitset class create mode 100644 CPP/arrays/leetcode-problems/can place flowers create mode 100644 CPP/arrays/leetcode-problems/check if all points lie on straight line create mode 100644 CPP/arrays/leetcode-problems/check if n and double exist create mode 100644 CPP/arrays/leetcode-problems/contains duplicate 2 create mode 100644 CPP/arrays/leetcode-problems/count good meals create mode 100644 CPP/arrays/leetcode-problems/count rectangles create mode 100644 CPP/arrays/leetcode-problems/delete columns to make sorted create mode 100644 CPP/arrays/leetcode-problems/detect pattern create mode 100644 CPP/arrays/leetcode-problems/find no closest to zero create mode 100644 CPP/arrays/leetcode-problems/find smallest greater create mode 100644 CPP/arrays/leetcode-problems/longest continuos increasing subsequence create mode 100644 CPP/arrays/leetcode-problems/make sum divisble by p create mode 100644 CPP/arrays/leetcode-problems/maximum average subarray create mode 100644 CPP/arrays/leetcode-problems/maximum candies allocated to k children create mode 100644 CPP/arrays/leetcode-problems/maximum product create mode 100644 CPP/arrays/leetcode-problems/maximum white tiles covered create mode 100644 CPP/arrays/leetcode-problems/merge sorted arrays create mode 100644 CPP/arrays/leetcode-problems/minimum absolute sum differnece create mode 100644 CPP/arrays/leetcode-problems/minimum time to complete trips create mode 100644 CPP/arrays/leetcode-problems/no of equivalent domino pairs create mode 100644 CPP/arrays/leetcode-problems/palindrome with fixed length create mode 100644 CPP/arrays/leetcode-problems/partition array into three parts with same sum create mode 100644 CPP/arrays/leetcode-problems/plus one create mode 100644 CPP/arrays/leetcode-problems/remove on element create mode 100644 CPP/arrays/leetcode-problems/search in sorted rotated array create mode 100644 CPP/arrays/leetcode-problems/serach insert position create mode 100644 CPP/arrays/leetcode-problems/set mismatch create mode 100644 CPP/arrays/leetcode-problems/succesful pair spells and potions create mode 100644 CPP/arrays/leetcode-problems/summary ranges create mode 100644 CPP/arrays/leetcode-problems/valid mountain array create mode 100644 CPP/arrays/leetcode-problems/wiggle sort2 diff --git a/CPP/arrays/leetcode-problems/3 sum b/CPP/arrays/leetcode-problems/3 sum new file mode 100644 index 00000000..5445687c --- /dev/null +++ b/CPP/arrays/leetcode-problems/3 sum @@ -0,0 +1,47 @@ +vector > threeSum(vector &num) { + + vector > res; + + std::sort(num.begin(), num.end()); + + for (int i = 0; i < num.size(); i++) { + + int target = -num[i]; + int front = i + 1; + int back = num.size() - 1; + + while (front < back) { + + int sum = num[front] + num[back]; + + // Finding answer which start from number num[i] + if (sum < target) + front++; + + else if (sum > target) + back--; + + else { + vector triplet = {num[i], num[front], num[back]}; + res.push_back(triplet); + + // Processing duplicates of Number 2 + // Rolling the front pointer to the next different number forwards + while (front < back && num[front] == triplet[1]) front++; + + // Processing duplicates of Number 3 + // Rolling the back pointer to the next different number backwards + while (front < back && num[back] == triplet[2]) back--; + } + + } + + // Processing duplicates of Number 1 + while (i + 1 < num.size() && num[i + 1] == num[i]) + i++; + + } + + return res; + +} diff --git a/CPP/arrays/leetcode-problems/X of Kind in Deck b/CPP/arrays/leetcode-problems/X of Kind in Deck new file mode 100644 index 00000000..dfbad5ae --- /dev/null +++ b/CPP/arrays/leetcode-problems/X of Kind in Deck @@ -0,0 +1,22 @@ + int gcd(int a,int b){ + if(a==0){return b;} + return gcd(b%a,a); + } + bool hasGroupsSizeX(vector& deck) { + int n=deck.size(); + if(n==1){ + return false; + } + unordered_mapm; + for(int i=0;i addToArrayForm(vector A, int K) { + for (int i = A.size() - 1; i >= 0 && K > 0; --i) { + A[i] += K; + K = A[i] / 10; + A[i] %= 10; + } + while (K > 0) { + A.insert(A.begin(), K % 10); + K /= 10; + } + return A; + } diff --git a/CPP/arrays/leetcode-problems/alternating array b/CPP/arrays/leetcode-problems/alternating array new file mode 100644 index 00000000..cecce898 --- /dev/null +++ b/CPP/arrays/leetcode-problems/alternating array @@ -0,0 +1,79 @@ + int minimumOperations(vector& nums) { + + int totalEven = 0, totalOdd = 0; + + unordered_map mapEven, mapOdd; + + for(int i=0;ifirst; + int count = it->second; + + if(count>=firstEvenCount) { + secondEvenCount = firstEvenCount; + secondEven = firstEven; + firstEvenCount = count; + firstEven = num; + } + + else if(count >= secondEvenCount) { + secondEvenCount = count; + secondEven = num; + } + } + + + int firstOddCount = 0, firstOdd = 0; + int secondOddCount = 0, secondOdd = 0; + + + for(auto it=mapOdd.begin();it!=mapOdd.end();it++) { + int num = it->first; + int count = it->second; + + if(count>=firstOddCount) { + secondOddCount = firstOddCount; + secondOdd = firstOdd; + firstOddCount = count; + firstOdd = num; + } + + else if(count>=secondOddCount) { + secondOddCount = count; + secondOdd = num; + } + } + + int operationsEven = 0, operationsOdd = 0; + + + operationsEven = totalEven - firstEvenCount; + + if(firstEven!=firstOdd) operationsEven += (totalOdd - firstOddCount); + else operationsEven += (totalOdd - secondOddCount); + + + operationsOdd = totalOdd - firstOddCount; + if(firstOdd!=firstEven) operationsOdd += (totalEven - firstEvenCount); + else operationsOdd += (totalEven - secondEvenCount); + + + return min(operationsEven, operationsOdd); + + } +}; diff --git a/CPP/arrays/leetcode-problems/append k integers with minimum sum b/CPP/arrays/leetcode-problems/append k integers with minimum sum new file mode 100644 index 00000000..be7bd355 --- /dev/null +++ b/CPP/arrays/leetcode-problems/append k integers with minimum sum @@ -0,0 +1,25 @@ + long long minimalKSum(vector& nums, int k) { + mapm; + int n=nums.size(); + long long ans=0; + for(int i=0;i(r-l)){k-=(r-l);} + else{break;} + ans+=(((r*(r-1))/2)-((l*(l-1))/2)); + start=r+1; + + } + + long long l=start; + long long r=start+k; + ans+=(((r*(r-1))/2)-((l*(l-1))/2)); + + return ans; + } diff --git a/CPP/arrays/leetcode-problems/binary prefix divisible by 5 b/CPP/arrays/leetcode-problems/binary prefix divisible by 5 new file mode 100644 index 00000000..b35c9d1c --- /dev/null +++ b/CPP/arrays/leetcode-problems/binary prefix divisible by 5 @@ -0,0 +1,12 @@ + vector prefixesDivBy5(vector& nums) { + int n=nums.size(); + int p=0; + vectorv; + int d=2; + for(int i=0;i& flowerbed, int n) { + int count = 0; + for (int i = 0; i < flowerbed.size(); i++) { + // Check if the current plot is empty. + if (flowerbed[i] == 0) { + // Check if the left and right plots are empty. + bool emptyLeftPlot = (i == 0) || (flowerbed[i - 1] == 0); + bool emptyRightPlot = (i == flowerbed.size() - 1) || (flowerbed[i + 1] == 0); + + // If both plots are empty, we can plant a flower here. + if (emptyLeftPlot && emptyRightPlot) { + flowerbed[i] = 1; + count++; + } + } + } + return count >= n; + } +}; +Time complexity: O(n). A single scan of the flowerbedf array of size n is done. + +Space complexity: O(1) diff --git a/CPP/arrays/leetcode-problems/check if all points lie on straight line b/CPP/arrays/leetcode-problems/check if all points lie on straight line new file mode 100644 index 00000000..2a2555f2 --- /dev/null +++ b/CPP/arrays/leetcode-problems/check if all points lie on straight line @@ -0,0 +1,10 @@ +bool checkStraightLine( vector>& coordinates ) { + int dY = coordinates[1][1] - coordinates[0][1]; + int dX = coordinates[1][0] - coordinates[0][0]; + for( int i=2; i < coordinates.size(); i++ ) { + auto p = coordinates[i]; + if( dX*(p[1] - coordinates[0][1]) != dY*(p[0] - coordinates[0][0]) ) + return false; + } + return true; +} diff --git a/CPP/arrays/leetcode-problems/check if n and double exist b/CPP/arrays/leetcode-problems/check if n and double exist new file mode 100644 index 00000000..6db42a9c --- /dev/null +++ b/CPP/arrays/leetcode-problems/check if n and double exist @@ -0,0 +1,15 @@ +public: + bool checkIfExist(vector& arr) { + unordered_sets; + int n=arr.size(); + s.insert(arr[0]); + for(int i=1;i& nums, int k) { + int n=nums.size(); + unordered_mapm; + for(int i=0;i lks; + long long ans=0; + for(int x : a){ + for(int i=1;i<=(1<<22);i*=2){ + if(lks.count(i-x)) ans+=lks[i-x]; + } + lks[x]+=1; + } + return ans % (int)(1e9 + 7); diff --git a/CPP/arrays/leetcode-problems/count rectangles b/CPP/arrays/leetcode-problems/count rectangles new file mode 100644 index 00000000..611f7a20 --- /dev/null +++ b/CPP/arrays/leetcode-problems/count rectangles @@ -0,0 +1,20 @@ + vector countRectangles(vector>& rectangles, vector>& points) { + vector>v(101); + for(int i=0;ians; + for(int i=0;i& strs) { + int n=strs.size(); + int m=strs[0].size(); + vectorsorted(n-1,false); + int res=0; + int i,j; + for(j=0;jstrs[i+1][j]){ + res++; + break; + } + } + if(i& arr, int m, int k) { + + + int cnt=0; + for(int i=0;i+m < arr.size(); i++){ + + if(arr[i]!=arr[i+m]){ + cnt=0; + } + cnt += (arr[i] == arr[i+m]); + if(cnt == (k-1)*m) + return true; + + } + return false; + + } diff --git a/CPP/arrays/leetcode-problems/find no closest to zero b/CPP/arrays/leetcode-problems/find no closest to zero new file mode 100644 index 00000000..951dcb19 --- /dev/null +++ b/CPP/arrays/leetcode-problems/find no closest to zero @@ -0,0 +1,14 @@ + int findClosestNumber(vector& nums) { +// setting the ans to maximum value of int + int ans = INT_MAX ; + for(int i : nums){ + // checking if each value of nums is less than the max value + if(abs(i) < abs(ans)){ + ans = i ; //check for the lesser value + } + else if(abs(i) == abs(ans)){ + ans = max (ans,i) ; // return the maximum in cases there are multiple answers + } + } + return ans ; + } diff --git a/CPP/arrays/leetcode-problems/find smallest greater b/CPP/arrays/leetcode-problems/find smallest greater new file mode 100644 index 00000000..4838a279 --- /dev/null +++ b/CPP/arrays/leetcode-problems/find smallest greater @@ -0,0 +1,29 @@ + char nextGreatestLetter(vector& letters, char target) { + if (letters.back() <= target) return letters.front(); + int low = 0, high = letters.size() - 1; + while (low < high) { + auto mid = (low + high) / 2; + if (target < letters[mid]) high = mid; + else low = mid + 1; + } + return letters[low]; + } + method 2 + char nextGreatestLetter(vector& letters, char target) { + int n=letters.size(); + if(target>letters[n-1]||targettarget){ + ans=letters[mid]; + h=mid-1; + } + else{l=mid+1;} + } + + return ans; + } diff --git a/CPP/arrays/leetcode-problems/longest continuos increasing subsequence b/CPP/arrays/leetcode-problems/longest continuos increasing subsequence new file mode 100644 index 00000000..a8b0e9a4 --- /dev/null +++ b/CPP/arrays/leetcode-problems/longest continuos increasing subsequence @@ -0,0 +1,13 @@ + int findLengthOfLCIS(vector& nums) { + int res=1; + int n=nums.size(); + int curr=1; + for(int i=1;inums[i-1]){ + curr++; + res=max(res,curr); + } + else{curr=1;} + } + return res; + } diff --git a/CPP/arrays/leetcode-problems/make sum divisble by p b/CPP/arrays/leetcode-problems/make sum divisble by p new file mode 100644 index 00000000..5d45bef8 --- /dev/null +++ b/CPP/arrays/leetcode-problems/make sum divisble by p @@ -0,0 +1,14 @@ + int minSubarray(vector& A, int p) { + int n = A.size(), res = n, need = 0, cur = 0; + for (auto a : A) + need = (need + a) % p; + unordered_map last = {{0, -1}}; + for (int i = 0; i < n; ++i) { + cur = (cur + A[i]) % p; + last[cur] = i; + int want = (cur - need + p) % p; + if (last.count(want)) + res = min(res, i - last[want]); + } + return res < n ? res : -1; + } diff --git a/CPP/arrays/leetcode-problems/maximum average subarray b/CPP/arrays/leetcode-problems/maximum average subarray new file mode 100644 index 00000000..d4ce869d --- /dev/null +++ b/CPP/arrays/leetcode-problems/maximum average subarray @@ -0,0 +1,13 @@ + double findMaxAverage(vector& nums, int k) { + double max_sum=INT_MIN; + double sum=0; + int N=nums.size(); + for(int i=0;i& candies, long long k) { + int ans=0; + long long sum=0; + for(int i=0;i=k){ + ans=mid; + l=mid+1; + } + else{r=mid;} + } + return ans; + } diff --git a/CPP/arrays/leetcode-problems/maximum product b/CPP/arrays/leetcode-problems/maximum product new file mode 100644 index 00000000..f9427841 --- /dev/null +++ b/CPP/arrays/leetcode-problems/maximum product @@ -0,0 +1,7 @@ +int maximumProduct(vector& nums) { + sort(nums.begin(), nums.end()); + int n = nums.size(); + int temp1 = nums[n-1]*nums[n-2]*nums[n-3]; + int temp2 = nums[0]*nums[1]*nums[n-1]; + return temp1>temp2?temp1:temp2; +} diff --git a/CPP/arrays/leetcode-problems/maximum white tiles covered b/CPP/arrays/leetcode-problems/maximum white tiles covered new file mode 100644 index 00000000..a7fa9123 --- /dev/null +++ b/CPP/arrays/leetcode-problems/maximum white tiles covered @@ -0,0 +1,36 @@ + int maximumWhiteTiles(vector>& tiles, int carpetLen) { + vectorstart; + vectorend; + int n=tiles.size(); + for(int i=0;i0){curr-=prefix[i-1];} + ans=max(ans,curr); + } + else{ + int pos=upper_bound(end.begin(),end.end(),last)-end.begin(); + int curr=prefix[pos-1]; + if(i>0){curr-=prefix[i-1];} + if(last>=start[pos]){ + curr+=last-start[pos]+1; + } + ans=max(ans,curr); + } + } + return ans; + } diff --git a/CPP/arrays/leetcode-problems/merge sorted arrays b/CPP/arrays/leetcode-problems/merge sorted arrays new file mode 100644 index 00000000..90b627e3 --- /dev/null +++ b/CPP/arrays/leetcode-problems/merge sorted arrays @@ -0,0 +1,25 @@ + void merge(vector& nums1, int m, vector& nums2, int n) { + int i,j; + int gap=n+m; + for(gap=nextGap(gap);gap>0;gap=nextGap(gap)){ + for(i=0;i+gapnums1[i+gap]){ + swap(nums1[i],nums1[i+gap]); + } + } + for(j=gap>n?gap-n:0;inums2[j]){ + swap(nums1[i],nums2[j]); + } + } + if(jnums2[j+gap]){swap(nums2[j],nums2[j+gap]);} + } + } + } + for(int p=0;p& nums1, vector& nums2) { + long origDiff = 0, n = size(nums1), minDiff; + // calculating original difference without any replacement + for(int i = 0; i < n; i++) origDiff += abs(nums1[i] - nums2[i]); + minDiff = origDiff; + // sorted nums1 needed for using binary search + vectorarr = nums1; + sort(begin(arr), end(arr)); + for(int i = 0; i < n; i++){ + // find the newDiff after replacement + long newDiff = origDiff - abs(nums1[i] - nums2[i]) + abs(bs(arr, nums2[i]) - nums2[i]); + // minDiff will store minimum possible sum of difference after replacements + minDiff = min(minDiff, newDiff); + } + return minDiff % 1000000007; +} +// bs will return the element closest to k in arr. +int bs(vector& arr, int k){ + int n = size(arr), l = 0, r = n - 1, m, closest; + while(l <= r){ + m = (l + r) / 2; + if(arr[m] == k) return arr[m]; + if(arr[m] > k) r = m - 1; + else l = m + 1; + } + closest = arr[m]; + if(m - 1 >= 0 && abs(arr[m - 1] - k) < abs(arr[m] - k)) closest = arr[m - 1]; + if(m + 1 < n && abs(arr[m + 1] - k) < abs(arr[m] - k)) closest = arr[m + 1]; + return closest; +} diff --git a/CPP/arrays/leetcode-problems/minimum time to complete trips b/CPP/arrays/leetcode-problems/minimum time to complete trips new file mode 100644 index 00000000..43d2f95e --- /dev/null +++ b/CPP/arrays/leetcode-problems/minimum time to complete trips @@ -0,0 +1,34 @@ +class Solution { +public: + // this function will count totalTrips for the given time + // a = [1,2,3] , and at time 3 how many trips we can take? + // 3/1 + 3/2 + 3/3 => 3 + 1 + 1 = 5 Trips + long long int numberOfTripsForGivenTime(vector&a , long long int givenTime) + { + long long int totalTrips = 0; + for(auto x : a) + { + // convert it to long long int + long long int val = x; + + totalTrips += (givenTime / val); + } + return totalTrips; + } + long long minimumTime(vector& arr , int totalTrips) { + long long int lowestTime = 1; + long long int highestTime = 1e14; + while(lowestTime= totalTrips) + highestTime = mid; + else + lowestTime = mid+1; + } + return lowestTime; + } +}; +Time Complexity is - O(NlogD) , where D is 1e14 +Space Complexity is - O(1) diff --git a/CPP/arrays/leetcode-problems/no of equivalent domino pairs b/CPP/arrays/leetcode-problems/no of equivalent domino pairs new file mode 100644 index 00000000..51627572 --- /dev/null +++ b/CPP/arrays/leetcode-problems/no of equivalent domino pairs @@ -0,0 +1,9 @@ + int numEquivDominoPairs(vector>& dominoes) { + + unordered_map count; + int res = 0; + for (auto& d : dominoes) { + res += count[min(d[0], d[1]) * 10 + max(d[0], d[1])]++; + } + return res; + } diff --git a/CPP/arrays/leetcode-problems/palindrome with fixed length b/CPP/arrays/leetcode-problems/palindrome with fixed length new file mode 100644 index 00000000..0885a1d4 --- /dev/null +++ b/CPP/arrays/leetcode-problems/palindrome with fixed length @@ -0,0 +1,55 @@ + int temp; + long long start,end; + if((intLength%2)!=0){ + temp=intLength/2; + } + else{temp=intLength/2-1;} + start=pow(10,temp); + while(temp){ + end=end*10+9; + temp=temp/10; + } + long long r=end-start+1; + if on traversing queries[i]>r then return -1 + otherwise call following function for each query + +// C++ program of finding nth palindrome +// of k digit +#include +using namespace std; + +void nthPalindrome(int n, int k) +{ + // Determine the first half digits + int temp = (k & 1) ? (k / 2) : (k/2 - 1); + int palindrome = (int)pow(10, temp); + palindrome += n - 1; + + // Print the first half digits of palindrome + printf("%d", palindrome); + + // If k is odd, truncate the last digit + if (k & 1) + palindrome /= 10; + + // print the last half digits of palindrome + while (palindrome) + { + printf("%d", palindrome % 10); + palindrome /= 10; + } + printf("\n"); +} + +// Driver code +int main() +{ + int n = 6, k = 5; + printf("%dth palindrome of %d digit = ",n ,k); + nthPalindrome(n ,k); + + n = 10, k = 6; + printf("%dth palindrome of %d digit = ",n ,k); + nthPalindrome(n, k); + return 0; +} diff --git a/CPP/arrays/leetcode-problems/partition array into three parts with same sum b/CPP/arrays/leetcode-problems/partition array into three parts with same sum new file mode 100644 index 00000000..833fc9b8 --- /dev/null +++ b/CPP/arrays/leetcode-problems/partition array into three parts with same sum @@ -0,0 +1,3 @@ +A simple solution is to first find all the subarrays, store the sum of these subarrays with their starting and ending points, and then find three disjoint continuous subarrays with equal sum. Time complexity of this solution will be quadratic. +An efficient solution is to first find the sum S of all array elements. Check if this sum is divisible by 3 or not. This is because if sum is not divisible then the sum cannot be split in three equal sum sets. If there are three contiguous subarrays with equal sum, then sum of each subarray is S/3. Suppose the required pair of indices is (i, j) such that sum(arr[0..i]) = sum(arr[i+1..j]) = S/3. Also sum(arr[0..i]) = preSum[i] and sum(arr[i+1..j]) = preSum[j] – preSum[i]. This gives preSum[i] = preSum[j] – preSum[i] = S/3. This gives preSum[j] = 2*preSum[i]. Thus, the problem reduces to find two indices i and j such that preSum[i] = S/3 and preSum[j] = 2*(S/3). +For finding these two indices, traverse the array and store sum upto current element in a variable preSum. Check if preSum is equal to S/3 and 2*(S/3). diff --git a/CPP/arrays/leetcode-problems/plus one b/CPP/arrays/leetcode-problems/plus one new file mode 100644 index 00000000..e82ce912 --- /dev/null +++ b/CPP/arrays/leetcode-problems/plus one @@ -0,0 +1,41 @@ + vectorv; + bool flag=true; + int n=digits.size(); + if((n==1)&&(digits[0]==9)){ + v.push_back(1); + v.push_back(0); + return v; + } + else if((n==1)&&(digits[0]!=9)){digits[0]+=1; + return digits;} + for(int i=n-1;i>0;i--){ + if((digits[i]+1)<10){ + flag=false; + digits[i]+=1; + break; + } + + digits[i]+=1; + if(digits[i]>=10){digits[i]=digits[i]%10;} + } + if((digits[0]==9)&&flag){ + v.push_back(1); + v.push_back(0); + } + else{ + if(flag){ + v.push_back(digits[0]+1);} + else{v.push_back(digits[0]);} + } + for(int i=1;i plusOne(vector& digits) { + for (int i=digits.size(); i--; digits[i] = 0) + if (digits[i]++ < 9) + return digits; + digits[0]++; + digits.push_back(0); + return digits; +} diff --git a/CPP/arrays/leetcode-problems/remove on element b/CPP/arrays/leetcode-problems/remove on element new file mode 100644 index 00000000..8d37a456 --- /dev/null +++ b/CPP/arrays/leetcode-problems/remove on element @@ -0,0 +1,18 @@ +bool canBeIncreasing(vector& nums) { + int previous = nums[0]; + bool used = false; + for (int i = 1; i < nums.size(); i++){ + if (nums[i] <= previous){ // it's not strictly increasing + if (used) + return false; + // we haven't used the element removal yet. + used = true; + if (i == 1 || nums[i] > nums[i - 2]) // we remove the element from i - 1 position because it's bigger, so we update previous. + previous = nums[i]; + // else we remove current element and leave previous to it's existing value. + } else + previous = nums[i]; + } + return true; +} +//O(n) Time complexity diff --git a/CPP/arrays/leetcode-problems/search in sorted rotated array b/CPP/arrays/leetcode-problems/search in sorted rotated array new file mode 100644 index 00000000..58dbaca4 --- /dev/null +++ b/CPP/arrays/leetcode-problems/search in sorted rotated array @@ -0,0 +1,32 @@ + bool search(vector& nums, int target) { + int l=0; + int h=nums.size()-1; + while(l<=h){ + int mid=(l+h)/2; + if(nums[mid]==target){ + return true; + } + else if((nums[l]==nums[mid])&&(nums[mid]==nums[h])){ + l++; + h--; + } + else { + if(nums[mid]>=nums[l]){ + if(target>=nums[l]&&target=nums[mid]&&target<=nums[h]){ + l=mid+1; + } + else{h=mid-1;} + } + + + } + + } diff --git a/CPP/arrays/leetcode-problems/serach insert position b/CPP/arrays/leetcode-problems/serach insert position new file mode 100644 index 00000000..d53c19c9 --- /dev/null +++ b/CPP/arrays/leetcode-problems/serach insert position @@ -0,0 +1,15 @@ + int searchInsert(vector& nums, int target) { + int h=nums.size()-1; + int l=0; + while(l<=h){ + int mid=(l+h)/2; + if(nums[mid]==target){ + return mid; + } + else if(nums[mid] successfulPairs(vector& s, vector& p, long long suc) { + + vector v(s.size(),0); + sort(p.begin(),p.end()); + + for(int i=0;i= suc) + h = mid-1; + + else + l = mid+1; + } + + v[i] = p.size()-1-h; + } + + return v; + } diff --git a/CPP/arrays/leetcode-problems/summary ranges b/CPP/arrays/leetcode-problems/summary ranges new file mode 100644 index 00000000..8b29e99d --- /dev/null +++ b/CPP/arrays/leetcode-problems/summary ranges @@ -0,0 +1,35 @@ + vector summaryRanges(vector& arr) { + int n = arr.size(); // extracting size of the array + vector ans; // declaring answer array to store our answer + + string temp = ""; // temproray string that stores all possible answer + + for(int i = 0; i < n; i++) // start traversing from the array + { + int j = i; // declare anthor pointer that will move + + // run that pointer until our range is not break + while(j + 1 < n && arr[j + 1] == arr[j] + 1) + { + j++; + } + + // if j > i, that means we got our range more than one element + if(j > i) + { + temp += to_string(arr[i]); // first store starting point + temp += "->"; // then store arrow, as question wants it + temp += to_string(arr[j]); // and lastly store the end point + } + else // we got only one element as range + { + temp += to_string(arr[i]); // then store that element in temp + } + + ans.push_back(temp); // push one possible answer string to our answer + temp = ""; // again reintiliaze temp for new possible answers + i = j; // and move i to j for a fresh start + } + + return ans; // and at last finally return the answer array + } diff --git a/CPP/arrays/leetcode-problems/valid mountain array b/CPP/arrays/leetcode-problems/valid mountain array new file mode 100644 index 00000000..34025583 --- /dev/null +++ b/CPP/arrays/leetcode-problems/valid mountain array @@ -0,0 +1,6 @@ + bool validMountainArray(vector& A) { + int n = A.size(), i = 0, j = n - 1; + while (i + 1 < n && A[i] < A[i + 1]) i++; + while (j > 0 && A[j - 1] > A[j]) j--; + return i > 0 && i == j && j < n - 1; + } diff --git a/CPP/arrays/leetcode-problems/wiggle sort2 b/CPP/arrays/leetcode-problems/wiggle sort2 new file mode 100644 index 00000000..317401e9 --- /dev/null +++ b/CPP/arrays/leetcode-problems/wiggle sort2 @@ -0,0 +1,20 @@ + void wiggleSort(vector& nums) { + int n=nums.size(); + sort(nums.begin(),nums.end()); + int i=1; + int j=n-1; + int res[n]; + while(i Date: Mon, 3 Oct 2022 21:19:07 +0530 Subject: [PATCH 024/448] Binary Tree Series --- binarytreeuse.cpp | 551 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 551 insertions(+) create mode 100644 binarytreeuse.cpp diff --git a/binarytreeuse.cpp b/binarytreeuse.cpp new file mode 100644 index 00000000..cc5a58ff --- /dev/null +++ b/binarytreeuse.cpp @@ -0,0 +1,551 @@ +#include +#include"binarytree.h" +using namespace std; + +class node +{ + public: + int data; + node* next; +}; + +void printTree(binarytree*root) +{ + if(root==NULL) + return; + + cout<data<<":"; + if(root->left) + cout<<"L"<left->data<<","; + + if(root->right) + cout<<"R"<right->data<<","; + + cout<left); + printTree(root->right); +} + +void printlevelwise(binarytree*root) +{ + queue*> pendingnode; + pendingnode.push(root); + + while(pendingnode.size()!=0) + { + binarytree*front=pendingnode.front(); + cout<data<<":"; + pendingnode.pop(); + if(front->left) + { + cout<<"L"<left->data<<","; + pendingnode.push(front->left); + } + + if(front->right) + { + cout<<"R"<right->data<<","; + pendingnode.push(front->right); + } + + cout<* takeinput() +{ + int rootdata; + cout<<"enter data:"; + cin>>rootdata; + + if(rootdata==-1) + return NULL; + + binarytree*root=new binarytree (rootdata); + binarytree*leftchild=takeinput(); + binarytree*rightchild=takeinput(); + + root->left=leftchild; + root->right=rightchild; + + return root; + +} + + +binarytree*takeinputlevelwise() +{ + cout<<"enter root data : "; + int rootdata; + cin>>rootdata; + binarytree*root=new binarytree(rootdata); + queue*>pendingnodes; + pendingnodes.push(root); + while(pendingnodes.size()!=0) + { + binarytree*front=pendingnodes.front(); + pendingnodes.pop(); + cout<data<<" : "; + int child; + cin>>child; + if(child!=-1) + { + binarytree*leftchild=new binarytree(child); + front->left=leftchild; + pendingnodes.push(leftchild); + } + cout<data<<" : "; + cin>>child; + if(child!=-1) + { + binarytree*rightchild=new binarytree(child); + front->right=rightchild; + pendingnodes.push(rightchild); + } + } + + return root; + +} + +int countnodes(binarytree *root) +{ + if(root==NULL) + return 0; + + return 1 + countnodes(root->left) + countnodes(root->right); +} + +void postoder(binarytree*root) +{ + if(root==NULL) + return; + + postoder(root->left); + postoder(root->right); + cout<data<<" "; +} + +void preoder(binarytree*root) +{ + if(root==NULL) + return; + + cout<data<<" "; + preoder(root->left); + preoder(root->right); +} + +void inoder(binarytree*root) +{ + if(root==NULL) + return; + + inoder(root->left); + cout<data<<" "; + inoder(root->right); +} + +binarytree * treebuilding(int *in, int *pre, int preS,int preE,int inS,int inE) +{ + if(inS>inE) + { + return NULL; + } + + int rootdata=pre[preS]; + binarytree*root=new binarytree(rootdata); + + int rootindex=-1; + for(int i=inS;i<=inE;i++) + { + if(rootdata==in[i]) + { + rootindex=i; + break; + } + } + + + int lpreS=preS+1; + int linS = inS; + int linE = rootindex-1; + int lpreE = linE-linS+lpreS; + int rpreS = lpreE +1; + int rpreE = preE; + int rinS = rootindex +1; + int rinE = inE; + + + root->left=treebuilding(in,pre,lpreS,lpreE,linS,linE); + root->right=treebuilding(in,pre,rpreS,rpreE,rinS,rinE); + + return root; + + +} + +binarytree * buildtree(int *in,int *pre,int size) +{ + return treebuilding(in , pre , 0 , size -1 , 0 , size - 1); +} + +int height(binarytree*root) +{ + if(root==NULL) + return 0; + + return 1+max(height(root->left),height(root->right)); +} + +pair heightdiameter(binarytree*root) +{ + if(root==NULL) + { + pair p; + p.first=0; + p.second=0; + return p; + } + + pair leftans=heightdiameter(root->left); + pair rightans=heightdiameter(root->right); + + int leftheight=leftans.first; + int leftdiameter=leftans.second; + int rightheight=rightans.first; + int rightdiameter=rightans.second; + + int height=1 + max(leftheight,rightheight); + int diameter = max(leftheight+rightheight,max(leftdiameter,rightdiameter)); + + pairp; + p.first=height; + p.second=diameter; + return p; +} + +int sumofallnodes(binarytree*root) +{ + if(root==NULL) + { + return 0; + } + + return root->data + sumofallnodes(root->left) + sumofallnodes(root->right); + +} + +int maxnode(binarytree*root) +{ + if(root==NULL) + return -1; + + int maximum=root->data; + + maximum=max(maximum,max(maxnode(root->left),maxnode(root->right))); + return maximum; + +} + +bool findanode(binarytree*root,int x) +{ + if(root==NULL) + return false; + + if(root->data==x) + return true; + + return findanode(root->left,x) || findanode(root->right,x); +} + +pair balancedhelper(binarytree*root) +{ + if(root==NULL) + { + pair p; + p.first=true; + p.second=0; + return p; + } + + pair leftans=balancedhelper(root->left); + pair rightans=balancedhelper(root->right); + + int leftheight=leftans.second; + int rightheight=rightans.second; + + if(abs(leftheight-rightheight)>1) + { + pair p; + p.first=false; + p.second=1+max(leftheight,rightheight); + return p; + } + + pairans; + ans.first=leftans.first && rightans.first; + ans.second=1+max(leftans.second,rightans.second); + + return ans; + +} + +bool istreebalanced(binarytree*root) +{ + pairans=balancedhelper(root); + return ans.first; +} + +void leveloder(binarytree*root) +{ + queue*> pendingnodes; + pendingnodes.push(root); + pendingnodes.push(NULL); + + while(pendingnodes.size()!=0) + { + binarytree*front=pendingnodes.front(); + pendingnodes.pop(); + + if(pendingnodes.size()==0) + break; + + if(front==NULL) + { + cout<data<<" "; + if(front->left) + pendingnodes.push(front->left); + + if(front->right) + pendingnodes.push(front->right); + } + } +} + +binarytree*removeleafnodes(binarytree*root) +{ + if(root==NULL) + { + return NULL; + } + + if(root->left==NULL && root->right==NULL) + { + delete root; + return NULL; + } + + root->left=removeleafnodes(root->left); + root->right=removeleafnodes(root->right); + + return root; +} + +vector levelwiselinkedlist(binarytree*root) +{ + node *head=NULL; + node *tail=NULL; + vectoroutput; + queue*>pendingnodes; + pendingnodes.push(root); + pendingnodes.push(NULL); + + while(pendingnodes.size()!=0) + { + binarytree*front=pendingnodes.front(); + pendingnodes.pop(); + + if(pendingnodes.size()==0) + { + output.push_back(head); + break; + } + + if(front==NULL) + { + output.push_back(head); + head=NULL; + tail=NULL; + pendingnodes.push(NULL); + } + else + { + node *p=new node; + p->data=front->data; + p->next=NULL; + + if(head==NULL) + { + head=tail=p; + } + else + { + tail->next=p; + tail=p; + } + + if(front->left) + pendingnodes.push(front->left); + + if(front->right) + pendingnodes.push(front->right); + + } + } + + return output; +} + +void displaylinkedlist(node * p) +{ + while(p) + { + cout<data<<" "; + p=p->next; + } + cout<*root) +{ + stack*>s1; + stack*>s2; + + s1.push(root); + + while(s1.size()!=0 || s2.size()!=0) + { + while(s1.size()!=0) + { + binarytree*front=s1.top(); + s1.pop(); + cout<data<<" "; + if(front->left) + s2.push(front->left); + + if(front->right) + s2.push(front->right); + + } + + cout<*front=s2.top(); + s2.pop(); + cout<data<<" "; + if(front->right) + s1.push(front->right); + + if(front->left) + s1.push(front->left); + } + + cout<*root) +{ + stack*>s1; + stack*>s2; + + s1.push(root); + while(s1.size()!=0 || s2.size()!=0) + { + while(s1.size()!=0) + { + binarytree*front=s1.top(); + s1.pop(); + if(front->left) + s2.push(front->left); + + if(front->right) + s2.push(front->right); + + } + + if(s2.size()==1) + { + cout<data<<" "; + } + + while(s2.size()!=0) + { + binarytree*front=s2.top(); + s2.pop(); + if(front->left) + s1.push(front->left); + + if(front->right) + s1.push(front->right); + + } + + if(s1.size()==1) + { + cout<data<<" "; + } + + + + } + +} + +//////------------------PRACTICE QUESTIONS ON BINARY TREE ---------------------------------- +binarytree* create_insert_duplicate_nodes(binarytree*root) +{ + if(root==NULL) + return NULL; + + + binarytree*leftside=root->left; + binarytree*duplicatenode=new binarytree(root->data); + root->left=duplicatenode; + + duplicatenode->left= create_insert_duplicate_nodes(leftside); + root->right = create_insert_duplicate_nodes(root->right); + + return root; + +} + +int pair_sum_binarytree(binarytree*root,int x) +{ + //TODO pair sum binarytree +} + + +int main() +{ + // 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 + // 1 2 3 4 5 6 7 -1 -1 -1 -1 8 9 -1 -1 -1 -1 -1 -1 + //8 5 10 2 6 -1 6 -1 -1 -1 7 -1 -1 -1 -1 + // 1 2 3 4 5 -1 -1 -1 -1 -1 -1 + // 1 2 3 4 5 -1 8 -1 -1 6 -1 -1 -1 -1 -1 + // int in[]={4,2,5,1,8,6,9,33,7}; + // int pre[]={1,2,4,5,33,6,8,9,7}; + // binarytree*root=buildtree(in,pre,9); + + binarytree*root=takeinputlevelwise(); + printlevelwise(root); + cout< Date: Mon, 3 Oct 2022 21:20:20 +0530 Subject: [PATCH 025/448] Program to find the closest number in an array to a given number --- Python/findClosestNumberr.py | 37 ++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 Python/findClosestNumberr.py diff --git a/Python/findClosestNumberr.py b/Python/findClosestNumberr.py new file mode 100644 index 00000000..7e65f105 --- /dev/null +++ b/Python/findClosestNumberr.py @@ -0,0 +1,37 @@ +def get_closest(val1, val2, t): + if abs(val1 - t) <= abs(val2 - t): + return val1 + else: + return val2 + + +def find_closest(arr, n, t): + """ + Using Binary Search find the number closest + to target in the given sorted array + """ + if t <= arr[0]: + return arr[0] + elif t >= arr[n - 1]: + return arr[n - 1] + left, right = 0, n + while left < right: + mid = (left + right) // 2 + if arr[mid] == t: + return arr[mid] + elif t < arr[mid]: + if mid > 0 and arr[mid - 1] < t: + return get_closest(arr[mid - 1], arr[mid], t) + right = mid + else: + if mid < n - 1 and arr[mid + 1] > t: + return get_closest(arr[mid], arr[mid + 1], t) + left = mid + 1 + return arr[mid] + + +if __name__ == "__main__": + array = [1, 2, 4, 5, 6, 6, 8, 9] + size = len(array) + target = 7 + print(find_closest(array, size, target)) From 4d14bf2372578c0c6305252c03cd9b8e5677375c Mon Sep 17 00:00:00 2001 From: aayush920 <76609501+aayush920@users.noreply.github.com> Date: Mon, 3 Oct 2022 21:26:50 +0530 Subject: [PATCH 026/448] Create Sum query.cpp --- CPP/Segment Tree/Sum query.cpp | 171 +++++++++++++++++++++++++++++++++ 1 file changed, 171 insertions(+) create mode 100644 CPP/Segment Tree/Sum query.cpp diff --git a/CPP/Segment Tree/Sum query.cpp b/CPP/Segment Tree/Sum query.cpp new file mode 100644 index 00000000..7ed828ee --- /dev/null +++ b/CPP/Segment Tree/Sum query.cpp @@ -0,0 +1,171 @@ +#include +using namespace std; +//common file for PBDS +#include +//including tree_order_statistics_node_update +#include +using namespace __gnu_pbds; +//macro definition +template +using ordered_set= tree, rb_tree_tag, tree_order_statistics_node_update>; +template +using o_multiset = tree, rb_tree_tag, tree_order_statistics_node_update>; +//member functions : +//1. order_of_key(k) : number of elements strictly lesser than k +//2. find_by_order(k) : k-th element in the set + +//Optimisations (Black Magic 🌑) +#pragma GCC optimize("O3,unroll-loops") +#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt") + +#define ll long long +#define lld long double +#define ull unsigned long long +#define rep(i, n) for (ll i = 0; i < n; i++) +#define repk(i, k, n) for (ll i = k; k < n ? i < n : i > n; k < n ? i++ : i--) +#define input(vec) for (auto &el : vec) cin >> el; +#define print(vec) for (auto &el : vec) cout << el<<" "; +#define bit(x) __builtin_popcount(x) +#define bitll(x) __builtin_popcountll(x) +#define popb pop_back +#define pb push_back +#define eb emplace_back +#define ub upper_bound +#define lb lower_bound +#define ff first +#define ss second +#define um unordered_map +#define om ordered_map +#define all(x) (x).begin(),(x).end() +#define minpq priority_queue>pq; +#define maxpq priority_queuepq; +#define uniq(x) (x).erase(unique(all(x)), (x).end()) +#define precision(x, y) fixed << setprecision(y) << x +#define PI 3.1415926535897932384626 +#define sz(x) ((ll)(x).size()) +#define r_search(a,b) regex_search(a,regex(b)) //search b in a +#define r_match(a,b) regex_match(a,regex(b)) //match b in a +#define r_replace(a,b,c) regex_replace(a,regex(b),c) //replace b with c in a +#define present(b, a) ((a).find((b)) != (a).end()) //if b is present in a +#define nl '\n' +const ll mod = 1e9 + 7; //1000000007 +const ll mod2 = 998244353; +const ll inf = LLONG_MAX; +const lld epsilon = 1e-12; +typedef pair pl; +typedef pair pc; +typedef pair pi; +typedef pair pd; +typedef vector vl; +typedef vector vc; +typedef vector vpl; +typedef vector vvl; +typedef vector vi; +typedef vector vpc; +typedef vector vpi; +typedef vector vvi; +typedef vector vs; +typedef vector> vvs; + +// #ifndef ONLINE_JUDGE +#define debug(x) cerr << #x <<" "; _print(x); cerr << endl; +// #else +// #define debug(x) +// #endif + +void _print(ll t) {cerr << t;} +void _print(int t) {cerr << t;} +void _print(string t) {cerr << t;} +void _print(char t) {cerr << t;} +void _print(lld t) {cerr << t;} +void _print(double t) {cerr << t;} +void _print(ull t) {cerr << t;} + +template void _print(pair p); +template void _print(vector v); +template void _print(set v); +template void _print(map v); +template void _print(multiset v); +template void _print(pair p) {cerr << "{"; _print(p.ff); cerr << ","; _print(p.ss); cerr << "}";} +template void _print(vector v) {cerr << "[ "; for (T i : v) {_print(i); cerr << " ";} cerr << "]";} +template void _print(set v) {cerr << "[ "; for (T i : v) {_print(i); cerr << " ";} cerr << "]";} +template void _print(multiset v) {cerr << "[ "; for (T i : v) {_print(i); cerr << " ";} cerr << "]";} +template void _print(map v) {cerr << "[ "; for (auto i : v) {_print(i); cerr << " ";} cerr << "]";} +template void _print(unordered_map v) {cerr << "[ "; for (auto i : v) {_print(i); cerr << " ";} cerr << "]";} + +// ------------------------Do not write above this line----------------------------------------------------------------------------------------------------------------- +//Segment-Tree (Sum-Update, Sum-Query) +//1-based indexing +//pass the vectors as reference +void build_segtree(vl &vec,ll curr,ll l,ll r,vl &segtree){ + if(l==r){ + segtree[curr]=vec[l]; + } + else{ + int mid=(l+r)/2; + build_segtree(vec,2*curr,l,mid,segtree); + build_segtree(vec,2*curr+1,mid+1,r,segtree); + segtree[curr]=segtree[2*curr]+segtree[2*curr+1]; + } +} + +ll sum_segtree(ll curr,ll curr_l,ll curr_r,ll l,ll r,vl &segtree){ + if(l>r){ + return 0; + } + + if(l==curr_l and r==curr_r){ + return segtree[curr]; + } + + ll mid=(curr_l+curr_r)/2; + return sum_segtree(2*curr,curr_l,mid,l,min(r,mid),segtree)+sum_segtree(2*curr+1,mid+1,curr_r,max(l,mid+1),r,segtree); +} + +void update_segtree(ll curr,ll l,ll r,ll pos,ll new_val,vl &segtree){ + if(l==r){ + segtree[curr]=new_val; + } + else{ + ll mid=(l+r)/2; + if(pos<=mid){ + update_segtree(2*curr,l,mid,pos,new_val,segtree); + } + else{ + update_segtree(2*curr+1,mid+1,r,pos,new_val,segtree); + } + segtree[curr]=segtree[2*curr]+segtree[2*curr+1]; + } +} + +void solve(){ + ll n; + cin>>n; + vl vec(n); + input(vec); + + vl segtree(4*n+1); + //TreeBuild + build_segtree(vec,1,0,n-1,segtree); //(input array,curr. vertex,start,end,segtree array,size) + + //Sum-query + cout<>t; + while(t--){ + solve(); + } + return 0; +} From ab9bb9bf38cd0f306242fe4852db088b18c75be5 Mon Sep 17 00:00:00 2001 From: Vkwinner <72137312+Vkwinner@users.noreply.github.com> Date: Mon, 3 Oct 2022 21:51:15 +0530 Subject: [PATCH 027/448] Create Max_Consecutive_Ones.cpp returns the max consecutive ones in a boolean array --- CPP/arrays/Max_Consecutive_Ones.cpp | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 CPP/arrays/Max_Consecutive_Ones.cpp diff --git a/CPP/arrays/Max_Consecutive_Ones.cpp b/CPP/arrays/Max_Consecutive_Ones.cpp new file mode 100644 index 00000000..c6278b1f --- /dev/null +++ b/CPP/arrays/Max_Consecutive_Ones.cpp @@ -0,0 +1,23 @@ +#include +using namespace std; + +int maxones(bool a[],int n){ + int res=0,cur=0; + for(int i=0;i Date: Mon, 3 Oct 2022 21:56:27 +0530 Subject: [PATCH 028/448] Create Decimal_to_Binary.cpp This program converts decimal number to its binary equivalent. --- Decimal_to_Binary.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 Decimal_to_Binary.cpp diff --git a/Decimal_to_Binary.cpp b/Decimal_to_Binary.cpp new file mode 100644 index 00000000..5871e88e --- /dev/null +++ b/Decimal_to_Binary.cpp @@ -0,0 +1,17 @@ +#include +using namespace std; + +void binary(int n){ + if(n==0){ + return; + } + binary(n/2); + cout<<(n%2); +} + +int main(){ + int n; + cin>>n; + binary(n); + return 0; +} From 6e31856181ce8ab9c740f74d8f76579c7e8b14ac Mon Sep 17 00:00:00 2001 From: Rohit Kumar <80086654+rohit1107-2002@users.noreply.github.com> Date: Mon, 3 Oct 2022 22:09:07 +0530 Subject: [PATCH 029/448] Efficient greedy solution of Indian Coin Change Problem --- CPP/Problems/1_INDIAN_COIN_CHANGE_PROBLEM.CPP | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 CPP/Problems/1_INDIAN_COIN_CHANGE_PROBLEM.CPP diff --git a/CPP/Problems/1_INDIAN_COIN_CHANGE_PROBLEM.CPP b/CPP/Problems/1_INDIAN_COIN_CHANGE_PROBLEM.CPP new file mode 100644 index 00000000..eed528eb --- /dev/null +++ b/CPP/Problems/1_INDIAN_COIN_CHANGE_PROBLEM.CPP @@ -0,0 +1,33 @@ +// INDIAN COIN CHANGE PROBLEM +// FROM AN ARRAY OF DENOMINATION AND FOR VALUE X , FIND MININUM NUMBER OF COINS TO MAKE VALUE X + +#include +#include +#include +using namespace std; + +int main() +{ + int n,x; + cin>>n>>x; + + + vector v(n); + + for(int i=0;i>v[i]; + } + + sort(v.begin(),v.end(),greater()); + int coin=0; + + for(int i=0;i Date: Mon, 3 Oct 2022 22:15:09 +0530 Subject: [PATCH 030/448] Create Leetcode 1338 solution.cpp --- CPP/Problems/Leetcode 1338 solution.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 CPP/Problems/Leetcode 1338 solution.cpp diff --git a/CPP/Problems/Leetcode 1338 solution.cpp b/CPP/Problems/Leetcode 1338 solution.cpp new file mode 100644 index 00000000..d3fbf9c5 --- /dev/null +++ b/CPP/Problems/Leetcode 1338 solution.cpp @@ -0,0 +1,16 @@ +class Solution { +public: + int numSubarraysWithSum(vector& nums, int goal) { + unordered_map m; + m[0]=1; + int ans=0,s=0; + for(auto x:nums) + { + s+=x; + if(m.find(s-goal)!=m.end()) + ans+=m[s-goal]; + m[s]++; + } + return ans; + } +}; From d9920ce84fe4732a15179d30d04367123bbfa3d9 Mon Sep 17 00:00:00 2001 From: Parth Saini <56781801+parthsaini08@users.noreply.github.com> Date: Mon, 3 Oct 2022 22:16:44 +0530 Subject: [PATCH 031/448] Create Leetcode 930 solution.cpp --- CPP/Problems/Leetcode 930 solution.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 CPP/Problems/Leetcode 930 solution.cpp diff --git a/CPP/Problems/Leetcode 930 solution.cpp b/CPP/Problems/Leetcode 930 solution.cpp new file mode 100644 index 00000000..d3fbf9c5 --- /dev/null +++ b/CPP/Problems/Leetcode 930 solution.cpp @@ -0,0 +1,16 @@ +class Solution { +public: + int numSubarraysWithSum(vector& nums, int goal) { + unordered_map m; + m[0]=1; + int ans=0,s=0; + for(auto x:nums) + { + s+=x; + if(m.find(s-goal)!=m.end()) + ans+=m[s-goal]; + m[s]++; + } + return ans; + } +}; From 809779ed87a66cd9656998390d843a4943d8e53f Mon Sep 17 00:00:00 2001 From: Parth Saini <56781801+parthsaini08@users.noreply.github.com> Date: Mon, 3 Oct 2022 22:17:36 +0530 Subject: [PATCH 032/448] Update Leetcode 1338 solution.cpp --- CPP/Problems/Leetcode 1338 solution.cpp | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/CPP/Problems/Leetcode 1338 solution.cpp b/CPP/Problems/Leetcode 1338 solution.cpp index d3fbf9c5..05c47e49 100644 --- a/CPP/Problems/Leetcode 1338 solution.cpp +++ b/CPP/Problems/Leetcode 1338 solution.cpp @@ -1,16 +1,21 @@ class Solution { public: - int numSubarraysWithSum(vector& nums, int goal) { + int minSetSize(vector& arr) { + vector> ans; unordered_map m; - m[0]=1; - int ans=0,s=0; - for(auto x:nums) + for(auto x:arr) + m[x]++; + for(auto x:m) + ans.push_back({x.second,x.first}); + sort(ans.begin(),ans.end(),greater>()); + int fans=0,temp=0,n=arr.size()/2; + for(int i=0;i=n) + return fans; } - return ans; + return 0; } }; From 252ac14cd7bd9381d8e56489eac3c8171195969e Mon Sep 17 00:00:00 2001 From: Parth Saini <56781801+parthsaini08@users.noreply.github.com> Date: Mon, 3 Oct 2022 22:18:58 +0530 Subject: [PATCH 033/448] Delete Leetcode 930 solution.cpp --- Leetcode 930 solution.cpp | 16 ---------------- 1 file changed, 16 deletions(-) delete mode 100644 Leetcode 930 solution.cpp diff --git a/Leetcode 930 solution.cpp b/Leetcode 930 solution.cpp deleted file mode 100644 index 13c6fbca..00000000 --- a/Leetcode 930 solution.cpp +++ /dev/null @@ -1,16 +0,0 @@ -class Solution { -public: - int numSubarraysWithSum(vector& nums, int goal) { - unordered_map m; - m[0]=1; - int ans=0,s=0; - for(auto x:nums) - { - s+=x; - if(m.find(s-goal)!=m.end()) - ans+=m[s-goal]; - m[s]++; - } - return ans; - } -}; \ No newline at end of file From edfffca1d6e27f23d5e1757d05487d68c7d2e58e Mon Sep 17 00:00:00 2001 From: Parth Saini <56781801+parthsaini08@users.noreply.github.com> Date: Mon, 3 Oct 2022 22:19:09 +0530 Subject: [PATCH 034/448] Delete Leetocode 1338 solution.cpp --- Leetocode 1338 solution.cpp | 21 --------------------- 1 file changed, 21 deletions(-) delete mode 100644 Leetocode 1338 solution.cpp diff --git a/Leetocode 1338 solution.cpp b/Leetocode 1338 solution.cpp deleted file mode 100644 index 80654338..00000000 --- a/Leetocode 1338 solution.cpp +++ /dev/null @@ -1,21 +0,0 @@ -class Solution { -public: - int minSetSize(vector& arr) { - vector> ans; - unordered_map m; - for(auto x:arr) - m[x]++; - for(auto x:m) - ans.push_back({x.second,x.first}); - sort(ans.begin(),ans.end(),greater>()); - int fans=0,temp=0,n=arr.size()/2; - for(int i=0;i=n) - return fans; - } - return 0; - } -}; \ No newline at end of file From 8a574b184183c5a1a42e004723940acf3bb0cf5a Mon Sep 17 00:00:00 2001 From: Soham Datta Date: Mon, 3 Oct 2022 22:22:54 +0530 Subject: [PATCH 035/448] added plagiarism finder and resolved issue #297 --- Python/plagiarism.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 Python/plagiarism.py diff --git a/Python/plagiarism.py b/Python/plagiarism.py new file mode 100644 index 00000000..e6f47bfc --- /dev/null +++ b/Python/plagiarism.py @@ -0,0 +1,15 @@ +from difflib import SequenceMatcher + + +def findSimilarity(f1, f2): + with open(f1, errors="ignore") as file1, open(f2, errors="ignore") as file2: + f1_content = file1.read() + f2_content = file2.read() + similarity = SequenceMatcher(None, f1_content, f2_content).ratio() + print(f"The files are {similarity*100}% similar") + + +if __name__ == '__main__': + f1 = input("Enter path for first file:") + f2 = input("Enter path for second file: ") + findSimilarity(f1, f2) From b25c72c2b4f8d0d1d3279e041ab47106cc40aa93 Mon Sep 17 00:00:00 2001 From: Rohit Kumar <80086654+rohit1107-2002@users.noreply.github.com> Date: Mon, 3 Oct 2022 22:23:20 +0530 Subject: [PATCH 036/448] Efficient greedy solution of Activity Selection Problem --- CPP/Problems/2_ACTIVITY_SELECTION_PROBLEM.CPP | 91 +++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 CPP/Problems/2_ACTIVITY_SELECTION_PROBLEM.CPP diff --git a/CPP/Problems/2_ACTIVITY_SELECTION_PROBLEM.CPP b/CPP/Problems/2_ACTIVITY_SELECTION_PROBLEM.CPP new file mode 100644 index 00000000..3c22927d --- /dev/null +++ b/CPP/Problems/2_ACTIVITY_SELECTION_PROBLEM.CPP @@ -0,0 +1,91 @@ +// GIVEN N ACTIVITIES WITH THEIR START TIME AND FINISH TIME +// FIND MINIMUM NO OF ACTIVITIES THAT CAN BE PERFORMED BY A SINGLE PERSON ,ASSUMING CAN DO SINGLE WORK AT A TIME + +#include +#include +#include +using namespace std; + +// bool compare(pair p1,pair p2) +// { +// return p1.second>n; + +// vector> v; + +// for(int i=0;i>start>>end; + +// v.push_back(make_pair(start,end)); + +// } + +// sort(v.begin(),v.end(),compare); + +// int task=1; +// int new_end=v[0].second; + +// for(int i=1;i=new_end) +// { +// task++; +// new_end=v[i].second; +// } +// } + +// cout< &a,vector &b) + { + return a[1]>n; + + vector> v; + + for(int i=0;i>start>>end; + + v.push_back({start,end}); + + } + + // sort(v.begin(),v.end(),[&](vector &a,vector &b) + // { + // return a[1]=new_end) + { + task++; + new_end=v[i][1]; + } + } + + cout< Date: Mon, 3 Oct 2022 22:26:38 +0530 Subject: [PATCH 037/448] Efficient greedy solution of Fractional Knapsack Problem --- CPP/Problems/3_FRACTIONAL_KNAPSACK.CPP | 50 ++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 CPP/Problems/3_FRACTIONAL_KNAPSACK.CPP diff --git a/CPP/Problems/3_FRACTIONAL_KNAPSACK.CPP b/CPP/Problems/3_FRACTIONAL_KNAPSACK.CPP new file mode 100644 index 00000000..aa1f19fd --- /dev/null +++ b/CPP/Problems/3_FRACTIONAL_KNAPSACK.CPP @@ -0,0 +1,50 @@ +// GIVEN N ITEMS ( WEIGHT,VALUE) AND WEIGHT OF KNAPSACK W . FIND VALUE OF ITEMS IN KNAPSACK SUCH THAT MAXIMUM + +#include +#include +#include +using namespace std; + +bool compare(pair p1,pair p2) +{ + return ((double)p1.first/p1.second)>((double)p2.first/p2.second); +} + +int main() +{ + int n; + cin>>n; + + vector> v(n); + + for(int i=0;i>v[i].first>>v[i].second; + } + + int w; + cin>>w; + + sort(v.begin(),v.end(),compare); + + int ans=0; + + for(int i=0;i=v[i].second) + { + ans+=v[i].first; + w-=v[i].second; + } + else + { + double vw=((double)v[i].first/v[i].second); + ans+= vw*w; + w=0; + break; + } + } + + cout< Date: Mon, 3 Oct 2022 22:29:54 +0530 Subject: [PATCH 038/448] Efficient greedy solution of Optimal Merge Pattern Problem --- CPP/Problems/4_OPTIMAL_MERGE_PATTERN.CPP | 44 ++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 CPP/Problems/4_OPTIMAL_MERGE_PATTERN.CPP diff --git a/CPP/Problems/4_OPTIMAL_MERGE_PATTERN.CPP b/CPP/Problems/4_OPTIMAL_MERGE_PATTERN.CPP new file mode 100644 index 00000000..9ff29c96 --- /dev/null +++ b/CPP/Problems/4_OPTIMAL_MERGE_PATTERN.CPP @@ -0,0 +1,44 @@ +// OPTIMAL MERGE PATTERN +// GIVEN N FILES OF DIFFERENT COMPUTATION TIME , WE HAVE TO JOIN ANY TWO TIMES TOGETHER.AND PUSH IT TO THE LIST +// TILL ONLY 1 TIME LEFT . FIND THE MINIMUM COST TO JOIN ALL TKE ROPES TOGETHER. + +#include +#include +#include +using namespace std; + + +int main() +{ + + int n; + cin>>n; + + vector v(n); + + for(int i=0;i>v[i]; + } + + + + priority_queue,greater> pq(v.begin(),v.end()); + + int ans=0; + + while(pq.size()>1) + { + int a=pq.top(); + pq.pop(); + int b=pq.top(); + pq.pop(); + + int new_time=(a+b); + ans+=new_time; + pq.push(new_time); + } + + cout< Date: Mon, 3 Oct 2022 22:34:21 +0530 Subject: [PATCH 039/448] Create Copy_List_with_Random_Pointer.java --- .../Copy_List_with_Random_Pointer.java | 81 +++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 Java/Linked List/Copy_List_with_Random_Pointer.java diff --git a/Java/Linked List/Copy_List_with_Random_Pointer.java b/Java/Linked List/Copy_List_with_Random_Pointer.java new file mode 100644 index 00000000..634351b6 --- /dev/null +++ b/Java/Linked List/Copy_List_with_Random_Pointer.java @@ -0,0 +1,81 @@ +// https://leetcode.com/problems/copy-list-with-random-pointer/ + +/* +// Definition for a Node. +class Node { + int val; + Node next; + Node random; + public Node(int val) { + this.val = val; + this.next = null; + this.random = null; + } +} +*/ + +// Using extra space - Map +class Solution { + public Node copyRandomList(Node head) { + if(head == null) return null; + + Node curr = head, newHead = new Node(0); + Node newCurr = newHead; + HashMap map = new HashMap(); + + while(curr != null){ + if(!map.containsKey(curr)){ + newCurr.next = new Node(curr.val); + map.put(curr, newCurr.next); + } else newCurr.next = map.get(curr); + + newCurr = newCurr.next; + + if(curr.random != null){ + if(!map.containsKey(curr.random)){ + newCurr.random = new Node(curr.random.val); + map.put(curr.random, newCurr.random); + } else newCurr.random = map.get(curr.random); + } + + curr = curr.next; + } + + return newHead.next; + } +} + +// Using constant space - inplace temp update +class Solution { + public Node copyRandomList(Node head) { + if(head == null) return null; + + Node curr = head, newHead = new Node(0); + Node newCurr = newHead, next = curr; + + while(curr != null){ + next = curr.next; + curr.next = new Node(curr.val); + curr.next.next = next; + curr = next; + } + + curr = head; + while(curr != null && curr.next != null){ + if(curr.random != null) curr.next.random = curr.random.next; + + curr = curr.next.next; + } + + curr = head; + while(curr != null && curr.next != null){ + next = curr.next.next; + newCurr.next = curr.next; + newCurr = newCurr.next; + curr.next = next; + curr = next; + } + + return newHead.next; + } +} From 421fdc127051cceb66050782dcde158bc8edd2b4 Mon Sep 17 00:00:00 2001 From: CHALLANIKITHA <66379973+CHALLANIKITHA@users.noreply.github.com> Date: Mon, 3 Oct 2022 22:34:24 +0530 Subject: [PATCH 040/448] Create LetterCombinationsOfPhoneNumber.py --- Python/LetterCombinationsOfPhoneNumber.py | 39 +++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 Python/LetterCombinationsOfPhoneNumber.py diff --git a/Python/LetterCombinationsOfPhoneNumber.py b/Python/LetterCombinationsOfPhoneNumber.py new file mode 100644 index 00000000..2493fd65 --- /dev/null +++ b/Python/LetterCombinationsOfPhoneNumber.py @@ -0,0 +1,39 @@ +""" + +https://leetcode.com/problems/letter-combinations-of-a-phone-number/ +Given a string containing digits from 2-9 inclusive, return all possible letter combinations that the number could represent. Return the answer in any order. + +""" +class Solution(object): + def letterCombinations(self, digits): + """ + :type digits: str + :rtype: List[str] + """ + val="" + finalset=[] + count=0 + dic={ + 2:"abc", + 3:"def", + 4:"ghi", + 5:"jkl", + 6:"mno", + 7:"pqrs", + 8:"tuv", + 9:"wxyz", + } + if len(digits)==0: + return finalset + def letter(nums,digits,count,val): + if count==len(nums): + finalset.append(val) + return + a=int(digits[0]) + p=dic[a] + for i in range(0,len(p)): + letter(nums,digits[1:],count+1,val+p[i]) + letter(digits,digits,0,val) + return finalset + + From 8a368cf808b6f91ffd3b047a6c7c3a62267a0e3f Mon Sep 17 00:00:00 2001 From: Ayush Rawat Date: Mon, 3 Oct 2022 22:39:23 +0530 Subject: [PATCH 041/448] Create ceiling.java --- Java/ceiling.java | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 Java/ceiling.java diff --git a/Java/ceiling.java b/Java/ceiling.java new file mode 100644 index 00000000..3f1c1d0e --- /dev/null +++ b/Java/ceiling.java @@ -0,0 +1,36 @@ +public class Ceiling { + + public static void main(String[] args) { + int[] arr = {2, 3, 5, 9, 14, 16, 18}; + int target = 15; + int ans = ceiling(arr, target); + System.out.println(ans); + } + + // return the index of smallest no >= target + static int ceiling(int[] arr, int target) { + + // but what if the target is greater than the greatest number in the array + if (target > arr[arr.length - 1]) { + return -1; + } + int start = 0; + int end = arr.length - 1; + + while(start <= end) { + // find the middle element +// int mid = (start + end) / 2; // might be possible that (start + end) exceeds the range of int in java + int mid = start + (end - start) / 2; + + if (target < arr[mid]) { + end = mid - 1; + } else if (target > arr[mid]) { + start = mid + 1; + } else { + // ans found + return mid; + } + } + return start; + } +} From d007ec8131c12db3dc2eb081a721e5031ec54267 Mon Sep 17 00:00:00 2001 From: Soham Datta Date: Mon, 3 Oct 2022 22:41:21 +0530 Subject: [PATCH 042/448] added python example for hashtables, resolved issue #302 --- Python/hashtables/firstRecurringnum.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 Python/hashtables/firstRecurringnum.py diff --git a/Python/hashtables/firstRecurringnum.py b/Python/hashtables/firstRecurringnum.py new file mode 100644 index 00000000..9a14ef39 --- /dev/null +++ b/Python/hashtables/firstRecurringnum.py @@ -0,0 +1,23 @@ +# finding the first recurring character in a list using a hashtable +def func(mylist): + + for i in range(0, len(mylist)): + for j in range(i+1, len(mylist)): + if mylist[i] == mylist[j]: + return mylist[i] + return 0 + + +def hashtable(mylist): + mydict = {} + for i in range(0, len(mylist)): + if mylist[i] in mydict: + return mylist[i] + else: + mydict[mylist[i]] = i + return 0 + + +mylist = [2, 3, 54, 55, 2, 90, 34, 3, 54] +x = hashtable(mylist) +print(x) From 49203678e67750f1159cc2e8fe7dd254f2532e02 Mon Sep 17 00:00:00 2001 From: yusmnn <76932249+yusmnn@users.noreply.github.com> Date: Tue, 4 Oct 2022 01:30:36 +0800 Subject: [PATCH 043/448] bubblesort --- Java/bubblesort.java | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 Java/bubblesort.java diff --git a/Java/bubblesort.java b/Java/bubblesort.java new file mode 100644 index 00000000..436662e3 --- /dev/null +++ b/Java/bubblesort.java @@ -0,0 +1,35 @@ +public class BubbleSortExample { + static void bubbleSort(int[] arr) { + int n = arr.length; + int temp = 0; + for(int i=0; i < n; i++){ + for(int j=1; j < (n-i); j++){ + if(arr[j-1] > arr[j]){ + //swap elements + temp = arr[j-1]; + arr[j-1] = arr[j]; + arr[j] = temp; + } + + } + } + + } + public static void main(String[] args) { + int arr[] ={3,60,35,2,45,320,5}; + + System.out.println("Array Before Bubble Sort"); + for(int i=0; i < arr.length; i++){ + System.out.print(arr[i] + " "); + } + System.out.println(); + + bubbleSort(arr);//sorting array elements using bubble sort + + System.out.println("Array After Bubble Sort"); + for(int i=0; i < arr.length; i++){ + System.out.print(arr[i] + " "); + } + + } +} From 6967c322ce59097d5b4144b47f4089ddcbe421c5 Mon Sep 17 00:00:00 2001 From: priyanshu mundra <97145602+Spyder15@users.noreply.github.com> Date: Mon, 3 Oct 2022 23:07:32 +0530 Subject: [PATCH 044/448] organized CPP code and added new folder wise code --- CPP/sorting/3Sum Closest.cpp | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 CPP/sorting/3Sum Closest.cpp diff --git a/CPP/sorting/3Sum Closest.cpp b/CPP/sorting/3Sum Closest.cpp new file mode 100644 index 00000000..0c0fe9fc --- /dev/null +++ b/CPP/sorting/3Sum Closest.cpp @@ -0,0 +1,26 @@ +class Solution { +public: + int threeSumClosest(vector& nums, int target) { + sort(nums.begin(), nums.end()); + int sum, min = INT_MAX; + for (int i = 0; i < nums.size() - 2; i++) { + if (i == 0 || nums[i] != nums[i - 1]) { + int l = i + 1, r = nums.size() - 1; + while (l < r) { + int nsum = nums[r] + nums[l] + nums[i]; + if (nsum == target) + return nsum; + else if (nsum < target) + l++; + else + r--; + if (abs(nsum - target) < min) { + sum = nsum; + min = abs(sum - target); + } + } + } + } + return sum; + } +}; From af27314656c268690677df94c9c3e94674557732 Mon Sep 17 00:00:00 2001 From: Himanshu Sharma <97340980+Robo707@users.noreply.github.com> Date: Tue, 4 Oct 2022 00:04:00 +0530 Subject: [PATCH 045/448] Stack Question --- Java/Balanced_Brackets.java | 38 +++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 Java/Balanced_Brackets.java diff --git a/Java/Balanced_Brackets.java b/Java/Balanced_Brackets.java new file mode 100644 index 00000000..2b653619 --- /dev/null +++ b/Java/Balanced_Brackets.java @@ -0,0 +1,38 @@ +//For a given a string expression containing only round brackets or parentheses, check if they are balanced or not. Brackets are said to be balanced if the bracket which opens last, closes first. + +package Stack; +import java.util.Stack; + +public class Balanced_Brackets { + + public static boolean checkBalanced(String str) { + Stack stack = new Stack<>(); + for (int i = 0; i < str.length(); i++) { + char ch = str.charAt(i); + if (ch == '(' || ch == '{' || ch == '[') { + stack.push(ch); + } else if( ch=='}' || ch==')' || ch==']' ) { + + if(stack.isEmpty()) { + return false; + } + else if(ch==')' && stack.peek()=='('||ch==']'&& stack.peek()=='['||ch=='}'&& stack.peek()=='{') + stack.pop(); + else { + return false; + } + } + } + if(stack.isEmpty()) { + return true; + } + else { + return false; + } + } + + public static void main(String[] args) { + String string = "{ a + [ b+ (c + d)] + (e + f) }"; + System.out.println(checkBalanced(string)); + } +} From 2daa9cbaabc0a777516bc02227d1074842e1755d Mon Sep 17 00:00:00 2001 From: Satyam Tripathi Date: Tue, 4 Oct 2022 00:06:19 +0530 Subject: [PATCH 046/448] Create clumsy_factorial.py --- Python/clumsy_factorial.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 Python/clumsy_factorial.py diff --git a/Python/clumsy_factorial.py b/Python/clumsy_factorial.py new file mode 100644 index 00000000..f18d4db1 --- /dev/null +++ b/Python/clumsy_factorial.py @@ -0,0 +1,16 @@ +class Solution: + def clumsy(self, n: int) -> int: + if n == 1: + return 1 + if n == 2: + return 2 + if n == 3: + return 6 + if n == 4: + return 7 + if n % 4 == 0: + return n+1 + if n % 4 == 1 or n % 4 == 2: + return n+2 + if n % 4 == 3: + return n-1 From c6ec3cf88b31ab6d8c638d8e14cd2b50f7b36136 Mon Sep 17 00:00:00 2001 From: Mercapto <72151785+mercapto-003@users.noreply.github.com> Date: Tue, 4 Oct 2022 00:06:36 +0530 Subject: [PATCH 047/448] Create KthSmallest.cpp --- CPP/arrays/KthSmallest.cpp | 97 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 CPP/arrays/KthSmallest.cpp diff --git a/CPP/arrays/KthSmallest.cpp b/CPP/arrays/KthSmallest.cpp new file mode 100644 index 00000000..ad194869 --- /dev/null +++ b/CPP/arrays/KthSmallest.cpp @@ -0,0 +1,97 @@ +#include +#include +#include + +using namespace std; + +// It searches for x in arr[], and partitions the array around x +int partition(int arr[], int l, int r, int x) { + // Search for x in arr[] and move it to end + int i; + for (i = l; i < r; i++) + if (arr[i] == x) + break; + swap(arr[i], arr[r]); + + // Standard partition algorithm + i = l; + for (int j = l; j <= r - 1; j++) { + if (arr[j] <= x) { + swap(arr[i], arr[j]); + i++; + } + } + swap(arr[i], arr[r]); + return i; +} + +// A simple function to find median of arr[] +int findMedian(int arr[], int n) { + sort(arr, arr + n); + return arr[n / 2]; +} + +// Returns kth smallest element in arr[] in worst case linear time +int kthSmallest(int arr[], int l, int r, int k) { + // If k is smaller than number of elements in array + if (k > 0 && k <= r - l + 1) { + int n = r - l + 1; + + // Divide arr[] in groups of size 5, calculate median + // of every group and store it in median[] array + int i, median[(n + 4) / 5]; + for (i = 0; i < n / 5; i++) + median[i] = findMedian(arr + l + i * 5, 5); + // For the last group + if (i * 5 < n) { + median[i] = findMedian(arr + l + i * 5, n % 5); + i++; + } + + // Find median of all medians using recursive call + int medOfMed = (i == 1) ? median[i - 1] : kthSmallest(median, 0, i - 1, i / 2); + + // Partitioning the array around a random element and + // get position of pivot element in sorted array + int pos = partition(arr, l, r, medOfMed); + + // If position is same as k + if (pos - l == k - 1) + return arr[pos]; + // If position is more, recur for left + if (pos - l > k - 1) + return kthSmallest(arr, l, pos - 1, k); + + // Else recur for right subarray + return kthSmallest(arr, pos + 1, r, k - pos + l - 1); + } + + // If k is more than number of elements in array + return INT_MAX; +} + +int main() { + int size, k; + cout << "Enter size of array: "; + cin >> size; + + int arr[size]; + cout << "Enter into the array:\n"; + for (int i = 0; i < size; i++) + cin >> arr[i]; + + cout << "Enter value of k: "; + cin >> k; + cout << endl; + + if (k % 10 == 1) + cout << k << "st smallest element is: " << kthSmallest(arr, 0, size - 1, k); + else if (k % 10 == 2) + cout << k << "nd smallest element is: " << kthSmallest(arr, 0, size - 1, k); + else if (k % 10 == 3) + cout << k << "rd smallest element is: " << kthSmallest(arr, 0, size - 1, k); + else + cout << k << "th smallest element is: " << kthSmallest(arr, 0, size - 1, k); + + return 0; +} From 20e87759d72dc5da30e40ba75fd1d80b60ac7dcf Mon Sep 17 00:00:00 2001 From: Mercapto <72151785+mercapto-003@users.noreply.github.com> Date: Tue, 4 Oct 2022 00:11:36 +0530 Subject: [PATCH 048/448] Create radix_sort.cpp --- CPP/sorting/radix_sort.cpp | 66 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 CPP/sorting/radix_sort.cpp diff --git a/CPP/sorting/radix_sort.cpp b/CPP/sorting/radix_sort.cpp new file mode 100644 index 00000000..919590ca --- /dev/null +++ b/CPP/sorting/radix_sort.cpp @@ -0,0 +1,66 @@ +// Radix Sort in C++ Programming + +#include +using namespace std; + +// Function to get the largest element from an array +int getMax(int array[], int n) { + int max = array[0]; + for (int i = 1; i < n; i++) + if (array[i] > max) + max = array[i]; + return max; +} + +// Using counting sort to sort the elements in the basis of significant places +void countingSort(int array[], int size, int place) { + const int max = 10; + int output[size]; + int count[max]; + + for (int i = 0; i < max; ++i) + count[i] = 0; + + // Calculate count of elements + for (int i = 0; i < size; i++) + count[(array[i] / place) % 10]++; + + // Calculate cumulative count + for (int i = 1; i < max; i++) + count[i] += count[i - 1]; + + // Place the elements in sorted order + for (int i = size - 1; i >= 0; i--) { + output[count[(array[i] / place) % 10] - 1] = array[i]; + count[(array[i] / place) % 10]--; + } + + for (int i = 0; i < size; i++) + array[i] = output[i]; +} + +// Main function to implement radix sort +void radixsort(int array[], int size) { + // Get maximum element + int max = getMax(array, size); + + // Apply counting sort to sort elements based on place value. + for (int place = 1; max / place > 0; place *= 10) + countingSort(array, size, place); +} + +// Print an array +void printArray(int array[], int size) { + int i; + for (i = 0; i < size; i++) + cout << array[i] << " "; + cout << endl; +} + +// Driver code +int main() { + int array[] = {121, 432, 564, 23, 1, 45, 788}; + int n = sizeof(array) / sizeof(array[0]); + radixsort(array, n); + printArray(array, n); +} From b543fa6ca185bfdd8f826b35a5cb9bd6bd38a397 Mon Sep 17 00:00:00 2001 From: Mercapto <72151785+mercapto-003@users.noreply.github.com> Date: Tue, 4 Oct 2022 00:24:12 +0530 Subject: [PATCH 049/448] Create heap_sort.cpp --- CPP/sorting/heap_sort.cpp | 62 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 CPP/sorting/heap_sort.cpp diff --git a/CPP/sorting/heap_sort.cpp b/CPP/sorting/heap_sort.cpp new file mode 100644 index 00000000..bdb808a9 --- /dev/null +++ b/CPP/sorting/heap_sort.cpp @@ -0,0 +1,62 @@ +#include +using namespace std; +/* function to heapify a subtree. Here 'i' is the +index of root node in array a[], and 'n' is the size of heap. */ +void heapify(int a[], int n, int i) +{ + int largest = i; // Initialize largest as root + int left = 2 * i + 1; // left child + int right = 2 * i + 2; // right child + // If left child is larger than root + if (left < n && a[left] > a[largest]) + largest = left; + // If right child is larger than root + if (right < n && a[right] > a[largest]) + largest = right; + // If root is not largest + if (largest != i) { + // swap a[i] with a[largest] + int temp = a[i]; + a[i] = a[largest]; + a[largest] = temp; + + heapify(a, n, largest); + } +} +/*Function to implement the heap sort*/ +void heapSort(int a[], int n) +{ + + for (int i = n / 2 - 1; i >= 0; i--) + heapify(a, n, i); + // One by one extract an element from heap + for (int i = n - 1; i >= 0; i--) { + /* Move current root element to end*/ + // swap a[0] with a[i] + int temp = a[0]; + a[0] = a[i]; + a[i] = temp; + + heapify(a, i, 0); + } +} +/* function to print the array elements */ +void printArr(int a[], int n) +{ + for (int i = 0; i < n; ++i) + { + cout< Date: Tue, 4 Oct 2022 00:32:53 +0530 Subject: [PATCH 050/448] Create intro_sort.cpp --- CPP/sorting/intro_sort.cpp | 117 +++++++++++++++++++++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 CPP/sorting/intro_sort.cpp diff --git a/CPP/sorting/intro_sort.cpp b/CPP/sorting/intro_sort.cpp new file mode 100644 index 00000000..d19c1341 --- /dev/null +++ b/CPP/sorting/intro_sort.cpp @@ -0,0 +1,117 @@ + +#include +#include +#include +using namespace std; + +// Function to perform insertion sort on subarray `a[low…high]` +void insertionsort(int a[], int low, int high) +{ + // start from the second element in the subarray + // (the element at index `low` is already sorted) + for (int i = low + 1; i <= high; i++) + { + int value = a[i]; + int j = i; + + // find index `j` within the sorted subset a[0…i-1] + // where element a[i] belongs + while (j > low && a[j - 1] > value) + { + a[j] = a[j - 1]; + j--; + } + + // Note that the subarray `a[j…i-1]` is shifted to + // the right by one position, i.e., `a[j+1…i]` + + a[j] = value; + } +} + +// Function to partition the array using Lomuto partition scheme +int partition(int a[], int low, int high) +{ + // Pick the rightmost element as a pivot from the array + int pivot = a[high]; + + // elements less than the pivot will be pushed to the left of `pIndex` + // elements more than the pivot will be pushed to the right of `pIndex` + // equal elements can go either way + int pIndex = low; + + // each time we find an element less than or equal to the pivot, `pIndex` + // is incremented, and that element would be placed before the pivot. + for (int i = low; i < high; i++) + { + if (a[i] <= pivot) + { + swap(a[i], a[pIndex]); + pIndex++; + } + } + + // swap `pIndex` with pivot + swap (a[pIndex], a[high]); + + // return `pIndex` (index of the pivot element) + return pIndex; +} + +// Quicksort randomized partition to rearrange elements across pivot +int randPartition(int a[], int low, int high) +{ + // choose a random index between `[low, high]` + int pivotIndex = rand() % (high - low + 1) + low; + + // swap the end element with the element present at a random index + swap(a[pivotIndex], a[high]); + + // call the partition procedure + return partition(a, low, high); +} + +// Function to perform heapsort on the given range of elements +void heapsort(int *begin, int *end) +{ + make_heap(begin, end); + sort_heap(begin, end); +} + +// Function to perform introsort on the given array +void introsort(int a[], int *begin, int *end, int maxdepth) +{ + // perform insertion sort if partition size is 16 or smaller + if ((end - begin) < 16) { + insertionsort(a, begin - a, end - a); + } + // perform heapsort if the maximum depth is 0 + else if (maxdepth == 0) { + heapsort(begin, end + 1); + } + else { + // otherwise, perform Quicksort + int pivot = randPartition(a, begin - a, end - a); + introsort(a, begin, a + pivot - 1, maxdepth - 1); + introsort(a, a + pivot + 1, end, maxdepth - 1); + } +} + +int main() +{ + int a[] = { 5, 7, -8, 9, 10, 4, -7, 0, -12, 1, 6, 2, 3, -4, -15, 12 }; + int n = sizeof(a) / sizeof(a[0]); + + // get the maximum depth + int maxdepth = log(n) * 2; + + // sort the array using introsort the algorithm + introsort(a, a, a + n - 1, maxdepth); + + // print the sorted array + for (int i = 0; i < n; i++) { + cout << a[i] << " "; + } + + return 0; +} From eb644013f7e19e8cc266af9ed163c2957b6a50ff Mon Sep 17 00:00:00 2001 From: Mercapto <72151785+mercapto-003@users.noreply.github.com> Date: Tue, 4 Oct 2022 00:53:31 +0530 Subject: [PATCH 051/448] Create library_sort.cpp --- CPP/sorting/library_sort.cpp | 90 ++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 CPP/sorting/library_sort.cpp diff --git a/CPP/sorting/library_sort.cpp b/CPP/sorting/library_sort.cpp new file mode 100644 index 00000000..b48aefeb --- /dev/null +++ b/CPP/sorting/library_sort.cpp @@ -0,0 +1,90 @@ +#include +#include + +void librarySort(int *index, int n) { + int lib_size, index_pos, + *gaps, // gaps + *library[2]; // libraries + + bool target_lib, *numbered; + + for (int i = 0; i < 2; i++) + library[i] = new int[n]; + + gaps = new int[n + 1]; + numbered = new bool[n + 1]; + + lib_size = 1; + index_pos = 1; + target_lib = 0; + library[target_lib][0] = index[0]; + + while (index_pos < n) { + // binary search + int insert = std::distance( + library[target_lib], + std::lower_bound(library[target_lib], + library[target_lib] + lib_size, index[index_pos])); + + // if there is no gap to insert a new index ... + + if (numbered[insert] == true) { + int prov_size = 0, next_target_lib = !target_lib; + + // update library and clear gaps + + for (int i = 0; i <= n; i++) { + if (numbered[i] == true) { + library[next_target_lib][prov_size] = gaps[i]; + prov_size++; + numbered[i] = false; + } + + if (i <= lib_size) { + library[next_target_lib][prov_size] = + library[target_lib][i]; + prov_size++; + } + } + + target_lib = next_target_lib; + lib_size = prov_size - 1; + } else { + numbered[insert] = true; + gaps[insert] = index[index_pos]; + index_pos++; + } + } + + int index_pos_for_output = 0; + for (int i = 0; index_pos_for_output < n; i++) { + if (numbered[i] == true) { + // std::cout << gaps[i] << std::endl; + index[index_pos_for_output] = gaps[i]; + index_pos_for_output++; + } + + if (i < lib_size) { + // std::cout << library[target_lib][i] << std::endl; + index[index_pos_for_output] = library[target_lib][i]; + index_pos_for_output++; + } + } +} + +int main() { + // ---example-- + int index_ex[] = {-6, 5, 9, 1, 9, 1, 0, 1, -8, 4, -12}; + int n_ex = sizeof(index_ex) / sizeof(index_ex[0]); + + librarySort(index_ex, n_ex); + std::cout << "sorted array :" << std::endl; + for (int i = 0; i < n_ex; i++) + std::cout << index_ex[i] << " "; + std::cout << std::endl; + + /* --output-- + sorted array : + -12 -8 -6 0 1 1 1 4 5 9 9 + */ +} From 8db9192721cf7deb6bcedfdc424483569c891b01 Mon Sep 17 00:00:00 2001 From: Mercapto <72151785+mercapto-003@users.noreply.github.com> Date: Tue, 4 Oct 2022 00:55:27 +0530 Subject: [PATCH 052/448] Create randomised_quicksort.cpp --- CPP/sorting/randomised_quicksort.cpp | 75 ++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 CPP/sorting/randomised_quicksort.cpp diff --git a/CPP/sorting/randomised_quicksort.cpp b/CPP/sorting/randomised_quicksort.cpp new file mode 100644 index 00000000..ccf725f5 --- /dev/null +++ b/CPP/sorting/randomised_quicksort.cpp @@ -0,0 +1,75 @@ +#include +#include +#include + +using namespace std; + +// This function places all smaller +// to left of pivot and all greater +// elements to right of pivot +int partition(int arr[], int low, int high) { + int pivot = arr[high]; + + // Index of smaller element + int i = (low - 1); + + for (int j = low; j <= high - 1; j++) { + // If current element is smaller + // than or equal to pivot + if (arr[j] <= pivot) { + + // increment index of smaller element + i++; + swap(arr[i], arr[j]); + } + } + swap(arr[i + 1], arr[high]); + return (i + 1); +} + +// Generates Random Pivot, swaps pivot with end element +int partition_r(int arr[], int low, int high) { + // Generates random number + srand(time(NULL)); + int random = low + rand() % (high - low); + + // Swap A[random] with A[high] + swap(arr[random], arr[high]); + + return partition(arr, low, high); +} + +// Quicksort method +void quickSort(int arr[], int low, int high) { + if (low < high) { + int pIndex = partition_r(arr, low, high); + + // Separately sort elements before partition and after partition + quickSort(arr, low, pIndex - 1); + quickSort(arr, pIndex + 1, high); + } +} + +int main() { + int size; + cout << "Enter size of array: "; + cin >> size; + int arr[size]; + cout << "Enter contents of array:\n"; + for (int i = 0; i < size; i++) + cin >> arr[i]; + + cout << "\nUnsorted array:\n[ "; + for (int i = 0; i < size; i++) + cout << arr[i] << " "; + cout << "]\n"; + + quickSort(arr, 0, size - 1); + + cout << "Sorted array:\n[ "; + for (int i = 0; i < size; i++) + cout << arr[i] << " "; + cout << "]\n"; + + return 0; +} From f3e9046fd1e480a8e94bd45451ba32115e9a373b Mon Sep 17 00:00:00 2001 From: Ayush Date: Tue, 4 Oct 2022 00:58:58 +0530 Subject: [PATCH 053/448] Find Majority Elements --- Java/Majority_Element.java | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 Java/Majority_Element.java diff --git a/Java/Majority_Element.java b/Java/Majority_Element.java new file mode 100644 index 00000000..66f73034 --- /dev/null +++ b/Java/Majority_Element.java @@ -0,0 +1,34 @@ +/* + * Question: + * Given an array nums of size n, return the majority element. + * The majority element is the element that appears more than ⌊n / 2⌋ times. + * + * I have solved this question and even optimised it using the famous Algorithm known as + * "Moore's Voting Algorithm" + * + * LeetCode Q - 169 + * + * + * Time Complexity - O(N) + * Space Complexity - O(1) + */ + +public class Majority_Element { + public static void main(String[] args) { + int arr[] = { 2, 2, 1, 1, 1, 2, 2 }; + System.out.println(majority(arr)); + } + + public static int majority(int nums[]) { + int c = 0, elm = 0; + for (int i = 0; i < nums.length; i++) { + if (c == 0) + elm = nums[i]; + if (elm == nums[i]) + c++; + else + c--; + } + return elm; + } +} From 939c582172fa6bc8936dd0a8238d68d54a5bd976 Mon Sep 17 00:00:00 2001 From: Rahul Kumar Date: Tue, 4 Oct 2022 01:04:09 +0530 Subject: [PATCH 054/448] added circular palindrome file Lang - c++ --- Dynamic Programming/Circular Palindromes.cpp | 183 +++++++++++++++++++ 1 file changed, 183 insertions(+) create mode 100644 Dynamic Programming/Circular Palindromes.cpp diff --git a/Dynamic Programming/Circular Palindromes.cpp b/Dynamic Programming/Circular Palindromes.cpp new file mode 100644 index 00000000..61aed95e --- /dev/null +++ b/Dynamic Programming/Circular Palindromes.cpp @@ -0,0 +1,183 @@ +//Hackerrank Problem - Circular Palindromes +// Level - Hard +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +using namespace std; + +#define type(x) __typeof((x).begin()) +#define foreach(i, x) for(type(x) i = (x).begin(); i != (x).end(); i++) +#define hash ___hash + +typedef long long ll; +typedef pair < int, int > ii; + +const int inf = 1e9 + 333; +const ll linf = 1e18 + 333; + +const int N = 2e6 + 5; + +int n; +char s[N]; +bool h[N]; +int go_odd[N], go_even[N], tmp[N << 1], rad[N << 1], ans[2][N]; + +void manacher() { + memset(tmp, 0, sizeof(tmp)); + memset(rad, 0, sizeof(rad)); + int m = n * 2 + 1; + for(int i = 0; i < m; i++) + tmp[i] = '#'; + for(int i = 0; i < n; i++) + tmp[i * 2 + 1] = s[i + 1]; + int i = 0, j = 0; + while(i < m) { + while(i - j >= 0 and i + j < m and tmp[i - j] == tmp[i + j]) + j++; + rad[i] = j; + int k = 1; + while(rad[i - k] < rad[i] - k) { + rad[i + k] = rad[i - k]; + k++; + } + i += k; + j = max(0, j - k); + } + for(int i = 1; i <= n; i++) + go_odd[i] = rad[(i - 1) * 2 + 1] / 2;//abcba --> go_odd[3] = 3 + for(int i = 1; i <= n; i++) + go_even[i - 1] = rad[(i - 1) * 2] / 2;//abccba --> go_even[3] = 3 +} + +void solveOdd(bool w) { + int oth = 0; + set < ii > go; + for(int i = 1; i <= (n + 1) / 2; i++) { + go.insert({go_odd[i], i}); + } + for(int i = 1; i <= n; i++) { + while(go.size()) { + int x = go.rbegin() -> first; + int id = go.rbegin() -> second; + if(id < i) { + go.erase(*go.rbegin()); + continue; + } + int mx = (id - i + 1) * 2 - 1; + if(x > mx) { + oth = max(oth, id); + go.erase(*go.rbegin()); + continue; + } + break; + } + if(go.size()) + ans[w][i] = max(ans[w][i], go.rbegin() -> first); + if(oth >= i) + ans[w][i] = max(ans[w][i], (oth - i + 1) * 2 - 1); + //printf("ans[%d] = %d oth = %d\n", i, ans[w][i]); + int add = (n + 1) / 2 + i; + go.insert({go_odd[add], add}); + } +} + +int get(int x, int y) { + y -= x - 1; + return min(y, n - y) * 2; +} + +void solveEven(bool w) { + int oth = 0; + set < ii > go; + for(int i = 1; i <= (n + 1) / 2; i++) { + go.insert({go_even[i], i}); + } + for(int i = 1; i <= n; i++) { + while(go.size()) { + int x = go.rbegin() -> first; + int id = go.rbegin() -> second; + if(id < i) { + go.erase(*go.rbegin()); + continue; + } + int mx = get(i, id); + if(x > mx) { + oth = max(oth, id); + go.erase(*go.rbegin()); + continue; + } + break; + } + if(go.size()) + ans[w][i] = max(ans[w][i], go.rbegin() -> first); + if(oth >= i) + ans[w][i] = max(ans[w][i], get(i, oth)); + //printf("ans[%d] = %d\n", i, ans[w][i]); + int add = (n + 1) / 2 + i; + go.insert({go_even[add], add}); + } +} + + +int main () { + + scanf("%d %s", &n, s + 1); + + for(int i = 1; i <= n; i++) + s[i + n] = s[i]; + + + n *= 2; + manacher(); + n /= 2; + + for(int i = 1; i <= n + n; i++) { + go_odd[i] *= 2; + go_odd[i] -= 1; + go_even[i] *= 2; + } + + solveOdd(0); + solveEven(0); + + + + reverse(s + 1, s + n * 2 + 1); + + n *= 2; + manacher(); + n /= 2; + + for(int i = 1; i <= n + n; i++) { + go_odd[i] *= 2; + go_odd[i] -= 1; + go_even[i] *= 2; + } + + solveOdd(1); + solveEven(1); + + printf("%d\n", max(ans[0][1], ans[1][1])); + + for(int i = 2; i <= n; i++) { + printf("%d\n", max(ans[0][i], ans[1][n + 2 - i])); + } + + return 0; + +} + + + + + + + From da8d114ab2bd5ccd17164330eb4e63ab1635a98c Mon Sep 17 00:00:00 2001 From: alex-2003-47 <114850023+alex-2003-47@users.noreply.github.com> Date: Tue, 4 Oct 2022 01:09:23 +0530 Subject: [PATCH 055/448] Create JosephusProblem.cpp --- CPP/recursion/JosephusProblem.cpp | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 CPP/recursion/JosephusProblem.cpp diff --git a/CPP/recursion/JosephusProblem.cpp b/CPP/recursion/JosephusProblem.cpp new file mode 100644 index 00000000..4a744008 --- /dev/null +++ b/CPP/recursion/JosephusProblem.cpp @@ -0,0 +1,27 @@ +#include + +using namespace std; + +void Josh(vector person, int k, int index) +{ + if (person.size() == 1) { + cout << person[0] << endl; + return; + } + index = ((index + k) % person.size()); + person.erase(person.begin() + index); + Josh(person, k, index); +} + +int main() +{ + int n = 14; + int k = 2; + k--; + int index= 0; + vector person; + for (int i = 1; i <= n; i++) { + person.push_back(i); + } + Josh(person, k, index); +} From e1e28d5517dbbdbb8bb4f19a90e7c97f162d132e Mon Sep 17 00:00:00 2001 From: sohail60 Date: Tue, 4 Oct 2022 02:01:07 +0530 Subject: [PATCH 056/448] Added Leetcode Solved Questions --- Java/Leetcode/Leetcode1095.java | 64 ++++++++++++++++++++++++++ Java/Leetcode/Leetcode1108.java | 25 +++++++++++ Java/Leetcode/Leetcode1162.java | 29 ++++++++++++ Java/Leetcode/Leetcode1221.java | 26 +++++++++++ Java/Leetcode/Leetcode125.java | 44 ++++++++++++++++++ Java/Leetcode/Leetcode13.java | 79 +++++++++++++++++++++++++++++++++ Java/Leetcode/Leetcode136.java | 20 +++++++++ Java/Leetcode/Leetcode14.java | 9 ++++ Java/Leetcode/Leetcode1486.java | 19 ++++++++ Java/Leetcode/Leetcode1528.java | 23 ++++++++++ Java/Leetcode/Leetcode1672.java | 22 +++++++++ Java/Leetcode/Leetcode1678.java | 27 +++++++++++ Java/Leetcode/Leetcode168.java | 39 ++++++++++++++++ Java/Leetcode/Leetcode1704.java | 32 +++++++++++++ Java/Leetcode/Leetcode1768.java | 29 ++++++++++++ Java/Leetcode/Leetcode1773.java | 36 +++++++++++++++ Java/Leetcode/Leetcode190.java | 30 +++++++++++++ Java/Leetcode/Leetcode191.java | 21 +++++++++ Java/Leetcode/Leetcode1967.java | 41 +++++++++++++++++ Java/Leetcode/Leetcode20.java | 23 ++++++++++ Java/Leetcode/Leetcode2000.java | 21 +++++++++ Java/Leetcode/Leetcode2011.java | 21 +++++++++ Java/Leetcode/Leetcode202.java | 37 +++++++++++++++ Java/Leetcode/Leetcode2114.java | 18 ++++++++ Java/Leetcode/Leetcode268.java | 46 +++++++++++++++++++ Java/Leetcode/Leetcode287.java | 32 +++++++++++++ Java/Leetcode/Leetcode338.java | 30 +++++++++++++ Java/Leetcode/Leetcode34.java | 36 +++++++++++++++ Java/Leetcode/Leetcode344.java | 24 ++++++++++ Java/Leetcode/Leetcode38.java | 32 +++++++++++++ Java/Leetcode/Leetcode442.java | 40 +++++++++++++++++ Java/Leetcode/Leetcode448.java | 39 ++++++++++++++++ Java/Leetcode/Leetcode476.java | 13 ++++++ Java/Leetcode/Leetcode557.java | 29 ++++++++++++ Java/Leetcode/Leetcode58.java | 19 ++++++++ Java/Leetcode/Leetcode628.java | 35 +++++++++++++++ Java/Leetcode/Leetcode645.java | 41 +++++++++++++++++ Java/Leetcode/Leetcode657.java | 35 +++++++++++++++ Java/Leetcode/Leetcode680.java | 55 +++++++++++++++++++++++ Java/Leetcode/Leetcode709.java | 21 +++++++++ Java/Leetcode/Leetcode744.java | 35 +++++++++++++++ Java/Leetcode/Leetcode771.java | 21 +++++++++ Java/Leetcode/Leetcode852.java | 24 ++++++++++ 43 files changed, 1342 insertions(+) create mode 100644 Java/Leetcode/Leetcode1095.java create mode 100644 Java/Leetcode/Leetcode1108.java create mode 100644 Java/Leetcode/Leetcode1162.java create mode 100644 Java/Leetcode/Leetcode1221.java create mode 100644 Java/Leetcode/Leetcode125.java create mode 100644 Java/Leetcode/Leetcode13.java create mode 100644 Java/Leetcode/Leetcode136.java create mode 100644 Java/Leetcode/Leetcode14.java create mode 100644 Java/Leetcode/Leetcode1486.java create mode 100644 Java/Leetcode/Leetcode1528.java create mode 100644 Java/Leetcode/Leetcode1672.java create mode 100644 Java/Leetcode/Leetcode1678.java create mode 100644 Java/Leetcode/Leetcode168.java create mode 100644 Java/Leetcode/Leetcode1704.java create mode 100644 Java/Leetcode/Leetcode1768.java create mode 100644 Java/Leetcode/Leetcode1773.java create mode 100644 Java/Leetcode/Leetcode190.java create mode 100644 Java/Leetcode/Leetcode191.java create mode 100644 Java/Leetcode/Leetcode1967.java create mode 100644 Java/Leetcode/Leetcode20.java create mode 100644 Java/Leetcode/Leetcode2000.java create mode 100644 Java/Leetcode/Leetcode2011.java create mode 100644 Java/Leetcode/Leetcode202.java create mode 100644 Java/Leetcode/Leetcode2114.java create mode 100644 Java/Leetcode/Leetcode268.java create mode 100644 Java/Leetcode/Leetcode287.java create mode 100644 Java/Leetcode/Leetcode338.java create mode 100644 Java/Leetcode/Leetcode34.java create mode 100644 Java/Leetcode/Leetcode344.java create mode 100644 Java/Leetcode/Leetcode38.java create mode 100644 Java/Leetcode/Leetcode442.java create mode 100644 Java/Leetcode/Leetcode448.java create mode 100644 Java/Leetcode/Leetcode476.java create mode 100644 Java/Leetcode/Leetcode557.java create mode 100644 Java/Leetcode/Leetcode58.java create mode 100644 Java/Leetcode/Leetcode628.java create mode 100644 Java/Leetcode/Leetcode645.java create mode 100644 Java/Leetcode/Leetcode657.java create mode 100644 Java/Leetcode/Leetcode680.java create mode 100644 Java/Leetcode/Leetcode709.java create mode 100644 Java/Leetcode/Leetcode744.java create mode 100644 Java/Leetcode/Leetcode771.java create mode 100644 Java/Leetcode/Leetcode852.java diff --git a/Java/Leetcode/Leetcode1095.java b/Java/Leetcode/Leetcode1095.java new file mode 100644 index 00000000..cc2eea05 --- /dev/null +++ b/Java/Leetcode/Leetcode1095.java @@ -0,0 +1,64 @@ +package com.company; + +import java.util.Scanner; + +public class Leetcode1095 { + public static void main(String[] args) { + int[] arr={1,3,6,7,9,15,17,14,10,5,-5}; + int target=-5; + int ans=search(arr,target); + System.out.println("Index="+ans); + } + + static int peakIndex(int[] arr) { + int start = 0; + int end = arr.length - 1; + + while (start < end) { + int mid = start + (end - start) / 2; + if (arr[mid] > arr[mid+1]) { + end = mid; + } else { + start = mid + 1; + } + } + return start; + } + + static int search(int[] arr, int target) { + if(arr.length==0){ + return -1; + } + + int peak=peakIndex(arr); + + if(arr[peak]==target){ + return peak; + } + + int start = 0, end = peak - 1; + while (start <= end) { + int mid = start + (end - start) / 2; + if (target > arr[mid]) { + start = mid + 1; + } else if (target < arr[mid]) { + end = mid - 1; + } else if (target == arr[mid]) { + return mid; + } + } + + start = peak+1; end = arr.length - 1; + while (start <= end) { + int mid = start + (end - start) / 2; + if (target > arr[mid]) { + end = mid - 1; + } else if (target < arr[mid]) { + start = mid + 1; + } else if (target == arr[mid]) { + return mid; + } + } + return -1; + } + } \ No newline at end of file diff --git a/Java/Leetcode/Leetcode1108.java b/Java/Leetcode/Leetcode1108.java new file mode 100644 index 00000000..e395fa8f --- /dev/null +++ b/Java/Leetcode/Leetcode1108.java @@ -0,0 +1,25 @@ +package com.company; + +public class Leetcode1108 { + public static void main(String[] args) { + String address="255.0.154.25"; + System.out.println(defang(address)); + } + + + static String defang(String add){ + StringBuilder str=new StringBuilder(); + for (int i = 0; i = 97 && ch <= 122 || ch >= 48 && ch <= 57) { + s1.append(ch); + } + } + + StringBuilder s2 = new StringBuilder(s1); + + reverse(s2); + + if (s1.toString().equals(s2.toString())) { + return true; + } else { + return false; + } + } + + static void reverse(StringBuilder s){ + int start=0,end=s.length()-1; + while(end>start){ + swap(s,start,end); + start++; + end--; + } + } + + static void swap(StringBuilder s,int a,int b){ + char temp; + temp=s.charAt(a); + s.setCharAt(a,s.charAt(b)); + s.setCharAt(b,temp); + } +} diff --git a/Java/Leetcode/Leetcode13.java b/Java/Leetcode/Leetcode13.java new file mode 100644 index 00000000..65dba5df --- /dev/null +++ b/Java/Leetcode/Leetcode13.java @@ -0,0 +1,79 @@ +package com.company; + +public class Leetcode13 { + public static void main(String[] args) { + String s="MCMXCIV"; + System.out.println(roman(s)); + } + + + static int roman(String s){ + int sum=0; + for (int i = 0; i < s.length(); i++) { + if(s.charAt(i)=='I'){ + if ( i+1max){ + max=sum; + } + } + return max; + } +} \ No newline at end of file diff --git a/Java/Leetcode/Leetcode1678.java b/Java/Leetcode/Leetcode1678.java new file mode 100644 index 00000000..4c869f12 --- /dev/null +++ b/Java/Leetcode/Leetcode1678.java @@ -0,0 +1,27 @@ +package com.company; + +public class Leetcode1678 { + public static void main(String[] args) { + String str="G()()()()(al)"; + String answer=interpret(str); + System.out.println(answer); + } + + public static String interpret(String command) { + int i=0,l=command.length(); + String updated=""; + while (i=1){ + x=n/26; + + if (x==0){ + y=n+64; + columnTitle=columnTitle+(char)y; + n=n/26; + } + + if (x>=1 && x<=26){ + y=x+64; + columnTitle=columnTitle+(char)y; + break; + } + + if (x>26){ + y=x%26; + y=y+64; + columnTitle=columnTitle+(char)y; + n=n/26; + } + + } + columnTitle=columnTitle+(char)((columnNumber%26)+64); + return columnTitle; + } +} diff --git a/Java/Leetcode/Leetcode1704.java b/Java/Leetcode/Leetcode1704.java new file mode 100644 index 00000000..558367cc --- /dev/null +++ b/Java/Leetcode/Leetcode1704.java @@ -0,0 +1,32 @@ +package com.company; + +public class Leetcode1704 { + public static void main(String[] args) { + String s="Sohail"; + System.out.println(halvesAreAlike(s)); + } + + + static boolean halvesAreAlike(String s) { + int c1 = 0, c2 = 0; + for (int i = 0; i < (s.length() / 2); i++) { + char ch = Character.toUpperCase(s.charAt(i)); + if (ch == 'A' || ch == 'E' || ch == 'I' || ch == 'O' || ch == 'U') { + c1++; + } + } + for (int i = (s.length() / 2); i < s.length(); i++) { + char ch = Character.toUpperCase(s.charAt(i)); + if (ch == 'A' || ch == 'E' || ch == 'I' || ch == 'O' || ch == 'U') { + c2++; + } + } + + if(c1==c2){ + return true; + } + else { + return false; + } + } +} diff --git a/Java/Leetcode/Leetcode1768.java b/Java/Leetcode/Leetcode1768.java new file mode 100644 index 00000000..b6d46b11 --- /dev/null +++ b/Java/Leetcode/Leetcode1768.java @@ -0,0 +1,29 @@ +package com.company; + +public class Leetcode1768 { + public static void main(String[] args) { + String w1="abc"; + String w2="pqr"; + System.out.println(merge(w1,w2)); + } + + static String merge(String w1,String w2){ + String str=""; + int l=Math.min(w1.length(),w2.length()); + StringBuilder s=new StringBuilder(); + for (int i = 0; i < l; i++) { + s.append(w1.charAt(i)); + s.append(w2.charAt(i)); + } + if(w1.length()>w2.length()){ + str=w1; + } + else{ + str=w2; + } + for (int i = l; i > items=new ArrayList<>(); + + int M = 3; +// for (int i = 0; i < M; i++) { +// items.add(new ArrayList<>()); +// } +// items.add({"phone","blue","pixel"}); +// items= {{"phone","blue","pixel"],["computer","silver","lenovo"],["phone","gold","iphone"}}; +// String ruleKey = "color", ruleValue = "silver"; + } + + public static int countMatches(List> items, String ruleKey, String ruleValue) { + int a=0,c=0; + if(ruleKey.equals("type")){ + a=0; + } else if (ruleKey.equals("color")){ + a=1; + } else if (ruleKey.equals("name")){ + a=2; + } + + for (int i = 0; i < items.size(); i++) { + if ((items.get(i)).get(a).equals(ruleValue)){ + c++; + } + } + return c; + } +} \ No newline at end of file diff --git a/Java/Leetcode/Leetcode190.java b/Java/Leetcode/Leetcode190.java new file mode 100644 index 00000000..b0914016 --- /dev/null +++ b/Java/Leetcode/Leetcode190.java @@ -0,0 +1,30 @@ +package com.company; + +public class Leetcode190 { + public static void main(String[] args) { + int n = 25; + int answer = reverseBits(n); + System.out.println(answer); + } + + static int reverseBit(int n) { + int rev = 0; + for (int i = 0; i <= 31; i++) { + rev = rev << 1; + rev = rev + (n & 1); + n = n >> 1; + } + return rev; + } + + static int reverseBits(int n) { + int res=0; + for(int i=0;i<32;i++) //length of word is 32 + { + res=res<<1; //this is like multiplying the number with 10 in decimal here we left shift it as in multiplying by 2 + res+=(n&1); //add number after taking it's & with 1 + n=n>>1; //divide number by 2 to get next digit + } + return res; + } +} diff --git a/Java/Leetcode/Leetcode191.java b/Java/Leetcode/Leetcode191.java new file mode 100644 index 00000000..f087d7cd --- /dev/null +++ b/Java/Leetcode/Leetcode191.java @@ -0,0 +1,21 @@ +package com.company; + + public class Leetcode191 { + public static void main(String[] args) { + int n = 429; + int answer = setBits(n); + System.out.println(answer); + } + + static int setBits(int n) { + int c = 0, i = 0; + while (i <= 31) { + if ((n & 1) != 0) { + c++; + } + n = n >> 1; + i++; + } + return c; + } + } \ No newline at end of file diff --git a/Java/Leetcode/Leetcode1967.java b/Java/Leetcode/Leetcode1967.java new file mode 100644 index 00000000..dcc7acc1 --- /dev/null +++ b/Java/Leetcode/Leetcode1967.java @@ -0,0 +1,41 @@ +package com.company; + +import java.util.ArrayList; + +public class Leetcode1967 { + public static void main(String[] args) { + String[] patterns = {"a","b","c"}; + String word = "aaaaabbbbb"; + System.out.println(numOfStrings(patterns,word)); + } + +// static int numOfStrings(String[] p, String word){ +// int c=0; +// for (int i = 0; i <=p.length-1 ; i++) { +// int l=p[i].length(); +// for (int j = 0; j <=word.length()-l ; j++) { +// StringBuilder s=new StringBuilder(word.substring(j,l)); +// if((s.toString()).equals(p[i])){ +// c++; +// break; +// } +// +// } +// } +// return c; +// } + + + public static int numOfStrings(String[] patterns, String word) { + int c=0; + for (int i = 0; i < patterns.length; i++) { + for (int j = 0; j < word.length() ; j++) { + if (word.substring(j).startsWith(patterns[i])){ + c++; + break; + } + } + } + return c; +} +} diff --git a/Java/Leetcode/Leetcode20.java b/Java/Leetcode/Leetcode20.java new file mode 100644 index 00000000..295bd446 --- /dev/null +++ b/Java/Leetcode/Leetcode20.java @@ -0,0 +1,23 @@ +package com.company; + +public class Leetcode20 { + public static void main(String[] args) { + String s=")){}[]"; + System.out.println(paranthesis(s)); + } + + static boolean paranthesis(String s){ + if(s.length()%2!=0){ + return false; + } + for (int i = 0; i =0 ; i--) { + str.append(s.charAt(i)); + } + for (int i = a+1; i < s.length(); i++) { + str.append(s.charAt(i)); + } + return str.toString(); + } +} diff --git a/Java/Leetcode/Leetcode2011.java b/Java/Leetcode/Leetcode2011.java new file mode 100644 index 00000000..eec6a39b --- /dev/null +++ b/Java/Leetcode/Leetcode2011.java @@ -0,0 +1,21 @@ +package com.company; + +public class Leetcode2011 { + public static void main(String[] args) { + String[] arr={"--X","X++","X++"}; + int answer=finalValueAfterOperations(arr); + System.out.println(answer); + } + + public static int finalValueAfterOperations(String[] operations) { + int count=0; + for (int i = 0; i < operations.length; i++) { + if (operations[i].charAt(1)==('+')){ + count++; + } else { + count--; + } + } + return count; + } +} diff --git a/Java/Leetcode/Leetcode202.java b/Java/Leetcode/Leetcode202.java new file mode 100644 index 00000000..38d18cea --- /dev/null +++ b/Java/Leetcode/Leetcode202.java @@ -0,0 +1,37 @@ +package com.company; + +public class Leetcode202 { + public static void main(String[] args) { + int n=19; + boolean answer=happyNumber(n); + System.out.println(answer); + + } + +// Linked List will be used in this bcoz cycle is forming. We can use slow and fast pointer method in this. + public static boolean happyNumber(int n){ + int slow=n; + int fast=n; + + do { + slow=square(slow); + fast=square(square(fast)); + } while (slow!=fast); + + if(slow==1){ + return true; + } + return false; + } + + private static int square(int n){ + int digit = 0; + int sum=0; + while (n!=0){ + digit=n%10; + sum=digit*digit+sum; + n=n/10; + } + return sum; + } +} \ No newline at end of file diff --git a/Java/Leetcode/Leetcode2114.java b/Java/Leetcode/Leetcode2114.java new file mode 100644 index 00000000..28f2abaf --- /dev/null +++ b/Java/Leetcode/Leetcode2114.java @@ -0,0 +1,18 @@ +package com.company; + +public class Leetcode2114 { + public static void main(String[] args) { + + } + + public static int mostWordsFound(String[] sentences) { + int max=0; + for (int i = 0; i < sentences.length; i++) { + String[] arr=sentences[i].split(" "); + if(arr.length>max){ + max=arr.length; + } + } + return max; + } +} diff --git a/Java/Leetcode/Leetcode268.java b/Java/Leetcode/Leetcode268.java new file mode 100644 index 00000000..b0fc468c --- /dev/null +++ b/Java/Leetcode/Leetcode268.java @@ -0,0 +1,46 @@ +package com.company; + +public class Leetcode268 { + public static void main(String[] args) { + int[] arr={9,6,4,2,3,5,7,0,1}; + int ans=missing(arr); + System.out.println(ans);; + } + + + static int missing(int[] arr){ + sort(arr); + + for(int i=0;i arr.length-1) { + i++; + continue; + } + + if (arr[i] != arr[charIndex]) { + swap(arr, i, charIndex); + } else { + i++; + } + } + } + + static void swap(int[] arr, int a, int b){ + int temp=arr[a]; + arr[a]=arr[b]; + arr[b]=temp; + } +} diff --git a/Java/Leetcode/Leetcode287.java b/Java/Leetcode/Leetcode287.java new file mode 100644 index 00000000..779e5d8d --- /dev/null +++ b/Java/Leetcode/Leetcode287.java @@ -0,0 +1,32 @@ +package com.company; + +import java.util.Arrays; + +public class Leetcode287 { + public static void main(String[] args) { + int[] arr={3,1,3,4,2}; + sort(arr); + System.out.println(arr[arr.length-1]); + + } + + static void sort(int[] arr){ + int i=0; + while(i> 1; + k++; + } + arr[j] = c; + } + return arr; + } + } \ No newline at end of file diff --git a/Java/Leetcode/Leetcode34.java b/Java/Leetcode/Leetcode34.java new file mode 100644 index 00000000..c315ce9b --- /dev/null +++ b/Java/Leetcode/Leetcode34.java @@ -0,0 +1,36 @@ +package com.company; + +public class Leetcode34 { + public static void main(String[] args) { + int[] arr={2,5,7,9,9,9,9,10,12,16}; + int target=9; + int first=search(arr,target,true); + int last=search(arr,target,false); + System.out.println("First Occurence At="+first); + System.out.println("Last Occurence At="+last); + + } + + static int search(int[] arr, int target,boolean isStart){ + int start=0,end=arr.length-1;int ans=-1; + while(end>=start){ + int mid=start+(end-start)/2; + if(target>arr[mid]){ + start=mid+1; + } + else if(target0){ + char ch= sb.charAt(0); + sb.deleteCharAt(0); + + for (int i = 0; i < sb.length(); i++) { + if(ch==sb.charAt(i)){ + count++; + sb.deleteCharAt(i); + i--; + } + } + answer=answer+count+ch; + count=1; + } + return answer; + } +} \ No newline at end of file diff --git a/Java/Leetcode/Leetcode442.java b/Java/Leetcode/Leetcode442.java new file mode 100644 index 00000000..9fb11c2f --- /dev/null +++ b/Java/Leetcode/Leetcode442.java @@ -0,0 +1,40 @@ +package com.company; + +import java.util.*; + +public class Leetcode442 { + public static void main(String[] args) { + int arr[]={4,3,2,7,8,2,3,1}; + List ans=duplicate(arr); + System.out.println(ans); + } + + + static List duplicate(int[] arr){ + int i=0; + while(i ans=new ArrayList<>(); + for(int j=0;j ans=new ArrayList<>(); + List ans=disappear(arr); + System.out.println(ans); + } + + static List disappear(int[] arr) { + int i = 0; + while (i < arr.length) { + int correctIndex = arr[i] - 1; + if (arr[i] != arr[correctIndex]) { + swap(arr, i, correctIndex); + } else { + i++; + } + } + + List ans = new ArrayList<>(); + for (int j = 0; j < arr.length; j++) { + if (arr[j] != j + 1) + { ans.add(j+1); + } + } + return ans; + } + + static void swap(int[] arr, int a, int b){ + int temp=arr[a]; + arr[a]=arr[b]; + arr[b]=temp; + } +} \ No newline at end of file diff --git a/Java/Leetcode/Leetcode476.java b/Java/Leetcode/Leetcode476.java new file mode 100644 index 00000000..a164cac2 --- /dev/null +++ b/Java/Leetcode/Leetcode476.java @@ -0,0 +1,13 @@ +package com.company; + +public class Leetcode476 { + public static void main(String[] args) { + int n = 5; + int ans = compliment(n); + System.out.println(ans); + } + + static int compliment(int n) { + return ~n; + } +} \ No newline at end of file diff --git a/Java/Leetcode/Leetcode557.java b/Java/Leetcode/Leetcode557.java new file mode 100644 index 00000000..00852ddf --- /dev/null +++ b/Java/Leetcode/Leetcode557.java @@ -0,0 +1,29 @@ +package com.company; + +public class Leetcode557 { + public static void main(String[] args) { + String s="Let's take LeetCode contest"; + String answer=reverseWords(s); + System.out.println(answer); + } + + public static String reverseWords(String s) { + int space=0; + StringBuilder sb=new StringBuilder(s); + sb.append(" "); + String updated=""; + while (sb.length()>1){ + space=sb.indexOf(" "); + String str = reverse(sb.substring(0, space)); + updated=updated+" "+str; + sb.delete(0,space+1); + } + return updated.trim(); + } + + public static String reverse(String s){ + StringBuilder sb=new StringBuilder(s); + sb.reverse(); + return sb.toString(); + } +} diff --git a/Java/Leetcode/Leetcode58.java b/Java/Leetcode/Leetcode58.java new file mode 100644 index 00000000..fb0cad38 --- /dev/null +++ b/Java/Leetcode/Leetcode58.java @@ -0,0 +1,19 @@ +package com.company; + +public class Leetcode58 { + public static void main(String[] args) { + String s=" fly me to the moon "; + System.out.println(length(s)); + } + + static int length(String str){ + StringBuilder s=new StringBuilder(str.trim()); + int l=0; + for (int i = s.length()-1; i >=0 ; i--) { + if(Character.isWhitespace(s.charAt(i))){ + return l=(s.substring(i+1).length()); + } + } + return s.length(); + } +} \ No newline at end of file diff --git a/Java/Leetcode/Leetcode628.java b/Java/Leetcode/Leetcode628.java new file mode 100644 index 00000000..f6b7b8d5 --- /dev/null +++ b/Java/Leetcode/Leetcode628.java @@ -0,0 +1,35 @@ +package com.company; + +public class Leetcode628 { + public static void main(String[] args) { + int[] arr={-1,-2,-3}; + int ans=product(arr); + System.out.println(ans); + } + + static int product(int[] arr){ + int i=0,prod=1; + while(iarr.length-4;j--){ + prod=arr[j]*prod; + } + return prod; + } + + + static void swap(int[] arr, int a, int b){ + int temp=arr[a]; + arr[a]=arr[b]; + arr[b]=temp; + } + +} \ No newline at end of file diff --git a/Java/Leetcode/Leetcode645.java b/Java/Leetcode/Leetcode645.java new file mode 100644 index 00000000..76c53ceb --- /dev/null +++ b/Java/Leetcode/Leetcode645.java @@ -0,0 +1,41 @@ +package com.company; + +import java.util.ArrayList; +import java.util.List; + +public class Leetcode645 { + public static void main(String[] args) { + int[] arr={1,2,2,4}; + int[] ans=disappear(arr); + System.out.println("Repeated:"+ans[0]); + System.out.println("Missing:"+ans[1]); + + } + + static int[] disappear(int[] arr) { + int i = 0; + while (i < arr.length) { + int correctIndex = arr[i] - 1; + if (arr[i] != arr[correctIndex]) { + swap(arr, i, correctIndex); + } else { + i++; + } + } + + int[] ans = new int[2]; + for (int j = 0; j < arr.length; j++) { + if (arr[j] != j + 1){ + ans[0]=arr[j]; + ans[1]=j+1; + } + } + return ans; + } + + static void swap(int[] arr, int a, int b){ + int temp=arr[a]; + arr[a]=arr[b]; + arr[b]=temp; + } +} diff --git a/Java/Leetcode/Leetcode657.java b/Java/Leetcode/Leetcode657.java new file mode 100644 index 00000000..a84f3a8a --- /dev/null +++ b/Java/Leetcode/Leetcode657.java @@ -0,0 +1,35 @@ +package com.company; + +public class Leetcode657 { + public static void main(String[] args) { + String s="LLUDRR"; + System.out.println(robot(s)); + } + + + static boolean robot(String s){ + int l=0,r=0,u=0,d=0; + for (int i = 0; i < s.length(); i++) { + char ch=s.charAt(i); + if(ch=='L' || ch=='l'){ + l++; + } + if(ch=='R' ||ch=='r' ){ + r++; + } + if(ch=='U' || ch=='u'){ + u++; + } + if(ch=='D' ||ch=='d' ){ + d++; + } + } + + if(l==r && u==d){ + return true; + } + else{ + return false; + } + } +} diff --git a/Java/Leetcode/Leetcode680.java b/Java/Leetcode/Leetcode680.java new file mode 100644 index 00000000..804c7480 --- /dev/null +++ b/Java/Leetcode/Leetcode680.java @@ -0,0 +1,55 @@ +package com.company; + +public class Leetcode680 { + public static void main(String[] args) { + StringBuilder s=new StringBuilder("sohail"); + System.out.println(palindrome(s)); + } + + static boolean palindrome(StringBuilder s){ + boolean ans=palin(s); + + if(ans){ + return true; + } + + for (int i = 0; i < s.length(); i++) { + StringBuilder s2=new StringBuilder(s); + s2.deleteCharAt(i); + ans=palin(s2); + if(ans){ + return true; + } + } + return false; + } + + + static boolean palin(StringBuilder s) { + StringBuilder s1 = new StringBuilder(); + for (int i = 0; i < s.length(); i++) { + char ch = Character.toLowerCase(s.charAt(i)); + if (ch >= 97 && ch <= 122 || ch >= 48 && ch <= 57) { + s1.append(ch); + } + } + + StringBuilder s2 = new StringBuilder(s1); + + reverse(s2); + + return s1.toString().equals(s2.toString()); + } + + static void reverse(StringBuilder s){ + int start=0,end=s.length()-1; + while(end>start){ + char temp; + temp=s.charAt(start); + s.setCharAt(start,s.charAt(end)); + s.setCharAt(end,temp); + start++; + end--; + } + } +} diff --git a/Java/Leetcode/Leetcode709.java b/Java/Leetcode/Leetcode709.java new file mode 100644 index 00000000..4fce7cfd --- /dev/null +++ b/Java/Leetcode/Leetcode709.java @@ -0,0 +1,21 @@ +package com.company; + +public class Leetcode709 { + public static void main(String[] args) { + String s="SoHail"; + System.out.println(lowerCase(s)); + } + + static String lowerCase(String s){ + StringBuilder str=new StringBuilder(); + for (int i = 0; i < s.length(); i++) { + if(s.charAt(i)>=65 && s.charAt(i)<=90 ){ + str.append(Character.toLowerCase(s.charAt(i))); + } + else{ + str.append(s.charAt(i)); + } + } + return str.toString(); + } +} diff --git a/Java/Leetcode/Leetcode744.java b/Java/Leetcode/Leetcode744.java new file mode 100644 index 00000000..e07084c0 --- /dev/null +++ b/Java/Leetcode/Leetcode744.java @@ -0,0 +1,35 @@ +package com.company; + +public class Leetcode744 { + public static void main(String[] args) { + char[] arr={'c','f','j'}; + char target='c'; + + int ans=ceiling(arr,target); + + if(ans==-1){ + System.out.println("Empty Array"); + } + else + System.out.println("Ceiling="+arr[ans]); + } + + static int ceiling(char[] arr, char target){ + int start=0,end=arr.length-1; + if(arr.length==0){ + return -1; + } + + while(end>=start){ + int mid=start+(end-start)/2; + + if(target>=arr[mid]){ + start=mid+1; + } + else if(target arr[mid+1]) { + end = mid; + } else { + start = mid + 1; + } + } + return start; + } + +} From ab5f085983f34bef1c24c39e926d9c0ef614f871 Mon Sep 17 00:00:00 2001 From: bhavy007 <44473716+bhavy007@users.noreply.github.com> Date: Tue, 4 Oct 2022 02:17:25 +0530 Subject: [PATCH 057/448] Added Insertion of node at tail of LinkedList --- ...nsertion of node at tail of LinkedList.cpp | 65 +++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 CPP/LINKED LIST/SINGLY LINKED LIST/Insertion of node at tail of LinkedList.cpp diff --git a/CPP/LINKED LIST/SINGLY LINKED LIST/Insertion of node at tail of LinkedList.cpp b/CPP/LINKED LIST/SINGLY LINKED LIST/Insertion of node at tail of LinkedList.cpp new file mode 100644 index 00000000..f45b8544 --- /dev/null +++ b/CPP/LINKED LIST/SINGLY LINKED LIST/Insertion of node at tail of LinkedList.cpp @@ -0,0 +1,65 @@ + +#include + +using namespace std; + + + +struct Node +{ + int data; + struct Node *next; +}; + +struct Node *head; + +void +Insert (int data) +{ + struct Node *temp = (struct Node *) malloc (sizeof (struct Node *)); + + + temp->data = data; + temp->next = NULL; + + if (head == NULL) + { + head = temp; + return; + } + + struct Node *temp2 = head; + while (temp2->next != NULL) + { + temp2 = temp2->next; + } + temp2->next = temp; +} + +void +Print () +{ + struct Node *temp = head; + while (temp != NULL) + { + printf (" %d", temp->data); + temp = temp->next; + } + printf ("\n"); + +} + + +int +main () +{ + head = NULL; + Insert (4); + Insert (6); + Insert (8); + Insert (2); + Print (); + + return 0; +} + From a4e23c8992f544c05e6a0be3780e520d9fadc311 Mon Sep 17 00:00:00 2001 From: Shakti Maddheshiya <97889623+Shakti184@users.noreply.github.com> Date: Tue, 4 Oct 2022 02:24:54 +0530 Subject: [PATCH 058/448] Create Minimum Time to Make Rope Colorful.cpp --- .../Minimum Time to Make Rope Colorful.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 Dynamic Programming/Minimum Time to Make Rope Colorful.cpp diff --git a/Dynamic Programming/Minimum Time to Make Rope Colorful.cpp b/Dynamic Programming/Minimum Time to Make Rope Colorful.cpp new file mode 100644 index 00000000..542135d9 --- /dev/null +++ b/Dynamic Programming/Minimum Time to Make Rope Colorful.cpp @@ -0,0 +1,16 @@ +//problem statement https://leetcode.com/problems/minimum-time-to-make-rope-colorful/ +class Solution { +public: + int minCost(string c, vector& nT) { + int n=c.size(); + int sum=0; + int mx=nT[0]; + for(int i=1;i<=n;i++){ + if(c[i]==c[i-1]){ + sum+=min(nT[i-1],nT[i]); + nT[i]=max(nT[i],nT[i-1]); + } + } + return sum; + } +}; From af33758c71f1a3bfcf1cbd7842b8175524fa5f9d Mon Sep 17 00:00:00 2001 From: Shakti Maddheshiya <97889623+Shakti184@users.noreply.github.com> Date: Tue, 4 Oct 2022 02:27:46 +0530 Subject: [PATCH 059/448] Create Longest Increasing Subsequence.cpp --- .../Longest Increasing Subsequence.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 Dynamic Programming/Longest Increasing Subsequence.cpp diff --git a/Dynamic Programming/Longest Increasing Subsequence.cpp b/Dynamic Programming/Longest Increasing Subsequence.cpp new file mode 100644 index 00000000..0322ffa4 --- /dev/null +++ b/Dynamic Programming/Longest Increasing Subsequence.cpp @@ -0,0 +1,17 @@ +//problem statement https://leetcode.com/problems/longest-increasing-subsequence/ + +class Solution { +public: + int lengthOfLIS(vector& nums) { + vector sub; + for (int x : nums) { + if (sub.empty() || sub[sub.size() - 1] < x) { + sub.push_back(x); + } else { + auto it = lower_bound(sub.begin(), sub.end(), x); // Find the index of the smallest number >= x + *it = x; // Replace that number with x + } + } + return sub.size(); + } +}; From ca92ec02d50e9d602569e873219fc56c42adbd56 Mon Sep 17 00:00:00 2001 From: ash-sxn Date: Tue, 4 Oct 2022 05:34:14 +0530 Subject: [PATCH 060/448] Fixed inconsistent class naming of java code (to CamelCase)^C --- Java/.idea/.gitignore | 3 + ...n_Array.java => ArrangeNumberInArray.java} | 2 +- ...tersection.java => ArrayIntersection.java} | 2 +- Java/Array/{Array_Sum.java => ArraySum.java} | 2 +- Java/Array/{equalSide.java => EqualSide.java} | 2 +- ...Find_Duplicate.java => FindDuplicate.java} | 2 +- ...{insertionSort.java => InsertionSort.java} | 2 +- ...ne_Algorithm.java => KadaneAlgorithm.java} | 0 ...argest_col_sum.java => LargestColSum.java} | 2 +- ..._Row_Column.java => LargestRowColumn.java} | 2 +- ...argest_Row_Sum.java => LargestRowSum.java} | 2 +- .../{Linear_Search.java => LinearSearch.java} | 2 +- Java/Array/{Pair_Sum.java => PairSum.java} | 2 +- .../{pushZeroEnd.java => PushZeroEnd.java} | 2 +- ...Of_Two_Arrays.java => SumOfTwoArrays.java} | 2 +- ...Swap_Alternate.java => SwapAlternate.java} | 2 +- ...Unique_Element.java => UniqueElement.java} | 2 +- Java/{binarysearch.java => BinarySearch.java} | 2 +- ....java => CountOperationsToObtainZero.java} | 2 +- ...=> DetermineColorOfAChessboardSquare.java} | 2 +- ...java => EvenOddNumberUsingBitwiseAnd.java} | 2 +- ...cci_pattern.java => FibonacciPattern.java} | 0 ... => FindGreatestCommonDivisorOfArray.java} | 2 +- ...its.java => FindNoWithEvenNoOfDigits.java} | 0 .../BitOperations.class | Bin .../BitOperations.java | 0 .../BitwiseOperators.java | 0 .../FastExponentiation.class | Bin .../FastExponentiation.java | 0 .../OddEven.java | 0 ...r-Hand.java => LeetCodeBestPokerHand.java} | 0 ...ode-Plus-One.java => LeetCodePlusOne.java} | 0 ...va => LeetcodeIteratorForCombination.java} | 0 ...a => LeetcodeLetterTilePossibilities.java} | 0 ...de_LRUCache.java => LeetcodeLruCache.java} | 0 ....java => LeetcodeNThTribonacciNumber.java} | 0 ...java => LeetcodeReverseNodesInKGroup.java} | 0 ...a => LeetcodeSumOfAllSubsetXorTotals.java} | 0 ...em.java => LeetcodeTheSkylineProblem.java} | 0 Java/Linked List/length_of_linkedList.java | 52 ------------------ .../LeetCode61RotateList.java} | 0 Java/LinkedList/LengthOfLinkedList.java | 52 ++++++++++++++++++ .../LinkedListCycle.java} | 0 .../MergeTwoSortedList} | 0 .../MiddleOfTheLinkedList.java} | 0 .../PalindromeLinkedList.java} | 0 .../ReverseLinkedList.java} | 2 +- .../ReverseNodesInKGroup.java} | 0 ...on.java => MatrixChainMultiplication.java} | 0 ...Greater Element II => NextGreaterElement2} | 0 .../AP1.java | 0 .../AP2.java | 0 .../ChristmasTree.java | 0 .../Question1.java | 0 .../Question10.java | 0 .../Question11.java | 0 .../Question12.java | 0 .../Question13.java | 0 .../Question14.java | 0 .../Question2.java | 0 .../Question3.java | 0 .../Question4.java | 0 .../Question5.java | 0 .../Question6.java | 0 .../Question7.java | 0 .../Question8.java | 0 .../Question9.java | 0 ...an-to-Integer.java => RomanToInteger.java} | 0 .../BFS/BST.java | 2 +- .../BinarySearch.java | 0 .../LinearSearch.java | 0 .../OderAgonosticBinarySearch.java} | 0 .../TernarySearch.java | 0 .../BubbleSort.java} | 0 .../CountSort.java | 0 .../CyclicSort.java} | 2 +- .../InsertionSort} | 0 .../MergeSortArray.java} | 2 +- .../QuickSortArray.java} | 2 +- .../RadixSort.java | 0 .../SelectionSort.java | 0 Java/{spiralmatrix.java => SpiralMatrix.java} | 0 ...rge_Intervals.java => MergeIntervals.java} | 0 .../{Caseconvert.java => CaseConvert.java} | 2 +- ...permutation.java => CheckPermutation.java} | 2 +- Java/String/{compress.java => Compress.java} | 2 +- .../{Count_Words.java => CountWords.java} | 2 +- ...ter.java => HighestOccuringCharacter.java} | 2 +- Java/String/{LargeSTR.java => LargeStr.java} | 2 +- ..._Substring.java => PrintAllSubstring.java} | 2 +- ...ve_Character.java => RemoveCharacter.java} | 2 +- ...ava => RemoveConsecutivrsDuplicaates.java} | 2 +- ...se_Each_Word.java => ReverseEachWord.java} | 2 +- ...rdwise.java => ReverseStringWordwise.java} | 2 +- .../{Strbuilder.java => StrBuilder.java} | 2 +- .../String/{substring.java => SubString.java} | 2 +- 96 files changed, 93 insertions(+), 90 deletions(-) create mode 100644 Java/.idea/.gitignore rename Java/Array/{Arrange_Number_In_Array.java => ArrangeNumberInArray.java} (94%) rename Java/Array/{Array_Intersection.java => ArrayIntersection.java} (95%) rename Java/Array/{Array_Sum.java => ArraySum.java} (94%) rename Java/Array/{equalSide.java => EqualSide.java} (96%) rename Java/Array/{Find_Duplicate.java => FindDuplicate.java} (95%) rename Java/Array/{insertionSort.java => InsertionSort.java} (95%) rename Java/Array/{Kadane_Algorithm.java => KadaneAlgorithm.java} (100%) rename Java/Array/{Largest_col_sum.java => LargestColSum.java} (94%) rename Java/Array/{Largest_Row_Column.java => LargestRowColumn.java} (96%) rename Java/Array/{Largest_Row_Sum.java => LargestRowSum.java} (94%) rename Java/Array/{Linear_Search.java => LinearSearch.java} (95%) rename Java/Array/{Pair_Sum.java => PairSum.java} (95%) rename Java/Array/{pushZeroEnd.java => PushZeroEnd.java} (95%) rename Java/Array/{Sum_Of_Two_Arrays.java => SumOfTwoArrays.java} (95%) rename Java/Array/{Swap_Alternate.java => SwapAlternate.java} (94%) rename Java/Array/{Unique_Element.java => UniqueElement.java} (94%) rename Java/{binarysearch.java => BinarySearch.java} (93%) rename Java/{Count_Operations_to_Obtain_Zero.java => CountOperationsToObtainZero.java} (90%) rename Java/{Determine_Color_of_a_Chessboard_Square.java => DetermineColorOfAChessboardSquare.java} (85%) rename Java/{even-odd-number-using-bitwise-and.java => EvenOddNumberUsingBitwiseAnd.java} (96%) rename Java/{Fibonacci_pattern.java => FibonacciPattern.java} (100%) rename Java/{Find_Greatest_Common_Divisor_of_Array.java => FindGreatestCommonDivisorOfArray.java} (96%) rename Java/{Find-No-With-even-no-of-digits.java => FindNoWithEvenNoOfDigits.java} (100%) rename Java/{5_Bit Manipulation => FiveBitManipulation}/BitOperations.class (100%) rename Java/{5_Bit Manipulation => FiveBitManipulation}/BitOperations.java (100%) rename Java/{5_Bit Manipulation => FiveBitManipulation}/BitwiseOperators.java (100%) rename Java/{5_Bit Manipulation => FiveBitManipulation}/FastExponentiation.class (100%) rename Java/{5_Bit Manipulation => FiveBitManipulation}/FastExponentiation.java (100%) rename Java/{5_Bit Manipulation => FiveBitManipulation}/OddEven.java (100%) rename Java/{LeetCode-Best-Poker-Hand.java => LeetCodeBestPokerHand.java} (100%) rename Java/{LeetCode-Plus-One.java => LeetCodePlusOne.java} (100%) rename Java/{Leetcode-IteratorforCombination.java => LeetcodeIteratorForCombination.java} (100%) rename Java/{Leetcode-LetterTilePossibilities.java => LeetcodeLetterTilePossibilities.java} (100%) rename Java/{Leetcode_LRUCache.java => LeetcodeLruCache.java} (100%) rename Java/{Leetcode-N-th Tribonacci Number.java => LeetcodeNThTribonacciNumber.java} (100%) rename Java/{Leetcode-Reverse-Nodes-in-k-Group.java => LeetcodeReverseNodesInKGroup.java} (100%) rename Java/{Leetcode-Sum of All Subset XOR Totals.java => LeetcodeSumOfAllSubsetXorTotals.java} (100%) rename Java/{Leetcode-The-Skyline-Problem.java => LeetcodeTheSkylineProblem.java} (100%) delete mode 100644 Java/Linked List/length_of_linkedList.java rename Java/{Linked List/LeetCode_61_Rotate_List.java => LinkedList/LeetCode61RotateList.java} (100%) create mode 100644 Java/LinkedList/LengthOfLinkedList.java rename Java/{Linked List/Linked_List_Cycle.java => LinkedList/LinkedListCycle.java} (100%) rename Java/{Linked List/Merge_Two_Sorted_List => LinkedList/MergeTwoSortedList} (100%) rename Java/{Linked List/Middle_of_the_Linked_List.java => LinkedList/MiddleOfTheLinkedList.java} (100%) rename Java/{Linked List/Palindrome_Linked_List.java => LinkedList/PalindromeLinkedList.java} (100%) rename Java/{Linked List/Reverse_Linked_List.java => LinkedList/ReverseLinkedList.java} (96%) rename Java/{Linked List/Reverse_Nodes_in_k-Group.java => LinkedList/ReverseNodesInKGroup.java} (100%) rename Java/{Matrix Chain_Multiplication.java => MatrixChainMultiplication.java} (100%) rename Java/{Next Greater Element II => NextGreaterElement2} (100%) rename Java/{Pattern-Questions => PatternQuestions}/AP1.java (100%) rename Java/{Pattern-Questions => PatternQuestions}/AP2.java (100%) rename Java/{Pattern-Questions => PatternQuestions}/ChristmasTree.java (100%) rename Java/{Pattern-Questions => PatternQuestions}/Question1.java (100%) rename Java/{Pattern-Questions => PatternQuestions}/Question10.java (100%) rename Java/{Pattern-Questions => PatternQuestions}/Question11.java (100%) rename Java/{Pattern-Questions => PatternQuestions}/Question12.java (100%) rename Java/{Pattern-Questions => PatternQuestions}/Question13.java (100%) rename Java/{Pattern-Questions => PatternQuestions}/Question14.java (100%) rename Java/{Pattern-Questions => PatternQuestions}/Question2.java (100%) rename Java/{Pattern-Questions => PatternQuestions}/Question3.java (100%) rename Java/{Pattern-Questions => PatternQuestions}/Question4.java (100%) rename Java/{Pattern-Questions => PatternQuestions}/Question5.java (100%) rename Java/{Pattern-Questions => PatternQuestions}/Question6.java (100%) rename Java/{Pattern-Questions => PatternQuestions}/Question7.java (100%) rename Java/{Pattern-Questions => PatternQuestions}/Question8.java (100%) rename Java/{Pattern-Questions => PatternQuestions}/Question9.java (100%) rename Java/{Roman-to-Integer.java => RomanToInteger.java} (100%) rename Java/{Searching-Algorithms => SearchingAlgorithms}/BFS/BST.java (99%) rename Java/{Searching-Algorithms => SearchingAlgorithms}/BinarySearch.java (100%) rename Java/{Searching-Algorithms => SearchingAlgorithms}/LinearSearch.java (100%) rename Java/{Searching-Algorithms/oderAgonosticBinarySearch.java => SearchingAlgorithms/OderAgonosticBinarySearch.java} (100%) rename Java/{Searching-Algorithms => SearchingAlgorithms}/TernarySearch.java (100%) rename Java/{Sorting Techniques/Bubble_Sort.java => SortingTechniques/BubbleSort.java} (100%) rename Java/{Sorting Techniques => SortingTechniques}/CountSort.java (100%) rename Java/{Sorting Techniques/Cyclic_Sort.java => SortingTechniques/CyclicSort.java} (93%) rename Java/{Sorting Techniques/Insertion_Sort => SortingTechniques/InsertionSort} (100%) rename Java/{Sorting Techniques/MergeSort_Array.java => SortingTechniques/MergeSortArray.java} (98%) rename Java/{Sorting Techniques/QuickSort_Array.java => SortingTechniques/QuickSortArray.java} (97%) rename Java/{Sorting Techniques => SortingTechniques}/RadixSort.java (100%) rename Java/{Sorting Techniques => SortingTechniques}/SelectionSort.java (100%) rename Java/{spiralmatrix.java => SpiralMatrix.java} (100%) rename Java/Stack/{Merge_Intervals.java => MergeIntervals.java} (100%) rename Java/String/{Caseconvert.java => CaseConvert.java} (89%) rename Java/String/{Checkpermutation.java => CheckPermutation.java} (92%) rename Java/String/{compress.java => Compress.java} (91%) rename Java/String/{Count_Words.java => CountWords.java} (91%) rename Java/String/{Highest_Occuring_character.java => HighestOccuringCharacter.java} (91%) rename Java/String/{LargeSTR.java => LargeStr.java} (87%) rename Java/String/{Print_All_Substring.java => PrintAllSubstring.java} (91%) rename Java/String/{Remove_Character.java => RemoveCharacter.java} (92%) rename Java/String/{remove_consecutivrs_Duplicaates.java => RemoveConsecutivrsDuplicaates.java} (88%) rename Java/String/{Reverse_Each_Word.java => ReverseEachWord.java} (94%) rename Java/String/{Reverse_String_Wordwise.java => ReverseStringWordwise.java} (93%) rename Java/String/{Strbuilder.java => StrBuilder.java} (94%) rename Java/String/{substring.java => SubString.java} (85%) diff --git a/Java/.idea/.gitignore b/Java/.idea/.gitignore new file mode 100644 index 00000000..26d33521 --- /dev/null +++ b/Java/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/Java/Array/Arrange_Number_In_Array.java b/Java/Array/ArrangeNumberInArray.java similarity index 94% rename from Java/Array/Arrange_Number_In_Array.java rename to Java/Array/ArrangeNumberInArray.java index e1a6d1c0..94e9c749 100644 --- a/Java/Array/Arrange_Number_In_Array.java +++ b/Java/Array/ArrangeNumberInArray.java @@ -37,7 +37,7 @@ package Array; import java.util.Scanner; -public class Arrange_Number_In_Array { +public class ArrangeNumberInArray { public static void printArray(int[] arr1) { int n = arr1.length; for (int i = 0; i < n; i++) { diff --git a/Java/Array/Array_Intersection.java b/Java/Array/ArrayIntersection.java similarity index 95% rename from Java/Array/Array_Intersection.java rename to Java/Array/ArrayIntersection.java index 87a59c2d..8e145238 100644 --- a/Java/Array/Array_Intersection.java +++ b/Java/Array/ArrayIntersection.java @@ -59,7 +59,7 @@ package Array; import java.util.Scanner; -public class Array_Intersection { +public class ArrayIntersection { public static int[] takingInput1() { Scanner sc = new Scanner(System.in); diff --git a/Java/Array/Array_Sum.java b/Java/Array/ArraySum.java similarity index 94% rename from Java/Array/Array_Sum.java rename to Java/Array/ArraySum.java index 39a84199..12ddd844 100644 --- a/Java/Array/Array_Sum.java +++ b/Java/Array/ArraySum.java @@ -33,7 +33,7 @@ package Array; import java.util.Scanner; -public class Array_Sum { +public class ArraySum { public static int arraySum(int[] arr) { int n = arr.length; diff --git a/Java/Array/equalSide.java b/Java/Array/EqualSide.java similarity index 96% rename from Java/Array/equalSide.java rename to Java/Array/EqualSide.java index 9456b89e..558fbc0a 100644 --- a/Java/Array/equalSide.java +++ b/Java/Array/EqualSide.java @@ -8,7 +8,7 @@ */ -public class equalSide { +public class EqualSide { public static int findEvenIndex(int[] arr) { // your code int sum = 0, eq = 0; diff --git a/Java/Array/Find_Duplicate.java b/Java/Array/FindDuplicate.java similarity index 95% rename from Java/Array/Find_Duplicate.java rename to Java/Array/FindDuplicate.java index 91599813..8d32463a 100644 --- a/Java/Array/Find_Duplicate.java +++ b/Java/Array/FindDuplicate.java @@ -39,7 +39,7 @@ package Array; import java.util.Scanner; -public class Find_Duplicate { +public class FindDuplicate { public static int duplicateElement(int[] arr) { int n = arr.length; diff --git a/Java/Array/insertionSort.java b/Java/Array/InsertionSort.java similarity index 95% rename from Java/Array/insertionSort.java rename to Java/Array/InsertionSort.java index 1b548ffe..850e8880 100644 --- a/Java/Array/insertionSort.java +++ b/Java/Array/InsertionSort.java @@ -38,7 +38,7 @@ package Array; import java.util.Scanner; -public class insertionSort { +public class InsertionSort { public static int[] takeInput() { diff --git a/Java/Array/Kadane_Algorithm.java b/Java/Array/KadaneAlgorithm.java similarity index 100% rename from Java/Array/Kadane_Algorithm.java rename to Java/Array/KadaneAlgorithm.java diff --git a/Java/Array/Largest_col_sum.java b/Java/Array/LargestColSum.java similarity index 94% rename from Java/Array/Largest_col_sum.java rename to Java/Array/LargestColSum.java index e6f5258e..9b305ecf 100644 --- a/Java/Array/Largest_col_sum.java +++ b/Java/Array/LargestColSum.java @@ -3,7 +3,7 @@ package Two_Dimensional_Array; import java.util.Scanner; -public class Largest_col_sum { +public class LargestColSum { public static int largestcolsum(int [] [] arr2) { int rows = arr2.length; int cols = arr2[0].length; diff --git a/Java/Array/Largest_Row_Column.java b/Java/Array/LargestRowColumn.java similarity index 96% rename from Java/Array/Largest_Row_Column.java rename to Java/Array/LargestRowColumn.java index 56cd2e18..34e6e2e0 100644 --- a/Java/Array/Largest_Row_Column.java +++ b/Java/Array/LargestRowColumn.java @@ -53,7 +53,7 @@ package Two_Dimensional_Array; import java.util.Scanner; -public class Largest_Row_Column { +public class LargestRowColumn { public static void largestRowColumn(int [] [] arr2) { int cols = arr2[0].length; diff --git a/Java/Array/Largest_Row_Sum.java b/Java/Array/LargestRowSum.java similarity index 94% rename from Java/Array/Largest_Row_Sum.java rename to Java/Array/LargestRowSum.java index ed93900f..baeb2289 100644 --- a/Java/Array/Largest_Row_Sum.java +++ b/Java/Array/LargestRowSum.java @@ -7,7 +7,7 @@ package Two_Dimensional_Array; import java.util.Scanner; -public class Largest_Row_Sum { +public class LargestRowSum { public static int largestcolsum(int [] [] arr2) { int max = Integer.MIN_VALUE; for (int i = 0; i < arr2.length; i++) { diff --git a/Java/Array/Linear_Search.java b/Java/Array/LinearSearch.java similarity index 95% rename from Java/Array/Linear_Search.java rename to Java/Array/LinearSearch.java index 60498ef1..dcc5ae78 100644 --- a/Java/Array/Linear_Search.java +++ b/Java/Array/LinearSearch.java @@ -42,7 +42,7 @@ import java.util.Scanner; -public class Linear_Search { +public class LinearSearch { public static void linearSearch(int[] arr, int x) { diff --git a/Java/Array/Pair_Sum.java b/Java/Array/PairSum.java similarity index 95% rename from Java/Array/Pair_Sum.java rename to Java/Array/PairSum.java index 8b6cb6fc..8e0b530b 100644 --- a/Java/Array/Pair_Sum.java +++ b/Java/Array/PairSum.java @@ -47,7 +47,7 @@ package Array; import java.util.Scanner; -public class Pair_Sum { +public class PairSum { public static int pairSum(int[] arr, int x) { int count = 0; diff --git a/Java/Array/pushZeroEnd.java b/Java/Array/PushZeroEnd.java similarity index 95% rename from Java/Array/pushZeroEnd.java rename to Java/Array/PushZeroEnd.java index 51014215..8c74bf23 100644 --- a/Java/Array/pushZeroEnd.java +++ b/Java/Array/PushZeroEnd.java @@ -53,7 +53,7 @@ package Array; import java.util.Scanner; -public class pushZeroEnd { +public class PushZeroEnd { public static void printArray(int [] arr) { System.out.print("The arranged array is: "); diff --git a/Java/Array/Sum_Of_Two_Arrays.java b/Java/Array/SumOfTwoArrays.java similarity index 95% rename from Java/Array/Sum_Of_Two_Arrays.java rename to Java/Array/SumOfTwoArrays.java index 5bf00005..da6424c0 100644 --- a/Java/Array/Sum_Of_Two_Arrays.java +++ b/Java/Array/SumOfTwoArrays.java @@ -59,7 +59,7 @@ package Array; import java.util.Scanner; -public class Sum_Of_Two_Arrays { +public class SumOfTwoArrays { public static void printArray(int [] arr3) { for (int i = 0; i < arr3.length; i++) { diff --git a/Java/Array/Swap_Alternate.java b/Java/Array/SwapAlternate.java similarity index 94% rename from Java/Array/Swap_Alternate.java rename to Java/Array/SwapAlternate.java index 4353ba2a..edaa3901 100644 --- a/Java/Array/Swap_Alternate.java +++ b/Java/Array/SwapAlternate.java @@ -39,7 +39,7 @@ package Array; import java.util.Scanner; -public class Swap_Alternate { +public class SwapAlternate { public static void printArray(int[] arr1) { int n = arr1.length; for (int i = 0; i < n; i++) { diff --git a/Java/Array/Unique_Element.java b/Java/Array/UniqueElement.java similarity index 94% rename from Java/Array/Unique_Element.java rename to Java/Array/UniqueElement.java index eec69559..3fa61a79 100644 --- a/Java/Array/Unique_Element.java +++ b/Java/Array/UniqueElement.java @@ -45,7 +45,7 @@ package Array; import java.util.Scanner; -public class Unique_Element { +public class UniqueElement { public static int uniqueElement(int[] arr) { int n = arr.length; diff --git a/Java/binarysearch.java b/Java/BinarySearch.java similarity index 93% rename from Java/binarysearch.java rename to Java/BinarySearch.java index 4a1b0076..59e75151 100644 --- a/Java/binarysearch.java +++ b/Java/BinarySearch.java @@ -1,4 +1,4 @@ -public class binarysearch { +public class BinarySearch { public int search(int[] nums, int target) { int start = 0; diff --git a/Java/Count_Operations_to_Obtain_Zero.java b/Java/CountOperationsToObtainZero.java similarity index 90% rename from Java/Count_Operations_to_Obtain_Zero.java rename to Java/CountOperationsToObtainZero.java index 5ff2efce..4e393e41 100644 --- a/Java/Count_Operations_to_Obtain_Zero.java +++ b/Java/CountOperationsToObtainZero.java @@ -2,7 +2,7 @@ LEETCODE QUESTION : 2169. Count Operations to Obtain Zero */ -public class Count_Operations_to_Obtain_Zero { +public class CountOperationsToObtainZero { public int countOperations(int num1, int num2) { return helper(num1, num2, 0); diff --git a/Java/Determine_Color_of_a_Chessboard_Square.java b/Java/DetermineColorOfAChessboardSquare.java similarity index 85% rename from Java/Determine_Color_of_a_Chessboard_Square.java rename to Java/DetermineColorOfAChessboardSquare.java index 69bafd43..a6fd1114 100644 --- a/Java/Determine_Color_of_a_Chessboard_Square.java +++ b/Java/DetermineColorOfAChessboardSquare.java @@ -3,7 +3,7 @@ */ -public class Determine_Color_of_a_Chessboard_Square { +public class DetermineColorOfAChessboardSquare { public boolean squareIsWhite(String coordinates) { diff --git a/Java/even-odd-number-using-bitwise-and.java b/Java/EvenOddNumberUsingBitwiseAnd.java similarity index 96% rename from Java/even-odd-number-using-bitwise-and.java rename to Java/EvenOddNumberUsingBitwiseAnd.java index 64318083..f1a11332 100644 --- a/Java/even-odd-number-using-bitwise-and.java +++ b/Java/EvenOddNumberUsingBitwiseAnd.java @@ -1,5 +1,5 @@ import java.util.Scanner; -public class evenodd { +public class EvenOdd { public static void main(String[]args){ Scanner sc = new Scanner(System.in); System.out.println("enter the number"); diff --git a/Java/Fibonacci_pattern.java b/Java/FibonacciPattern.java similarity index 100% rename from Java/Fibonacci_pattern.java rename to Java/FibonacciPattern.java diff --git a/Java/Find_Greatest_Common_Divisor_of_Array.java b/Java/FindGreatestCommonDivisorOfArray.java similarity index 96% rename from Java/Find_Greatest_Common_Divisor_of_Array.java rename to Java/FindGreatestCommonDivisorOfArray.java index 906d6eb4..5a6913b7 100644 --- a/Java/Find_Greatest_Common_Divisor_of_Array.java +++ b/Java/FindGreatestCommonDivisorOfArray.java @@ -7,7 +7,7 @@ */ //The code -class Find_Greatest_Common_Divisor_of_Array { +class FindGreatestCommonDivisorOfArray { public int findGCD(int[] nums) { insertion(nums); diff --git a/Java/Find-No-With-even-no-of-digits.java b/Java/FindNoWithEvenNoOfDigits.java similarity index 100% rename from Java/Find-No-With-even-no-of-digits.java rename to Java/FindNoWithEvenNoOfDigits.java diff --git a/Java/5_Bit Manipulation/BitOperations.class b/Java/FiveBitManipulation/BitOperations.class similarity index 100% rename from Java/5_Bit Manipulation/BitOperations.class rename to Java/FiveBitManipulation/BitOperations.class diff --git a/Java/5_Bit Manipulation/BitOperations.java b/Java/FiveBitManipulation/BitOperations.java similarity index 100% rename from Java/5_Bit Manipulation/BitOperations.java rename to Java/FiveBitManipulation/BitOperations.java diff --git a/Java/5_Bit Manipulation/BitwiseOperators.java b/Java/FiveBitManipulation/BitwiseOperators.java similarity index 100% rename from Java/5_Bit Manipulation/BitwiseOperators.java rename to Java/FiveBitManipulation/BitwiseOperators.java diff --git a/Java/5_Bit Manipulation/FastExponentiation.class b/Java/FiveBitManipulation/FastExponentiation.class similarity index 100% rename from Java/5_Bit Manipulation/FastExponentiation.class rename to Java/FiveBitManipulation/FastExponentiation.class diff --git a/Java/5_Bit Manipulation/FastExponentiation.java b/Java/FiveBitManipulation/FastExponentiation.java similarity index 100% rename from Java/5_Bit Manipulation/FastExponentiation.java rename to Java/FiveBitManipulation/FastExponentiation.java diff --git a/Java/5_Bit Manipulation/OddEven.java b/Java/FiveBitManipulation/OddEven.java similarity index 100% rename from Java/5_Bit Manipulation/OddEven.java rename to Java/FiveBitManipulation/OddEven.java diff --git a/Java/LeetCode-Best-Poker-Hand.java b/Java/LeetCodeBestPokerHand.java similarity index 100% rename from Java/LeetCode-Best-Poker-Hand.java rename to Java/LeetCodeBestPokerHand.java diff --git a/Java/LeetCode-Plus-One.java b/Java/LeetCodePlusOne.java similarity index 100% rename from Java/LeetCode-Plus-One.java rename to Java/LeetCodePlusOne.java diff --git a/Java/Leetcode-IteratorforCombination.java b/Java/LeetcodeIteratorForCombination.java similarity index 100% rename from Java/Leetcode-IteratorforCombination.java rename to Java/LeetcodeIteratorForCombination.java diff --git a/Java/Leetcode-LetterTilePossibilities.java b/Java/LeetcodeLetterTilePossibilities.java similarity index 100% rename from Java/Leetcode-LetterTilePossibilities.java rename to Java/LeetcodeLetterTilePossibilities.java diff --git a/Java/Leetcode_LRUCache.java b/Java/LeetcodeLruCache.java similarity index 100% rename from Java/Leetcode_LRUCache.java rename to Java/LeetcodeLruCache.java diff --git a/Java/Leetcode-N-th Tribonacci Number.java b/Java/LeetcodeNThTribonacciNumber.java similarity index 100% rename from Java/Leetcode-N-th Tribonacci Number.java rename to Java/LeetcodeNThTribonacciNumber.java diff --git a/Java/Leetcode-Reverse-Nodes-in-k-Group.java b/Java/LeetcodeReverseNodesInKGroup.java similarity index 100% rename from Java/Leetcode-Reverse-Nodes-in-k-Group.java rename to Java/LeetcodeReverseNodesInKGroup.java diff --git a/Java/Leetcode-Sum of All Subset XOR Totals.java b/Java/LeetcodeSumOfAllSubsetXorTotals.java similarity index 100% rename from Java/Leetcode-Sum of All Subset XOR Totals.java rename to Java/LeetcodeSumOfAllSubsetXorTotals.java diff --git a/Java/Leetcode-The-Skyline-Problem.java b/Java/LeetcodeTheSkylineProblem.java similarity index 100% rename from Java/Leetcode-The-Skyline-Problem.java rename to Java/LeetcodeTheSkylineProblem.java diff --git a/Java/Linked List/length_of_linkedList.java b/Java/Linked List/length_of_linkedList.java deleted file mode 100644 index ea92ae9d..00000000 --- a/Java/Linked List/length_of_linkedList.java +++ /dev/null @@ -1,52 +0,0 @@ -package LinkedList; - - class node { - - public T data; - public node next; - - public node(T data) { - this.data = data; - next = null; - } -} - -public class length_of_linkedList { - - public static node createLinkedList() { - - node n1 = new node<>(10); - node n2 = new node<>(20); - node n3 = new node<>(30); - node n4 = new node<>(40); - node n5 = new node<>(50); - - n1.next = n2; - n2.next = n3; - n3.next = n4; - n4.next = n5; - return n1; - - } - - public static int length1(node head) { - - int count = 0; - node temp = head; - while (temp != null) { - count++; - temp = temp.next; - } - return count; - - } - - public static void main(String[] args) { - - node head = createLinkedList(); - int ans = length1(head); - System.out.println(ans); - - } - -} \ No newline at end of file diff --git a/Java/Linked List/LeetCode_61_Rotate_List.java b/Java/LinkedList/LeetCode61RotateList.java similarity index 100% rename from Java/Linked List/LeetCode_61_Rotate_List.java rename to Java/LinkedList/LeetCode61RotateList.java diff --git a/Java/LinkedList/LengthOfLinkedList.java b/Java/LinkedList/LengthOfLinkedList.java new file mode 100644 index 00000000..5f1157fd --- /dev/null +++ b/Java/LinkedList/LengthOfLinkedList.java @@ -0,0 +1,52 @@ +package LinkedList; + + class Node { + + public T data; + public LinkedList.Node next; + + public Node(T data) { + this.data = data; + next = null; + } +} + +public class LengthOfLinkedList { + + public static LinkedList.Node createLinkedList() { + + LinkedList.Node n1 = new LinkedList.Node<>(10); + LinkedList.Node n2 = new LinkedList.Node<>(20); + LinkedList.Node n3 = new LinkedList.Node<>(30); + LinkedList.Node n4 = new LinkedList.Node<>(40); + LinkedList.Node n5 = new LinkedList.Node<>(50); + + n1.next = n2; + n2.next = n3; + n3.next = n4; + n4.next = n5; + return n1; + + } + + public static int length1(LinkedList.Node head) { + + int count = 0; + LinkedList.Node temp = head; + while (temp != null) { + count++; + temp = temp.next; + } + return count; + + } + + public static void main(String[] args) { + + LinkedList.Node head = createLinkedList(); + int ans = length1(head); + System.out.println(ans); + + } + +} \ No newline at end of file diff --git a/Java/Linked List/Linked_List_Cycle.java b/Java/LinkedList/LinkedListCycle.java similarity index 100% rename from Java/Linked List/Linked_List_Cycle.java rename to Java/LinkedList/LinkedListCycle.java diff --git a/Java/Linked List/Merge_Two_Sorted_List b/Java/LinkedList/MergeTwoSortedList similarity index 100% rename from Java/Linked List/Merge_Two_Sorted_List rename to Java/LinkedList/MergeTwoSortedList diff --git a/Java/Linked List/Middle_of_the_Linked_List.java b/Java/LinkedList/MiddleOfTheLinkedList.java similarity index 100% rename from Java/Linked List/Middle_of_the_Linked_List.java rename to Java/LinkedList/MiddleOfTheLinkedList.java diff --git a/Java/Linked List/Palindrome_Linked_List.java b/Java/LinkedList/PalindromeLinkedList.java similarity index 100% rename from Java/Linked List/Palindrome_Linked_List.java rename to Java/LinkedList/PalindromeLinkedList.java diff --git a/Java/Linked List/Reverse_Linked_List.java b/Java/LinkedList/ReverseLinkedList.java similarity index 96% rename from Java/Linked List/Reverse_Linked_List.java rename to Java/LinkedList/ReverseLinkedList.java index 94f11d29..b7c48f97 100644 --- a/Java/Linked List/Reverse_Linked_List.java +++ b/Java/LinkedList/ReverseLinkedList.java @@ -22,7 +22,7 @@ public class ListNode { } } -public class Reverse_Linked_List { +public class ReverseLinkedList { //Submit in leetcode from here :- public ListNode reverseList(ListNode head) { diff --git a/Java/Linked List/Reverse_Nodes_in_k-Group.java b/Java/LinkedList/ReverseNodesInKGroup.java similarity index 100% rename from Java/Linked List/Reverse_Nodes_in_k-Group.java rename to Java/LinkedList/ReverseNodesInKGroup.java diff --git a/Java/Matrix Chain_Multiplication.java b/Java/MatrixChainMultiplication.java similarity index 100% rename from Java/Matrix Chain_Multiplication.java rename to Java/MatrixChainMultiplication.java diff --git a/Java/Next Greater Element II b/Java/NextGreaterElement2 similarity index 100% rename from Java/Next Greater Element II rename to Java/NextGreaterElement2 diff --git a/Java/Pattern-Questions/AP1.java b/Java/PatternQuestions/AP1.java similarity index 100% rename from Java/Pattern-Questions/AP1.java rename to Java/PatternQuestions/AP1.java diff --git a/Java/Pattern-Questions/AP2.java b/Java/PatternQuestions/AP2.java similarity index 100% rename from Java/Pattern-Questions/AP2.java rename to Java/PatternQuestions/AP2.java diff --git a/Java/Pattern-Questions/ChristmasTree.java b/Java/PatternQuestions/ChristmasTree.java similarity index 100% rename from Java/Pattern-Questions/ChristmasTree.java rename to Java/PatternQuestions/ChristmasTree.java diff --git a/Java/Pattern-Questions/Question1.java b/Java/PatternQuestions/Question1.java similarity index 100% rename from Java/Pattern-Questions/Question1.java rename to Java/PatternQuestions/Question1.java diff --git a/Java/Pattern-Questions/Question10.java b/Java/PatternQuestions/Question10.java similarity index 100% rename from Java/Pattern-Questions/Question10.java rename to Java/PatternQuestions/Question10.java diff --git a/Java/Pattern-Questions/Question11.java b/Java/PatternQuestions/Question11.java similarity index 100% rename from Java/Pattern-Questions/Question11.java rename to Java/PatternQuestions/Question11.java diff --git a/Java/Pattern-Questions/Question12.java b/Java/PatternQuestions/Question12.java similarity index 100% rename from Java/Pattern-Questions/Question12.java rename to Java/PatternQuestions/Question12.java diff --git a/Java/Pattern-Questions/Question13.java b/Java/PatternQuestions/Question13.java similarity index 100% rename from Java/Pattern-Questions/Question13.java rename to Java/PatternQuestions/Question13.java diff --git a/Java/Pattern-Questions/Question14.java b/Java/PatternQuestions/Question14.java similarity index 100% rename from Java/Pattern-Questions/Question14.java rename to Java/PatternQuestions/Question14.java diff --git a/Java/Pattern-Questions/Question2.java b/Java/PatternQuestions/Question2.java similarity index 100% rename from Java/Pattern-Questions/Question2.java rename to Java/PatternQuestions/Question2.java diff --git a/Java/Pattern-Questions/Question3.java b/Java/PatternQuestions/Question3.java similarity index 100% rename from Java/Pattern-Questions/Question3.java rename to Java/PatternQuestions/Question3.java diff --git a/Java/Pattern-Questions/Question4.java b/Java/PatternQuestions/Question4.java similarity index 100% rename from Java/Pattern-Questions/Question4.java rename to Java/PatternQuestions/Question4.java diff --git a/Java/Pattern-Questions/Question5.java b/Java/PatternQuestions/Question5.java similarity index 100% rename from Java/Pattern-Questions/Question5.java rename to Java/PatternQuestions/Question5.java diff --git a/Java/Pattern-Questions/Question6.java b/Java/PatternQuestions/Question6.java similarity index 100% rename from Java/Pattern-Questions/Question6.java rename to Java/PatternQuestions/Question6.java diff --git a/Java/Pattern-Questions/Question7.java b/Java/PatternQuestions/Question7.java similarity index 100% rename from Java/Pattern-Questions/Question7.java rename to Java/PatternQuestions/Question7.java diff --git a/Java/Pattern-Questions/Question8.java b/Java/PatternQuestions/Question8.java similarity index 100% rename from Java/Pattern-Questions/Question8.java rename to Java/PatternQuestions/Question8.java diff --git a/Java/Pattern-Questions/Question9.java b/Java/PatternQuestions/Question9.java similarity index 100% rename from Java/Pattern-Questions/Question9.java rename to Java/PatternQuestions/Question9.java diff --git a/Java/Roman-to-Integer.java b/Java/RomanToInteger.java similarity index 100% rename from Java/Roman-to-Integer.java rename to Java/RomanToInteger.java diff --git a/Java/Searching-Algorithms/BFS/BST.java b/Java/SearchingAlgorithms/BFS/BST.java similarity index 99% rename from Java/Searching-Algorithms/BFS/BST.java rename to Java/SearchingAlgorithms/BFS/BST.java index 5ae644cd..87c374b2 100644 --- a/Java/Searching-Algorithms/BFS/BST.java +++ b/Java/SearchingAlgorithms/BFS/BST.java @@ -1,6 +1,6 @@ import java.util.LinkedList; import java.util.ArrayList; -public class BST{ +public class BST { Node root; BST(){ diff --git a/Java/Searching-Algorithms/BinarySearch.java b/Java/SearchingAlgorithms/BinarySearch.java similarity index 100% rename from Java/Searching-Algorithms/BinarySearch.java rename to Java/SearchingAlgorithms/BinarySearch.java diff --git a/Java/Searching-Algorithms/LinearSearch.java b/Java/SearchingAlgorithms/LinearSearch.java similarity index 100% rename from Java/Searching-Algorithms/LinearSearch.java rename to Java/SearchingAlgorithms/LinearSearch.java diff --git a/Java/Searching-Algorithms/oderAgonosticBinarySearch.java b/Java/SearchingAlgorithms/OderAgonosticBinarySearch.java similarity index 100% rename from Java/Searching-Algorithms/oderAgonosticBinarySearch.java rename to Java/SearchingAlgorithms/OderAgonosticBinarySearch.java diff --git a/Java/Searching-Algorithms/TernarySearch.java b/Java/SearchingAlgorithms/TernarySearch.java similarity index 100% rename from Java/Searching-Algorithms/TernarySearch.java rename to Java/SearchingAlgorithms/TernarySearch.java diff --git a/Java/Sorting Techniques/Bubble_Sort.java b/Java/SortingTechniques/BubbleSort.java similarity index 100% rename from Java/Sorting Techniques/Bubble_Sort.java rename to Java/SortingTechniques/BubbleSort.java diff --git a/Java/Sorting Techniques/CountSort.java b/Java/SortingTechniques/CountSort.java similarity index 100% rename from Java/Sorting Techniques/CountSort.java rename to Java/SortingTechniques/CountSort.java diff --git a/Java/Sorting Techniques/Cyclic_Sort.java b/Java/SortingTechniques/CyclicSort.java similarity index 93% rename from Java/Sorting Techniques/Cyclic_Sort.java rename to Java/SortingTechniques/CyclicSort.java index 0185fd85..aad7a6c2 100644 --- a/Java/Sorting Techniques/Cyclic_Sort.java +++ b/Java/SortingTechniques/CyclicSort.java @@ -1,4 +1,4 @@ -public class Cyclic_Sort{ +public class CyclicSort { public static void main(String[] args) { //test case int[] arr = {3, 1, 5, 4, 2}; diff --git a/Java/Sorting Techniques/Insertion_Sort b/Java/SortingTechniques/InsertionSort similarity index 100% rename from Java/Sorting Techniques/Insertion_Sort rename to Java/SortingTechniques/InsertionSort diff --git a/Java/Sorting Techniques/MergeSort_Array.java b/Java/SortingTechniques/MergeSortArray.java similarity index 98% rename from Java/Sorting Techniques/MergeSort_Array.java rename to Java/SortingTechniques/MergeSortArray.java index 4713d0ef..f60a5d54 100644 --- a/Java/Sorting Techniques/MergeSort_Array.java +++ b/Java/SortingTechniques/MergeSortArray.java @@ -1,7 +1,7 @@ /** * Program to Sort an Array using Merge Sort */ -public class MergeSort_Array { +public class MergeSortArray { public static void main(String[] args) { int arr[] = {3,5,0,2,9,1,10,0,5,5,9,8}; diff --git a/Java/Sorting Techniques/QuickSort_Array.java b/Java/SortingTechniques/QuickSortArray.java similarity index 97% rename from Java/Sorting Techniques/QuickSort_Array.java rename to Java/SortingTechniques/QuickSortArray.java index b7c28b5f..bd27190e 100644 --- a/Java/Sorting Techniques/QuickSort_Array.java +++ b/Java/SortingTechniques/QuickSortArray.java @@ -1,7 +1,7 @@ /* Program to Sort an Array Using the QuickSort Sorting Algorithm */ -public class QuickSort_Array { +public class QuickSortArray { public static void main(String[] args) { int arr[] = {1000,6,3,5,2,8,9,12,200}; int n = arr.length; diff --git a/Java/Sorting Techniques/RadixSort.java b/Java/SortingTechniques/RadixSort.java similarity index 100% rename from Java/Sorting Techniques/RadixSort.java rename to Java/SortingTechniques/RadixSort.java diff --git a/Java/Sorting Techniques/SelectionSort.java b/Java/SortingTechniques/SelectionSort.java similarity index 100% rename from Java/Sorting Techniques/SelectionSort.java rename to Java/SortingTechniques/SelectionSort.java diff --git a/Java/spiralmatrix.java b/Java/SpiralMatrix.java similarity index 100% rename from Java/spiralmatrix.java rename to Java/SpiralMatrix.java diff --git a/Java/Stack/Merge_Intervals.java b/Java/Stack/MergeIntervals.java similarity index 100% rename from Java/Stack/Merge_Intervals.java rename to Java/Stack/MergeIntervals.java diff --git a/Java/String/Caseconvert.java b/Java/String/CaseConvert.java similarity index 89% rename from Java/String/Caseconvert.java rename to Java/String/CaseConvert.java index 216cc03f..57bfd5fa 100644 --- a/Java/String/Caseconvert.java +++ b/Java/String/CaseConvert.java @@ -1,6 +1,6 @@ import java.util.Scanner; -public class Caseconvet { +public class CaseConvet { diff --git a/Java/String/Checkpermutation.java b/Java/String/CheckPermutation.java similarity index 92% rename from Java/String/Checkpermutation.java rename to Java/String/CheckPermutation.java index 66f520d6..5c8c0615 100644 --- a/Java/String/Checkpermutation.java +++ b/Java/String/CheckPermutation.java @@ -3,7 +3,7 @@ package String; import java.util.*; -public class Checkpermutation { +public class CheckPermutation { public static boolean checkPermutation(String str1 , String str2) { //To covert into character array. diff --git a/Java/String/compress.java b/Java/String/Compress.java similarity index 91% rename from Java/String/compress.java rename to Java/String/Compress.java index cd595d96..7d560780 100644 --- a/Java/String/compress.java +++ b/Java/String/Compress.java @@ -1,4 +1,4 @@ -public class compress { +public class Compress { public static String compressq(String str){ String newstr = ""; diff --git a/Java/String/Count_Words.java b/Java/String/CountWords.java similarity index 91% rename from Java/String/Count_Words.java rename to Java/String/CountWords.java index a85aeaf4..d639d8a2 100644 --- a/Java/String/Count_Words.java +++ b/Java/String/CountWords.java @@ -3,7 +3,7 @@ package String; import java.util.Scanner; -public class Count_Words { +public class CountWords { public static int countWords(String str ) { int count = 0; diff --git a/Java/String/Highest_Occuring_character.java b/Java/String/HighestOccuringCharacter.java similarity index 91% rename from Java/String/Highest_Occuring_character.java rename to Java/String/HighestOccuringCharacter.java index 4cf64245..10b9a496 100644 --- a/Java/String/Highest_Occuring_character.java +++ b/Java/String/HighestOccuringCharacter.java @@ -4,7 +4,7 @@ import java.util.Arrays; -public class Highest_Occuring_character { +public class HighestOccuringCharacter { public static char highest(String str) { // Convert into character array. diff --git a/Java/String/LargeSTR.java b/Java/String/LargeStr.java similarity index 87% rename from Java/String/LargeSTR.java rename to Java/String/LargeStr.java index 18eeaa7d..9435c8c2 100644 --- a/Java/String/LargeSTR.java +++ b/Java/String/LargeStr.java @@ -1,4 +1,4 @@ -public class LargeSTR { +public class LargeStr { public static void main(String[] args) { diff --git a/Java/String/Print_All_Substring.java b/Java/String/PrintAllSubstring.java similarity index 91% rename from Java/String/Print_All_Substring.java rename to Java/String/PrintAllSubstring.java index c0b769f3..c317cf43 100644 --- a/Java/String/Print_All_Substring.java +++ b/Java/String/PrintAllSubstring.java @@ -2,7 +2,7 @@ package String; import java.util.Scanner; -public class Print_All_Substring { +public class PrintAllSubstring { public static void substrings( String str) { for (int i = 0; i < str.length(); i++) { diff --git a/Java/String/Remove_Character.java b/Java/String/RemoveCharacter.java similarity index 92% rename from Java/String/Remove_Character.java rename to Java/String/RemoveCharacter.java index 1e2728d4..c5487824 100644 --- a/Java/String/Remove_Character.java +++ b/Java/String/RemoveCharacter.java @@ -4,7 +4,7 @@ package String; -public class Remove_Character { +public class RemoveCharacter { public static String remove(String str , char ch) { String ans = ""; for (int i = 0; i < str.length(); i++) { diff --git a/Java/String/remove_consecutivrs_Duplicaates.java b/Java/String/RemoveConsecutivrsDuplicaates.java similarity index 88% rename from Java/String/remove_consecutivrs_Duplicaates.java rename to Java/String/RemoveConsecutivrsDuplicaates.java index 45c5a4be..a05e6e6b 100644 --- a/Java/String/remove_consecutivrs_Duplicaates.java +++ b/Java/String/RemoveConsecutivrsDuplicaates.java @@ -2,7 +2,7 @@ //For a given string(str), remove all the consecutive duplicate characters. package String; -public class remove_consecutivrs_Duplicaates { +public class RemoveConsecutivrsDuplicaates { public static String remove(String str) { int n = str.length(); diff --git a/Java/String/Reverse_Each_Word.java b/Java/String/ReverseEachWord.java similarity index 94% rename from Java/String/Reverse_Each_Word.java rename to Java/String/ReverseEachWord.java index cd987582..d17f0be1 100644 --- a/Java/String/Reverse_Each_Word.java +++ b/Java/String/ReverseEachWord.java @@ -8,7 +8,7 @@ package String; import java.util.Scanner; -public class Reverse_Each_Word { +public class ReverseEachWord { public static String reversed(String str) { String ans = ""; int currentWordStart = 0; diff --git a/Java/String/Reverse_String_Wordwise.java b/Java/String/ReverseStringWordwise.java similarity index 93% rename from Java/String/Reverse_String_Wordwise.java rename to Java/String/ReverseStringWordwise.java index 830c1c7d..4fe8284b 100644 --- a/Java/String/Reverse_String_Wordwise.java +++ b/Java/String/ReverseStringWordwise.java @@ -2,7 +2,7 @@ package String; -public class Reverse_String_Wordwise { +public class ReverseStringWordwise { public static String reversewordwise(String str) { String ans = ""; diff --git a/Java/String/Strbuilder.java b/Java/String/StrBuilder.java similarity index 94% rename from Java/String/Strbuilder.java rename to Java/String/StrBuilder.java index 331d2061..a745ad6f 100644 --- a/Java/String/Strbuilder.java +++ b/Java/String/StrBuilder.java @@ -1,4 +1,4 @@ -public class Strbuilder { +public class StrBuilder { public static void main(String[] args) { diff --git a/Java/String/substring.java b/Java/String/SubString.java similarity index 85% rename from Java/String/substring.java rename to Java/String/SubString.java index 4aa43a18..ae1b86d0 100644 --- a/Java/String/substring.java +++ b/Java/String/SubString.java @@ -1,4 +1,4 @@ -public class substring { +public class SubString { public static void main(String[] args) { From 1935994e8c2fd1fb1a47c0a798b3ba9b895b497c Mon Sep 17 00:00:00 2001 From: rohansrivastava5491 <33935946+rohansrivastava5491@users.noreply.github.com> Date: Tue, 4 Oct 2022 07:34:56 +0530 Subject: [PATCH 061/448] Added radix_Sort.py --- Python/radix_sort.py | 56 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 Python/radix_sort.py diff --git a/Python/radix_sort.py b/Python/radix_sort.py new file mode 100644 index 00000000..3eb12539 --- /dev/null +++ b/Python/radix_sort.py @@ -0,0 +1,56 @@ +def countingSortForRadix(inputArray, placeValue): + # We can assume that the number of digits used to represent + # all numbers on the placeValue position is not grater than 10 + countArray = [0] * 10 + inputSize = len(inputArray) + + # placeElement is the value of the current place value + # of the current element, e.g. if the current element is + # 123, and the place value is 10, the placeElement is + # equal to 2 + for i in range(inputSize): + placeElement = (inputArray[i] // placeValue) % 10 + countArray[placeElement] += 1 + + for i in range(1, 10): + countArray[i] += countArray[i-1] + + # Reconstructing the output array + outputArray = [0] * inputSize + i = inputSize - 1 + while i >= 0: + currentEl = inputArray[i] + placeElement = (inputArray[i] // placeValue) % 10 + countArray[placeElement] -= 1 + newPosition = countArray[placeElement] + outputArray[newPosition] = currentEl + i -= 1 + + return outputArray + +def radixSort(inputArray): + # Step 1 -> Find the maximum element in the input array + maxEl = max(inputArray) + + # Step 2 -> Find the number of digits in the `max` element + D = 1 + while maxEl > 0: + maxEl /= 10 + D += 1 + + # Step 3 -> Initialize the place value to the least significant place + placeVal = 1 + + # Step 4 + outputArray = inputArray + while D > 0: + outputArray = countingSortForRadix(outputArray, placeVal) + placeVal *= 10 + D -= 1 + + return outputArray + +input = [2,20,61,997,1,619] +print(input) +sorted = radixSort(input) +print(sorted) From 44d9785ccd9ad7cb94ce46e5362248dd27153fff Mon Sep 17 00:00:00 2001 From: DarkSpy25 Date: Tue, 4 Oct 2022 09:39:56 +0530 Subject: [PATCH 062/448] added a condition for n<3 as a solution does not exist --- CPP/recursion/N_Queens/N_Queens.cpp | 64 +++++++++++++++++++--------- CPP/recursion/N_Queens/N_Queens.exe | Bin 0 -> 98925 bytes 2 files changed, 43 insertions(+), 21 deletions(-) create mode 100644 CPP/recursion/N_Queens/N_Queens.exe diff --git a/CPP/recursion/N_Queens/N_Queens.cpp b/CPP/recursion/N_Queens/N_Queens.cpp index ca9aeaec..0d1cad47 100644 --- a/CPP/recursion/N_Queens/N_Queens.cpp +++ b/CPP/recursion/N_Queens/N_Queens.cpp @@ -2,13 +2,18 @@ #include // Function to print the bord -void printBoard(std::vector>& board, int n) { - for (int i = 0; i < n; ++i) { - for (int j = 0; j < n; ++j) { - if (board[i][j] == 1) { +void printBoard(std::vector> &board, int n) +{ + for (int i = 0; i < n; ++i) + { + for (int j = 0; j < n; ++j) + { + if (board[i][j] == 1) + { std::cout << 'Q' << ' '; } - else { + else + { std::cout << '_' << ' '; } } @@ -17,11 +22,14 @@ void printBoard(std::vector>& board, int n) { } // Function for checking valid squares. -bool canBePlaced(std::vector>& board, int i, int j, int n) { +bool canBePlaced(std::vector> &board, int i, int j, int n) +{ // Vertical check. - for (int v = 0; v < i; ++v) { - if (board[v][j] == 1) { + for (int v = 0; v < i; ++v) + { + if (board[v][j] == 1) + { return false; } } @@ -30,8 +38,10 @@ bool canBePlaced(std::vector>& board, int i, int j, int n) { int u = i, v = j; // Upper left diagonal check. - while (i >= 0 && j >= 0) { - if(board[i][j] == 1) { + while (i >= 0 && j >= 0) + { + if (board[i][j] == 1) + { return false; } --i; @@ -39,8 +49,10 @@ bool canBePlaced(std::vector>& board, int i, int j, int n) { } // Upper right diagonal. - while (u >= 0 && v < n) { - if (board[u][v] == 1) { + while (u >= 0 && v < n) + { + if (board[u][v] == 1) + { return false; } --u; @@ -52,11 +64,13 @@ bool canBePlaced(std::vector>& board, int i, int j, int n) { } // Main recursive function. -bool N_Queens(std::vector>& board, int n, int row) { +bool N_Queens(std::vector> &board, int n, int row) +{ // --> base case // When row becomes equal to n // means all queens have been placed in the right manner. - if (row == n) { + if (row == n) + { // Print the first possible way. printBoard(board, n); // Endl for printing the next possible board @@ -68,20 +82,24 @@ bool N_Queens(std::vector>& board, int n, int row) { } // --> recursive case - for (int column = 0; column < n; ++column) { + for (int column = 0; column < n; ++column) + { // Check if the queen can be placed at the ith row and jth column. - if (canBePlaced(board, row, column, n)) { + if (canBePlaced(board, row, column, n)) + { // Mark that place as 1. board[row][column] = 1; // Check for further positions. bool remaining_positions = N_Queens(board, n, row + 1); - if (remaining_positions) { + if (remaining_positions) + { // If queens can be placed in the remaining positions // it means the placing of queens can proceed further. // return true return true; } - else { + else + { // If queens cannot be placed further in the right way // backtrack to the previous position. board[row][column] = 0; @@ -92,18 +110,22 @@ bool N_Queens(std::vector>& board, int n, int row) { return false; } -int main() { +int main() +{ int n = 0; // Input Size of the chessboard // No of queens will be the same as size n. std::cin >> n; - + if (n <= 3) + { + std::cout << "No solution exists for n = " << n << std::endl; + } // 2D vector for storing board having size max size of nXn. // First create a column vector of size n. std::vector column(n); // Create Row vectors and fill rows with columns. - std::vector> board(n,column); + std::vector> board(n, column); // Function call for // Arguments passed are : 2D vector board diff --git a/CPP/recursion/N_Queens/N_Queens.exe b/CPP/recursion/N_Queens/N_Queens.exe new file mode 100644 index 0000000000000000000000000000000000000000..7bf26991e3f69707d7c51d4799ae1e97793f40cf GIT binary patch literal 98925 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 literal 0 HcmV?d00001 From a1a402306c688fc22d2e062491ea39d44688b843 Mon Sep 17 00:00:00 2001 From: Dhruv Verma <75657801+Dhruvverma2020@users.noreply.github.com> Date: Tue, 4 Oct 2022 09:58:32 +0530 Subject: [PATCH 063/448] Create Maximum width of tree --- Trees/Maximum width of tree | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 Trees/Maximum width of tree diff --git a/Trees/Maximum width of tree b/Trees/Maximum width of tree new file mode 100644 index 00000000..125b92bc --- /dev/null +++ b/Trees/Maximum width of tree @@ -0,0 +1,35 @@ +class Solution { + public: + // Function to get the maximum width of a binary tree. + int getMaxWidth(Node* root) + { + if(root==NULL) + { + return 0; + } + queueq; + q.push(root); + int res=0; + while(q.empty()==false) + { + int curr=q.size(); + res=max(curr,res); + for(int i=0;ileft!=NULL) + { + q.push(curr->left); + } + if(curr->right!=NULL) + { + q.push(curr->right); + } + } + } + return res; + // Your code here + } +}; From 948ee1e637ef55df46e42d0cd9770fd72f58a7ba Mon Sep 17 00:00:00 2001 From: Dhruv Verma <75657801+Dhruvverma2020@users.noreply.github.com> Date: Tue, 4 Oct 2022 10:01:00 +0530 Subject: [PATCH 064/448] Create average of each level --- Trees/average of each level | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 Trees/average of each level diff --git a/Trees/average of each level b/Trees/average of each level new file mode 100644 index 00000000..5f97848b --- /dev/null +++ b/Trees/average of each level @@ -0,0 +1,31 @@ +vector averageOfLevels(TreeNode* root) + { + vectorv; + double sum=0; + double count=0; + queueq; + q.push(root); + while(q.empty()==false) + { + int size=q.size(); + count=size; + sum=0; + for(int i=0;ival; + q.pop(); + if(curr->left!=NULL) + { + q.push(curr->left); + } + if(curr->right!=NULL) + { + q.push(curr->right); + } + } + v.push_back(sum/count); + } + return v; + } +}; From 612c7b0f1d8dc672d3b6f51dc6fbc02fe270c655 Mon Sep 17 00:00:00 2001 From: Dhruv Verma <75657801+Dhruvverma2020@users.noreply.github.com> Date: Tue, 4 Oct 2022 10:02:38 +0530 Subject: [PATCH 065/448] Create children sum property --- Trees/children sum property | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 Trees/children sum property diff --git a/Trees/children sum property b/Trees/children sum property new file mode 100644 index 00000000..46527ad9 --- /dev/null +++ b/Trees/children sum property @@ -0,0 +1,21 @@ +bool iscsp(node*root) +{ + if(root==NULL) + { + return true; + } + if(root->left==NULL||root->right==NULL) + { + return true; + } + int sum=0; + if(root->left!=NULL) + { + sum+=root->left->key; + } + if(root->right!=NULL) + { + sum+=root->right->key; + } + return (root->key==sum&&iscsp(root->left)&&iscsp(root->right)); +} From 0612945e4af328993f8adaa6685ca36bddfabdfe Mon Sep 17 00:00:00 2001 From: DarkSpy25 <70094695+DarkSpy25@users.noreply.github.com> Date: Tue, 4 Oct 2022 11:02:11 +0530 Subject: [PATCH 066/448] Add files via upload --- knapsack.class | Bin 0 -> 1440 bytes knapsack.java | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 knapsack.class create mode 100644 knapsack.java diff --git a/knapsack.class b/knapsack.class new file mode 100644 index 0000000000000000000000000000000000000000..774891ea7a39a25a4e28277c1b17f4cb30f827f0 GIT binary patch literal 1440 zcmaJ>OK%%h7(F-hxc1nM-Ii$@l1W@h!Fez)DVP$s;Ss6A5aWWYAj_NF*rR6Z@r>me zM~&D)Hmukn1S|?tk+NX}5-BQB2_ZJ!uw}{bK$P%Zk7-gR!t%`h=6sKP&UYUV{<(J_ zz!kh=U<3+>nuZ3QA$wD7iGnBm8-?n|O{W<#=$BpJjg}dd{OlS>f{aF^Y`{Q@Bb~+x zj53TKmMp-gEMa_6RjTxM080(0(vl94C5xwU|n`DKN@S~9UQR$fCph3jX^=}OLJuAuO zWyDec>>5qD60{tK%&O}Eb;nw*EuHqu+VtRl@2#~SYkzZUd@f1 zQUaG4CM)8W+v#_5Tf*x*IoHpWD=RX3-&D;40H6BZfS!O&(TPsY#m7?2>H`g)pbi< z{|$U(NmGitshjE@yss3w$*nu^O#V3%rv3#o{2np~;w;@Z5at1a8)U*qf$mV??N zzfJxNN5F+a!lR%#zh$rgfMj)tv)%nqc6560m}*hCXm0&BUN!k`l!le;N2&Igu)aga z)c0V@qC}ZfIlEQlyZaAfWOx4;idPpc`y0|YGU&pakVj3SOGCvNH7!SdnFB|W`tTZc zV+|>MNcczO{}`kA6d8O)*T?rbiJvL=SGq!ehlxKZd!8yyA@vYh4$l5Yl4VlU3x7eQ z|3kXW*rfzjT)=a2xA6hZrBlwk{3oNXWQ}TF<<+{DO;+oAHdS36z&fD`iISmf)k>Bx z&)+YqKVqVO7uJ$SqQ|v`dCOGyFm(@40eg7nV3nsx3ut4EVUlLHP#}gEF^$Wl^c`Av d1vdFd2){sMf|xx|&r5ijz6`RKC~_I&{{orcKRo~d literal 0 HcmV?d00001 diff --git a/knapsack.java b/knapsack.java new file mode 100644 index 00000000..6dc157ee --- /dev/null +++ b/knapsack.java @@ -0,0 +1,37 @@ +//Ankita Patil + +class knapsack { + int knap(int[] wt, int[] val, int W, int n) { + int[][] M = new int[n + 1][W + 1]; + for (int i = 0; i <= n; i++) { + for (int w = 0; w <= W; w++) { + if (w == 0 || i == 0) + M[i][w] = 0; + else if (wt[i - 1] > w) + M[i][w] = M[i - 1][w]; + else + M[i][w] = Math.max(M[i - 1][w], val[i - 1] + M[i - 1][w - wt[i - 1]]); + } + } + int i = n, k = W; + while (i > 0 && k > 0) { + if (M[i][k] != M[i - 1][k]) { + System.out.println(i); + i = i - 1; + k = k - wt[i]; + } else + i = i - 1; + } + return M[n][W]; + } + + public static void main(String[] args) { + int[] val = new int[] { 10, 4, 9, 11 }; + int[] wt = new int[] { 3, 5, 6, 2 }; + int W = 7; + int n = val.length; + knapsack ob = new knapsack(); + System.out.println("Maximum value in Knapsack: " + ob.knap(wt, val, W, n)); + } + +} \ No newline at end of file From 7ae8f4e9dcbf93a9269863f984dab7c745cbf998 Mon Sep 17 00:00:00 2001 From: Yash Bansal <73324896+Yash9460@users.noreply.github.com> Date: Tue, 4 Oct 2022 11:13:07 +0530 Subject: [PATCH 067/448] Create Greedy_algorithm.cpp --- CPP/Greedy_algorithm.cpp | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 CPP/Greedy_algorithm.cpp diff --git a/CPP/Greedy_algorithm.cpp b/CPP/Greedy_algorithm.cpp new file mode 100644 index 00000000..c79c76a7 --- /dev/null +++ b/CPP/Greedy_algorithm.cpp @@ -0,0 +1,35 @@ +#include +using namespace std; + +// All denominations of Indian Currency +int deno[] = { 1, 2, 5, 10, 20, 50, 100, 500, 1000 }; +int n = sizeof(deno) / sizeof(deno[0]); + +// Driver program +void findMin(int V) +{ + // Initialize result + vector ans; + + // Traverse through all denomination + for (int i = n - 1; i >= 0; i--) { + // Find denominations + while (V >= deno[i]) { + V -= deno[i]; + ans.push_back(deno[i]); + } + } + + // Print result + for (int i = 0; i < ans.size(); i++) + cout << ans[i] << " "; +} + +// Driver program +int main() +{ + int n = 93; + cout << "Following is minimal number of change for " << n << " is "; + findMin(n); + return 0; +} From 2a022ba9ceee80bcc95217f77238804448e04681 Mon Sep 17 00:00:00 2001 From: Gaurisha21 <68791455+Gaurisha21@users.noreply.github.com> Date: Tue, 4 Oct 2022 13:08:44 +0530 Subject: [PATCH 068/448] Added LeetCode 23: Merge K Sorted Lists --- .../SOME LEET CODE QUESTIONS/LeetCode 23.cpp | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 CPP/LINKED LIST/SOME LEET CODE QUESTIONS/LeetCode 23.cpp diff --git a/CPP/LINKED LIST/SOME LEET CODE QUESTIONS/LeetCode 23.cpp b/CPP/LINKED LIST/SOME LEET CODE QUESTIONS/LeetCode 23.cpp new file mode 100644 index 00000000..43cdfe0f --- /dev/null +++ b/CPP/LINKED LIST/SOME LEET CODE QUESTIONS/LeetCode 23.cpp @@ -0,0 +1,45 @@ +/** + * Definition for singly-linked list. + * struct ListNode { + * int val; + * ListNode *next; + * ListNode() : val(0), next(nullptr) {} + * ListNode(int x) : val(x), next(nullptr) {} + * ListNode(int x, ListNode *next) : val(x), next(next) {} + * }; + */ +class Solution { +public: + ListNode *merge(ListNode *l1, ListNode *l2) + { + if(l1==NULL || l2==NULL) return l1==NULL ? l2 : l1; + ListNode *p=new ListNode(-1), *d=p, *c1=l1, *c2=l2; + while(c1!=NULL and c2!=NULL) + { + if(c1->val<=c2->val) + { + p->next=c1; + c1=c1->next; + } + else + { + p->next=c2; + c2=c2->next; + } + p=p->next; + } + p->next = c1!=NULL ? c1 : c2; + return d->next; + } + ListNode *mergeK(vector lists, int s, int e) + { + if(s==e) return lists[s]; + int m=s+((e-s)/2); + return merge(mergeK(lists,s,m),mergeK(lists,m+1,e)); + } + ListNode* mergeKLists(vector& lists) { + if(lists.size()==0) return NULL; + int n=lists.size(); + return mergeK(lists,0,n-1); + } +}; \ No newline at end of file From ebb65cbfd5938069b1aab41282ac8c07c0ca4bcf Mon Sep 17 00:00:00 2001 From: Sparsh kishore kumar <47140660+sparsh308@users.noreply.github.com> Date: Tue, 4 Oct 2022 13:45:44 +0530 Subject: [PATCH 069/448] Optimal Partition of String Optimal Partition of String --- Java/String/Optimal Partition of String | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 Java/String/Optimal Partition of String diff --git a/Java/String/Optimal Partition of String b/Java/String/Optimal Partition of String new file mode 100644 index 00000000..b11b58ec --- /dev/null +++ b/Java/String/Optimal Partition of String @@ -0,0 +1,19 @@ +class Solution { + public int partitionString(String s) { + int ans = 1; + HashSet st = new HashSet<>(); + for(int i=0;i Date: Tue, 4 Oct 2022 14:16:23 +0530 Subject: [PATCH 070/448] Added LeetDoe 46: Permutations --- .../SOME LEET CODE QUESTIONS/LeetCode 46.cpp | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 CPP/LINKED LIST/SOME LEET CODE QUESTIONS/LeetCode 46.cpp diff --git a/CPP/LINKED LIST/SOME LEET CODE QUESTIONS/LeetCode 46.cpp b/CPP/LINKED LIST/SOME LEET CODE QUESTIONS/LeetCode 46.cpp new file mode 100644 index 00000000..e4994289 --- /dev/null +++ b/CPP/LINKED LIST/SOME LEET CODE QUESTIONS/LeetCode 46.cpp @@ -0,0 +1,31 @@ +class Solution { +public: + int perm(vector nums, vector> &ans, vector &smallAns) + { + if(smallAns.size()==nums.size()) + { + ans.push_back(smallAns); + return 1; + } + int count=0; + for(int i=0; i tem = smallAns; + tem.push_back(temp); + count+=perm(nums,ans,tem); + nums[i]=temp; + } + } + return count; + } + vector> permute(vector& nums) { + vector> ans; + vector smallAns; + int s=perm(nums,ans,smallAns); + return ans; + } +}; \ No newline at end of file From 33d2869042004c6aa9efbd37c246a2fb1c59ad46 Mon Sep 17 00:00:00 2001 From: Gaurisha21 <68791455+Gaurisha21@users.noreply.github.com> Date: Tue, 4 Oct 2022 14:45:39 +0530 Subject: [PATCH 071/448] Added LeetCode 46: Permutation --- CPP/recursion/LeetCode 46. Permutations.cpp | 31 +++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 CPP/recursion/LeetCode 46. Permutations.cpp diff --git a/CPP/recursion/LeetCode 46. Permutations.cpp b/CPP/recursion/LeetCode 46. Permutations.cpp new file mode 100644 index 00000000..e4994289 --- /dev/null +++ b/CPP/recursion/LeetCode 46. Permutations.cpp @@ -0,0 +1,31 @@ +class Solution { +public: + int perm(vector nums, vector> &ans, vector &smallAns) + { + if(smallAns.size()==nums.size()) + { + ans.push_back(smallAns); + return 1; + } + int count=0; + for(int i=0; i tem = smallAns; + tem.push_back(temp); + count+=perm(nums,ans,tem); + nums[i]=temp; + } + } + return count; + } + vector> permute(vector& nums) { + vector> ans; + vector smallAns; + int s=perm(nums,ans,smallAns); + return ans; + } +}; \ No newline at end of file From 1e2c8d8548a6ffea5c173cdb21146baf8f9098ad Mon Sep 17 00:00:00 2001 From: divyaa1511 <102688183+divyaa1511@users.noreply.github.com> Date: Tue, 4 Oct 2022 14:52:14 +0530 Subject: [PATCH 072/448] recursion problems recursion problems --- Python/5 recusrion problems.py | 71 ++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 Python/5 recusrion problems.py diff --git a/Python/5 recusrion problems.py b/Python/5 recusrion problems.py new file mode 100644 index 00000000..bc9166f0 --- /dev/null +++ b/Python/5 recusrion problems.py @@ -0,0 +1,71 @@ +# 1..TO FIND FACTORIAL OF A NUMBER USING RECURSION + +def factorial(n): + assert n>=0 and int(n)==n , "the number must be positive integer only" + if n==0 or n==1: + return 1 + else: + return n*factorial(n-1) + +print(factorial(4)) + + + + + +# 2..TO PRINT FIBONACCI SERIES + +def fibonacci(n): + assert n>=0 and int(n)==n , "only positive integers" + if n==0 or n==1: + return n + else: + return fibonacci(n-1) + fibonacci(n-2) + +print(fibonacci(8)) + + + + + +# 3.. TO FIND IF THE GIVEN STRING IS PALINDROME OR NOT + +def isPalindrome(strng): + if len(strng)==0: + return True + if strng[0]==strng[-1]: + return isPalindrome(strng[1:-1]) + + else: + return False +print((isPalindrome('naman'))) + + + + +# 4..TO FIND THE SUM OF ALL DIGITS IN THE GIVEN NUMBER + +def sum(n): + assert n>=0 and int(n)==n , "only positive integers" + if n==0: + return 0 + else: + return int(n%10) + sum(int(n//10)) + +print(sum(11)) + + + + +# 5..TO FIND THE POWER OF A NUMBER + +def power(base,exp): + assert exp>=0 and int(exp)==exp , "power can only be positive integers" + if(exp==0): + return 1 + if(exp==1): + return base + else: + return base*power(base,exp-1) + +print(power(2,5)) From 2e68c4d71da15976651682d9ea4dfdb5c888de3a Mon Sep 17 00:00:00 2001 From: Enigma-52 Date: Tue, 4 Oct 2022 15:01:20 +0530 Subject: [PATCH 073/448] Addition to Linked List Leetcode Problems Added Design A Text Editor Problem. Leetcode-2296 --- .../Design_a_Text_Editor.cpp | 82 +++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 CPP/LINKED LIST/SOME LEET CODE QUESTIONS/Design_a_Text_Editor.cpp diff --git a/CPP/LINKED LIST/SOME LEET CODE QUESTIONS/Design_a_Text_Editor.cpp b/CPP/LINKED LIST/SOME LEET CODE QUESTIONS/Design_a_Text_Editor.cpp new file mode 100644 index 00000000..626faae8 --- /dev/null +++ b/CPP/LINKED LIST/SOME LEET CODE QUESTIONS/Design_a_Text_Editor.cpp @@ -0,0 +1,82 @@ +#include +using namespace std; +class TextEditor +{ +private: + list a; + // If delete, will delete position cur - 1, not position cur. + list::iterator cur; + +public: + TextEditor() + { + a.clear(); + // For convenience. + a.push_back('A'); + cur = a.end(); + } + + void addText(string text) + { + a.insert(cur, text.begin(), text.end()); + } + + int deleteText(int k) + { + int cnt = 0; + // Move to the position that will be deleted. + cur--; + while (k--) + { + if (cur == a.begin()) + break; + cnt++; + a.erase(cur--); + } + // Adjust the position of the cursor. + cur++; + return cnt; + } + + // Left 10 chars. + string solve() + { + auto tt = cur; + tt--; + string ret; + int k = 10; + while (k--) + { + if (tt == a.begin()) + break; + ret += (*(tt--)); + } + reverse(ret.begin(), ret.end()); + return ret; + } + + string cursorLeft(int k) + { + while (k--) + { + auto nxt = cur; + nxt--; + // Never move the cursor to the first position. + if (nxt == a.begin()) + break; + cur = nxt; + } + return solve(); + } + + string cursorRight(int k) + { + while (k--) + { + if (cur == a.end()) + break; + cur++; + } + return solve(); + } +}; \ No newline at end of file From 65b7c1070b9ad1f7dd0ab8a1a52644971e40572d Mon Sep 17 00:00:00 2001 From: Aishal Gupta Date: Tue, 4 Oct 2022 15:02:57 +0530 Subject: [PATCH 074/448] Create Heap Sort in C++ --- CPP/sorting/Heap Sort in C++ | 77 ++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 CPP/sorting/Heap Sort in C++ diff --git a/CPP/sorting/Heap Sort in C++ b/CPP/sorting/Heap Sort in C++ new file mode 100644 index 00000000..37b86c8c --- /dev/null +++ b/CPP/sorting/Heap Sort in C++ @@ -0,0 +1,77 @@ +#include +using namespace std; + +// To heapify a subtree rooted with node i +// which is an index in arr[]. +// n is size of heap +void heapify(int arr[], int N, int i) +{ + + // Initialize largest as root + int largest = i; + + // left = 2*i + 1 + int l = 2 * i + 1; + + // right = 2*i + 2 + int r = 2 * i + 2; + + // If left child is larger than root + if (l < N && arr[l] > arr[largest]) + largest = l; + + // If right child is larger than largest + // so far + if (r < N && arr[r] > arr[largest]) + largest = r; + + // If largest is not root + if (largest != i) { + swap(arr[i], arr[largest]); + + // Recursively heapify the affected + // sub-tree + heapify(arr, N, largest); + } +} + +// Main function to do heap sort +void heapSort(int arr[], int N) +{ + + // Build heap (rearrange array) + for (int i = N / 2 - 1; i >= 0; i--) + heapify(arr, N, i); + + // One by one extract an element + // from heap + for (int i = N - 1; i > 0; i--) { + + // Move current root to end + swap(arr[0], arr[i]); + + // call max heapify on the reduced heap + heapify(arr, i, 0); + } +} + +// A utility function to print array of size n +void printArray(int arr[], int N) +{ + for (int i = 0; i < N; ++i) + cout << arr[i] << " "; + cout << "\n"; +} + +// Driver's code +int main() +{ + int arr[] = { 12, 11, 13, 5, 6, 7 }; + int N = sizeof(arr) / sizeof(arr[0]); + + // Function call + heapSort(arr, N); + + cout << "Sorted array is \n"; + printArray(arr, N); +} From 8ba6ef4869b4721b4ea815c0350703e34c150507 Mon Sep 17 00:00:00 2001 From: Aishal Gupta Date: Tue, 4 Oct 2022 15:04:44 +0530 Subject: [PATCH 075/448] Codeforces solution of problem 49A --- 49a.cpp | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 49a.cpp diff --git a/49a.cpp b/49a.cpp new file mode 100644 index 00000000..840d794c --- /dev/null +++ b/49a.cpp @@ -0,0 +1,28 @@ +#include +using namespace std; +int main(){ + +string s; +getline(cin,s); + +int l=s.length(); +int f=0; +for (int i=l;i=0;i--){ +if (s[i]!=' ' || s[i]!='?'){ + if (s[i]=='A' || s[i]=='E' || s[i]=='I' || s[i]=='O' || s[i]=='U' || s[i]=='Y' || s[i]=='a' || s[i]=='e' || s[i]=='i' || s[i]=='o' || s[i]=='u' || s[i]=='y' ){ + f=1; + break; + + } + else + f=0;}} + + if (f==1){ + cout<<"YES"< Date: Tue, 4 Oct 2022 15:10:03 +0530 Subject: [PATCH 076/448] added same tree q. no. 100 --- Python/same_tree.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 Python/same_tree.py diff --git a/Python/same_tree.py b/Python/same_tree.py new file mode 100644 index 00000000..037d760f --- /dev/null +++ b/Python/same_tree.py @@ -0,0 +1,23 @@ +# LEETCODE PROBLEM NO. 100 - SAME TREE + +# In this problem, we will check if given two trees are same or not. Two binary trees are considered the same if they are structurally identical, and the nodes have the same value. + +# we will use check if the nodes of given trees are equal or not. if they are, we will further check it's left and right child recursively for the same. if any node is different then we will return false, else True + +# ANSWER STARTS FROM HERE = + +# Definition for a binary tree node. +# class TreeNode: +# def __init__(self, val=0, left=None, right=None): +# self.val = val +# self.left = left +# self.right = right +class Solution: + def isSameTree(self, p: Optional[TreeNode], q: Optional[TreeNode]) -> bool: + if not p and not q: #return true if both nodes are Null + return True + if not p or not q or p.val != q.val: #return false if any of the root is Null or value of both roots is not equal + return False + + return self.isSameTree(p.left , q.left) and self.isSameTree(p.right, q.right) + From e81620493202ea362013f43493b1510ebb8d198e Mon Sep 17 00:00:00 2001 From: Aishal Gupta Date: Tue, 4 Oct 2022 15:13:18 +0530 Subject: [PATCH 077/448] Create Sets in c++ STL --- CPP/stl/Sets in c++ STL | 74 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 CPP/stl/Sets in c++ STL diff --git a/CPP/stl/Sets in c++ STL b/CPP/stl/Sets in c++ STL new file mode 100644 index 00000000..79615eae --- /dev/null +++ b/CPP/stl/Sets in c++ STL @@ -0,0 +1,74 @@ +// CPP program to demonstrate various functions of +// Set in C++ STL +#include +#include +#include +using namespace std; + +int main() +{ + // empty set container + set > s1; + + // insert elements in random order + s1.insert(40); + s1.insert(30); + s1.insert(60); + s1.insert(20); + s1.insert(50); + + // only one 50 will be added to the set + s1.insert(50); + s1.insert(10); + + // printing set s1 + set >::iterator itr; + cout << "\nThe set s1 is : \n"; + for (itr = s1.begin(); itr != s1.end(); itr++) { + cout << *itr << " "; + } + cout << endl; + + // assigning the elements from s1 to s2 + set s2(s1.begin(), s1.end()); + + // print all elements of the set s2 + cout << "\nThe set s2 after assign from s1 is : \n"; + for (itr = s2.begin(); itr != s2.end(); itr++) { + cout << *itr << " "; + } + cout << endl; + + // remove all elements up to 30 in s2 + cout << "\ns2 after removal of elements less than 30 " + ":\n"; + s2.erase(s2.begin(), s2.find(30)); + for (itr = s2.begin(); itr != s2.end(); itr++) { + cout << *itr << " "; + } + + // remove element with value 50 in s2 + int num; + num = s2.erase(50); + cout << "\ns2.erase(50) : "; + cout << num << " removed\n"; + for (itr = s2.begin(); itr != s2.end(); itr++) { + cout << *itr << " "; + } + + cout << endl; + + // lower bound and upper bound for set s1 + cout << "s1.lower_bound(40) : \n" + << *s1.lower_bound(40) << endl; + cout << "s1.upper_bound(40) : \n" + << *s1.upper_bound(40) << endl; + + // lower bound and upper bound for set s2 + cout << "s2.lower_bound(40) :\n" + << *s2.lower_bound(40) << endl; + cout << "s2.upper_bound(40) : \n" + << *s2.upper_bound(40) << endl; + + return 0; +} From ff3582e86c8b78e855c7d7c5d3609b30db23485a Mon Sep 17 00:00:00 2001 From: Enigma-52 Date: Tue, 4 Oct 2022 15:16:54 +0530 Subject: [PATCH 078/448] Added Interpolation Search Algorithm to Searching Added the Interpolation Search Algorithm used for sorted Arrays to Searching. --- CPP/searching/interpolation_search.cpp | 85 ++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 CPP/searching/interpolation_search.cpp diff --git a/CPP/searching/interpolation_search.cpp b/CPP/searching/interpolation_search.cpp new file mode 100644 index 00000000..b8d81288 --- /dev/null +++ b/CPP/searching/interpolation_search.cpp @@ -0,0 +1,85 @@ + +// Let's assume that the elements of the array are linearly distributed. + +// General equation of line : y = m*x + c. +// y is the value in the array and x is its index. + +// Now putting value of lo,hi and x in the equation +// arr[hi] = m*hi+c ----(1) +// arr[lo] = m*lo+c ----(2) +// x = m*pos + c ----(3) + +// m = (arr[hi] - arr[lo] )/ (hi - lo) + +// subtracting eqxn (2) from (3) +// x - arr[lo] = m * (pos - lo) +// lo + (x - arr[lo])/m = pos +// pos = lo + (x - arr[lo]) *(hi - lo)/(arr[hi] - arr[lo]) + +/*************************************************/ + +// Algorithm +// The rest of the Interpolation algorithm is the same except for the above partition logic. +// Step1: In a loop, calculate the value of “pos” using the probe position formula. +// Step2: If it is a match, return the index of the item, and exit. +// Step3: If the item is less than arr[pos], calculate the probe position of the left sub-array. Otherwise, calculate the same in the right sub-array. +// Step4: Repeat until a match is found or the sub-array reduces to zero. + +// Below is the implementation of the algorithm. + +/*************************************************/ + +#include +using namespace std; + +int interpolationSearch(int arr[], int n, int x) +{ + // Find indexes of two corners + int lo = 0, hi = (n - 1); + + // Since array is sorted, an element present + // in array must be in range defined by corner + while (lo <= hi && x >= arr[lo] && x <= arr[hi]) + { + if (lo == hi) + { + if (arr[lo] == x) + return lo; + return -1; + } + // Probing the position with keeping + // uniform distribution in mind. + int pos = lo + (((double)(hi - lo) / (arr[hi] - arr[lo])) * (x - arr[lo])); + + // Condition of target found + if (arr[pos] == x) + return pos; + + // If x is larger, x is in upper part + if (arr[pos] < x) + lo = pos + 1; + + // If x is smaller, x is in the lower part + else + hi = pos - 1; + } + return -1; +} + +// Driver Code +int main() +{ + // Array of items on which search will + // be conducted. + int arr[] = {10, 12, 13, 16, 18, 19, 20, 21, 22, 23, 24, 33, 35, 42, 47}; + int n = sizeof(arr) / sizeof(arr[0]); + int x = 18; // Element to be searched + int index = interpolationSearch(arr, n, x); + + // If element was found + if (index != -1) + cout << "Element found at index " << index; + else + cout << "Element not found."; + return 0; +} \ No newline at end of file From e8e187c85fc4480498d2363dde9437d8bdb6e11c Mon Sep 17 00:00:00 2001 From: Enigma-52 Date: Tue, 4 Oct 2022 15:24:48 +0530 Subject: [PATCH 079/448] Delete Design_a_Text_Editor.cpp --- .../Design_a_Text_Editor.cpp | 82 ------------------- 1 file changed, 82 deletions(-) delete mode 100644 CPP/LINKED LIST/SOME LEET CODE QUESTIONS/Design_a_Text_Editor.cpp diff --git a/CPP/LINKED LIST/SOME LEET CODE QUESTIONS/Design_a_Text_Editor.cpp b/CPP/LINKED LIST/SOME LEET CODE QUESTIONS/Design_a_Text_Editor.cpp deleted file mode 100644 index 626faae8..00000000 --- a/CPP/LINKED LIST/SOME LEET CODE QUESTIONS/Design_a_Text_Editor.cpp +++ /dev/null @@ -1,82 +0,0 @@ -#include -using namespace std; -class TextEditor -{ -private: - list a; - // If delete, will delete position cur - 1, not position cur. - list::iterator cur; - -public: - TextEditor() - { - a.clear(); - // For convenience. - a.push_back('A'); - cur = a.end(); - } - - void addText(string text) - { - a.insert(cur, text.begin(), text.end()); - } - - int deleteText(int k) - { - int cnt = 0; - // Move to the position that will be deleted. - cur--; - while (k--) - { - if (cur == a.begin()) - break; - cnt++; - a.erase(cur--); - } - // Adjust the position of the cursor. - cur++; - return cnt; - } - - // Left 10 chars. - string solve() - { - auto tt = cur; - tt--; - string ret; - int k = 10; - while (k--) - { - if (tt == a.begin()) - break; - ret += (*(tt--)); - } - reverse(ret.begin(), ret.end()); - return ret; - } - - string cursorLeft(int k) - { - while (k--) - { - auto nxt = cur; - nxt--; - // Never move the cursor to the first position. - if (nxt == a.begin()) - break; - cur = nxt; - } - return solve(); - } - - string cursorRight(int k) - { - while (k--) - { - if (cur == a.end()) - break; - cur++; - } - return solve(); - } -}; \ No newline at end of file From d9a484ded2a5595cffa89a8c7046847deec3e4d0 Mon Sep 17 00:00:00 2001 From: Agrim Jain <56195843+Agrim2411@users.noreply.github.com> Date: Tue, 4 Oct 2022 15:36:03 +0530 Subject: [PATCH 080/448] Added digit_dp problem with python solution --- digit_dp.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 digit_dp.py diff --git a/digit_dp.py b/digit_dp.py new file mode 100644 index 00000000..04f057ad --- /dev/null +++ b/digit_dp.py @@ -0,0 +1,21 @@ +# Problem Link -: https://leetcode.com/problems/numbers-at-most-n-given-digit-set/ +# Problem -: Numbers At Most N Given Digit Set +# Given an array of digits which is sorted in non-decreasing order. You can write numbers using each digits[i] as many times as we want. For example, if digits = ['1','3','5'], we may write numbers such as '13', '551', and '1351315'. +# Return the number of positive integers that can be generated that are less than or equal to a given integer n. + + + +# Python Digit DP Solution +def atMostNGivenDigitSet(self, D: List[str], N: int) -> int: + D = list(map(int, D)) + N = list(map(int, str(N))) + + @functools.lru_cache(None) + def dp(i, isPrefix, isBigger): + if i == len(N): + return not isBigger + if not isPrefix and not isBigger: + return 1 + len(D) * dp(i + 1, False, False) + return 1 + sum(dp(i + 1, isPrefix and d == N[i], isBigger or (isPrefix and d > N[i])) for d in D) + + return dp(0, True, False) - 1 From 3aa3bbaff0f051f474e1d19ab3d288f2c5a5fcbd Mon Sep 17 00:00:00 2001 From: Gaurisha21 <68791455+Gaurisha21@users.noreply.github.com> Date: Tue, 4 Oct 2022 15:41:30 +0530 Subject: [PATCH 081/448] Added Moris Order Traversal Code --- CPP/graph_tree/Morris Order Traversal.cpp | 41 +++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 CPP/graph_tree/Morris Order Traversal.cpp diff --git a/CPP/graph_tree/Morris Order Traversal.cpp b/CPP/graph_tree/Morris Order Traversal.cpp new file mode 100644 index 00000000..3df1f779 --- /dev/null +++ b/CPP/graph_tree/Morris Order Traversal.cpp @@ -0,0 +1,41 @@ +struct tNode { + int data; + struct tNode* left; + struct tNode* right; +}; + +tNode *rightMost(tNode* node, tNode *curr) +{ + while(node->right!=NULL and node->right!=curr) + node=node->right; + return node; +} + +void MorrisTraversal(struct tNode* root) +{ + tNode *curr=root; + while(curr!=NULL) + { + if(curr->left==NULL) + { + cout<data<<" "; + curr=curr->right; + } + else + { + tNode *rm=rightMost(curr->left, curr); + if(rm->right==NULL) + { + rm->right=curr; + curr=curr->left; + } + else + { + rm->right=NULL; + cout<data<<" "; + curr=curr->right; + } + } + } +} + From 401797e5bbf67ca619a3f2360b750ffa77abfa50 Mon Sep 17 00:00:00 2001 From: Rakesh Date: Tue, 4 Oct 2022 15:42:18 +0530 Subject: [PATCH 082/448] added selection sort in sorting techniques in /python/sorting-techniques --- Python/Sorting-Techniques/selection_sort.py | 24 +++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 Python/Sorting-Techniques/selection_sort.py diff --git a/Python/Sorting-Techniques/selection_sort.py b/Python/Sorting-Techniques/selection_sort.py new file mode 100644 index 00000000..1c7a7d61 --- /dev/null +++ b/Python/Sorting-Techniques/selection_sort.py @@ -0,0 +1,24 @@ +# Selection sort in Python + +# time complexity O(n^2) + +#sorting by finding min_index + +#CODE = +def selectionSort(array, size): + + for ind in range(size): + min_index = ind + + for j in range(ind + 1, size): + # select the minimum element in every iteration + if array[j] < array[min_index]: + min_index = j + # swapping the elements to sort the array + (array[ind], array[min_index]) = (array[min_index], array[ind]) + +arr = [-2, 45, 0, 11, -9,88,-97,-202,747] +size = len(arr) +selectionSort(arr, size) +print('The array after sorting in Ascending Order by selection sort is:') +print(arr) From dd689ff689e02c8a710aa90ed6cfe25533a42fbd Mon Sep 17 00:00:00 2001 From: Enigma-52 Date: Tue, 4 Oct 2022 15:44:45 +0530 Subject: [PATCH 083/448] Create exponential_search.cpp --- CPP/searching/exponential_search.cpp | 74 ++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 CPP/searching/exponential_search.cpp diff --git a/CPP/searching/exponential_search.cpp b/CPP/searching/exponential_search.cpp new file mode 100644 index 00000000..48d3c11e --- /dev/null +++ b/CPP/searching/exponential_search.cpp @@ -0,0 +1,74 @@ +// Given a sorted array, and an element x to be +// searched, find position of x in the array. + +// Input: arr[] = {10, 20, 40, 45, 55} +// x = 45 +// Output: Element found at index 3 + +// Input: arr[] = {10, 15, 25, 45, 55} +// x = 15 +// Output: Element found at index 1 + +#include +using namespace std; + +int binarySearch(int arr[], int, int, int); + +// Returns position of first occurrence of +// x in array +int exponentialSearch(int arr[], int n, int x) +{ + // If x is present at first location itself + if (arr[0] == x) + return 0; + + // Find range for binary search by + // repeated doubling + int i = 1; + while (i < n && arr[i] <= x) + i = i * 2; + + // Call binary search for the found range. + return binarySearch(arr, i / 2, + min(i, n - 1), x); +} + +// A recursive binary search function. It returns +// location of x in given array arr[l..r] is +// present, otherwise -1 +int binarySearch(int arr[], int l, int r, int x) +{ + if (r >= l) + { + int mid = l + (r - l) / 2; + + // If the element is present at the middle + // itself + if (arr[mid] == x) + return mid; + + // If element is smaller than mid, then it + // can only be present n left subarray + if (arr[mid] > x) + return binarySearch(arr, l, mid - 1, x); + + // Else the element can only be present + // in right subarray + return binarySearch(arr, mid + 1, r, x); + } + + // We reach here when element is not present + // in array + return -1; +} + +// Driver code +int main(void) +{ + int arr[] = {2, 3, 4, 10, 40}; + int n = sizeof(arr) / sizeof(arr[0]); + int x = 10; + int result = exponentialSearch(arr, n, x); + (result == -1) ? cout << "Element is not present in array" : cout << "Element is present at index " << result; + return 0; +} \ No newline at end of file From 5f99ce6683569095d1a04a39ea0cc18f7cc99276 Mon Sep 17 00:00:00 2001 From: Enigma-52 Date: Tue, 4 Oct 2022 15:46:32 +0530 Subject: [PATCH 084/448] Delete interpolation_search.cpp --- CPP/searching/interpolation_search.cpp | 85 -------------------------- 1 file changed, 85 deletions(-) delete mode 100644 CPP/searching/interpolation_search.cpp diff --git a/CPP/searching/interpolation_search.cpp b/CPP/searching/interpolation_search.cpp deleted file mode 100644 index b8d81288..00000000 --- a/CPP/searching/interpolation_search.cpp +++ /dev/null @@ -1,85 +0,0 @@ - -// Let's assume that the elements of the array are linearly distributed. - -// General equation of line : y = m*x + c. -// y is the value in the array and x is its index. - -// Now putting value of lo,hi and x in the equation -// arr[hi] = m*hi+c ----(1) -// arr[lo] = m*lo+c ----(2) -// x = m*pos + c ----(3) - -// m = (arr[hi] - arr[lo] )/ (hi - lo) - -// subtracting eqxn (2) from (3) -// x - arr[lo] = m * (pos - lo) -// lo + (x - arr[lo])/m = pos -// pos = lo + (x - arr[lo]) *(hi - lo)/(arr[hi] - arr[lo]) - -/*************************************************/ - -// Algorithm -// The rest of the Interpolation algorithm is the same except for the above partition logic. -// Step1: In a loop, calculate the value of “pos” using the probe position formula. -// Step2: If it is a match, return the index of the item, and exit. -// Step3: If the item is less than arr[pos], calculate the probe position of the left sub-array. Otherwise, calculate the same in the right sub-array. -// Step4: Repeat until a match is found or the sub-array reduces to zero. - -// Below is the implementation of the algorithm. - -/*************************************************/ - -#include -using namespace std; - -int interpolationSearch(int arr[], int n, int x) -{ - // Find indexes of two corners - int lo = 0, hi = (n - 1); - - // Since array is sorted, an element present - // in array must be in range defined by corner - while (lo <= hi && x >= arr[lo] && x <= arr[hi]) - { - if (lo == hi) - { - if (arr[lo] == x) - return lo; - return -1; - } - // Probing the position with keeping - // uniform distribution in mind. - int pos = lo + (((double)(hi - lo) / (arr[hi] - arr[lo])) * (x - arr[lo])); - - // Condition of target found - if (arr[pos] == x) - return pos; - - // If x is larger, x is in upper part - if (arr[pos] < x) - lo = pos + 1; - - // If x is smaller, x is in the lower part - else - hi = pos - 1; - } - return -1; -} - -// Driver Code -int main() -{ - // Array of items on which search will - // be conducted. - int arr[] = {10, 12, 13, 16, 18, 19, 20, 21, 22, 23, 24, 33, 35, 42, 47}; - int n = sizeof(arr) / sizeof(arr[0]); - int x = 18; // Element to be searched - int index = interpolationSearch(arr, n, x); - - // If element was found - if (index != -1) - cout << "Element found at index " << index; - else - cout << "Element not found."; - return 0; -} \ No newline at end of file From e615a73423880e4b49e91e9f0262c480dfc2d7ed Mon Sep 17 00:00:00 2001 From: Gaurisha21 <68791455+Gaurisha21@users.noreply.github.com> Date: Tue, 4 Oct 2022 15:48:32 +0530 Subject: [PATCH 085/448] Added Bipartite Graph Code. --- CPP/graph_tree/Bipartite Graph.cpp | 41 ++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 CPP/graph_tree/Bipartite Graph.cpp diff --git a/CPP/graph_tree/Bipartite Graph.cpp b/CPP/graph_tree/Bipartite Graph.cpp new file mode 100644 index 00000000..448be42c --- /dev/null +++ b/CPP/graph_tree/Bipartite Graph.cpp @@ -0,0 +1,41 @@ +class Solution { +public: + bool bfs(vector> graph, vector &vis, int src) + { + queue q; + q.push(src); + int clr = 0; + while(!q.empty()) + { + int size = q.size(); + for(int i=0; i>& graph) { + vector vis(graph.size(),-1); + for(int i=0; i Date: Tue, 4 Oct 2022 10:19:06 +0000 Subject: [PATCH 086/448] Add python program to display IP and hostname --- Python/ip_hostname.py | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 Python/ip_hostname.py diff --git a/Python/ip_hostname.py b/Python/ip_hostname.py new file mode 100644 index 00000000..6e46a3df --- /dev/null +++ b/Python/ip_hostname.py @@ -0,0 +1,4 @@ +import socket + +print(socket.gethostbyname(socket.gethostname())) +print(socket.gethostname()) \ No newline at end of file From 7d0571719b9c1107ce870e03947f7f080096e753 Mon Sep 17 00:00:00 2001 From: Enigma-52 Date: Tue, 4 Oct 2022 15:50:54 +0530 Subject: [PATCH 087/448] Create left_view_of_binary_tree.cpp --- Trees/left_view_of_binary_tree.cpp | 85 ++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 Trees/left_view_of_binary_tree.cpp diff --git a/Trees/left_view_of_binary_tree.cpp b/Trees/left_view_of_binary_tree.cpp new file mode 100644 index 00000000..66c4cc7f --- /dev/null +++ b/Trees/left_view_of_binary_tree.cpp @@ -0,0 +1,85 @@ +// Input : +// 1 +// / \ +// 2 3 +// / \ \ +// 4 5 6 +// Output : 1 2 4 + +// Input : +// 1 +// / \ +// 2 3 +// \ +// 4 +// \ +// 5 +// \ +// 6 +// Output :1 2 4 5 6 + +#include +using namespace std; + +struct Node +{ + int data; + struct Node *left, *right; +}; + +// A utility function to +// create a new Binary Tree Node +struct Node *newNode(int item) +{ + struct Node *temp = (struct Node *)malloc( + sizeof(struct Node)); + temp->data = item; + temp->left = temp->right = NULL; + return temp; +} + +// Recursive function to print +// left view of a binary tree. +void leftViewUtil(struct Node *root, + int level, int *max_level) +{ + // Base Case + if (root == NULL) + return; + + // If this is the first Node of its level + if (*max_level < level) + { + cout << root->data << " "; + *max_level = level; + } + + // Recur for left subtree first, + // then right subtree + leftViewUtil(root->left, level + 1, max_level); + leftViewUtil(root->right, level + 1, max_level); +} + +// A wrapper over leftViewUtil() +void leftView(struct Node *root) +{ + int max_level = 0; + leftViewUtil(root, 1, &max_level); +} + +// Driver Code +int main() +{ + Node *root = newNode(10); + root->left = newNode(2); + root->right = newNode(3); + root->left->left = newNode(7); + root->left->right = newNode(8); + root->right->right = newNode(15); + root->right->left = newNode(12); + root->right->right->left = newNode(14); + + leftView(root); + + return 0; +} \ No newline at end of file From 46bab9b68f180fb1907da0e36d58b09575f4acf8 Mon Sep 17 00:00:00 2001 From: Aman5989 <95266619+Aman5989@users.noreply.github.com> Date: Tue, 4 Oct 2022 15:55:15 +0530 Subject: [PATCH 088/448] Create python script to display ip address Python script to display ip address and host name. Please add hacktoberfest tags. --- Python script to display ip address and host name.py | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 Python script to display ip address and host name.py diff --git a/Python script to display ip address and host name.py b/Python script to display ip address and host name.py new file mode 100644 index 00000000..bd3e207e --- /dev/null +++ b/Python script to display ip address and host name.py @@ -0,0 +1,9 @@ +## importing socket module +import socket +## getting the hostname by socket.gethostname() method +hostname = socket.gethostname() +## getting the IP address using socket.gethostbyname() method +ip_address = socket.gethostbyname(hostname) +## printing the hostname and ip_address +print(f"Hostname: {hostname}") +print(f"IP Address: {ip_address}") From f34cf8483ab666a96df7fe2bd7781e7bddff3226 Mon Sep 17 00:00:00 2001 From: Gaurisha21 <68791455+Gaurisha21@users.noreply.github.com> Date: Tue, 4 Oct 2022 15:59:26 +0530 Subject: [PATCH 089/448] Added Code that converts Binary Tree to Doubly Linked List --- ...vert Binary Tree to Doubly Linked List.cpp | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 Trees/Convert Binary Tree to Doubly Linked List.cpp diff --git a/Trees/Convert Binary Tree to Doubly Linked List.cpp b/Trees/Convert Binary Tree to Doubly Linked List.cpp new file mode 100644 index 00000000..98f19323 --- /dev/null +++ b/Trees/Convert Binary Tree to Doubly Linked List.cpp @@ -0,0 +1,46 @@ +struct Node +{ + int data; + struct Node* left; + struct Node* right; + + Node(int x){ + data = x; + left = right = NULL; + } +}; + +class Solution +{ + public: + void leftNode(Node* root, stack&st) + { + while(root!=NULL) + { + st.push(root); + root=root->left; + } + } + + Node * bToDLL(Node *root) + { + stack st; + leftNode(root,st); + Node *d=newNode(-1), *p=d; + while(!st.empty()) + { + Node *node=st.top(); + st.pop(); + p->right=node; + node->left=p; + p=node; + leftNode(node->right,st); + } + Node *head=d->right; + head->left=NULL; + p->right=NULL; + delete(d); + return head; + } +}; + From 783a73224c117324ccc46d5321a2acf7ff812421 Mon Sep 17 00:00:00 2001 From: ARYAN GULATI <42711978+aryangulati@users.noreply.github.com> Date: Tue, 4 Oct 2022 16:05:47 +0530 Subject: [PATCH 090/448] Create sendEmail.py --- Python/sendEmail.py | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 Python/sendEmail.py diff --git a/Python/sendEmail.py b/Python/sendEmail.py new file mode 100644 index 00000000..84065a89 --- /dev/null +++ b/Python/sendEmail.py @@ -0,0 +1,30 @@ +# importing the module + +import smtplib + +sender_add = "sender123@gmail.com" +receiver_add = "reciver789@gmail.com" +password = "password" + +# creating the SMTP server object by giving SMPT server address and port number + +smtp_server = smtplib.SMTP("smtp.gmail.com", 587) +smtp_server.ehlo() # setting the ESMTP protocol + +smtp_server.starttls() # setting up to TLS connection +smtp_server.ehlo() # calling the ehlo() again as encryption happens on calling startttls() + +smtp_server.login(sender_add, password) + +msg_to_be_sent = """ +Hello, receiver! +Hope you are doing well. +Welcome to PythonGeeks! +""" + +# sending the mail by specifying the from and to address and the message + +smtp_server.sendmail(sender_add, receiver_add, msg_to_be_sent) +print("Successfully the mail is sent") # priting a message on sending the mail + +smtp_server.quit() From a9c9f60a171f922ea8f49be90e17e6c2dfb115c5 Mon Sep 17 00:00:00 2001 From: Gaurisha21 Date: Tue, 4 Oct 2022 16:08:00 +0530 Subject: [PATCH 091/448] Added Level Order Traversal of Binary Tree Code. --- Trees/Level Order Traversal of Binart Tree.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 Trees/Level Order Traversal of Binart Tree.cpp diff --git a/Trees/Level Order Traversal of Binart Tree.cpp b/Trees/Level Order Traversal of Binart Tree.cpp new file mode 100644 index 00000000..bc623350 --- /dev/null +++ b/Trees/Level Order Traversal of Binart Tree.cpp @@ -0,0 +1,18 @@ +class Solution { +public: + void burnTree(TreeNode *root, int time, vector> &ans) + { + if(root==NULL) + return; + if(time==ans.size()) + ans.push_back({}); + ans[time].push_back(root->val); + burnTree(root->left, time+1, ans); + burnTree(root->right, time+1, ans); + } + vector> levelOrder(TreeNode* root) { + vector> ans; + burnTree(root, 0, ans); + return ans; + } +}; From 818af5b86c1d0913a832e260a93f13ef70891e6e Mon Sep 17 00:00:00 2001 From: Gaurisha21 Date: Tue, 4 Oct 2022 16:11:15 +0530 Subject: [PATCH 092/448] Added Construct Binary Tree from Preorder and Inorder Traversal Code --- ...ee from Preorder and Inorder Traversal.cpp | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 Trees/Construct Binary Tree from Preorder and Inorder Traversal.cpp diff --git a/Trees/Construct Binary Tree from Preorder and Inorder Traversal.cpp b/Trees/Construct Binary Tree from Preorder and Inorder Traversal.cpp new file mode 100644 index 00000000..a9afb5e5 --- /dev/null +++ b/Trees/Construct Binary Tree from Preorder and Inorder Traversal.cpp @@ -0,0 +1,39 @@ +/** + * Definition for a binary tree node. + * struct TreeNode { + * int val; + * TreeNode *left; + * TreeNode *right; + * TreeNode() : val(0), left(nullptr), right(nullptr) {} + * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} + * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} + * }; + */ +class Solution { +public: + int i=0; + int search(vector inorder, int curr, int s, int e) + { + for(int i=s; i<=e; i++) + { + if(inorder[i]==curr) + return i; + } + return -1; + } + TreeNode *constructTree(vector& preorder, vector& inorder, int s, int e) + { + if(s>e) + return NULL; + int curr = preorder[i++]; + TreeNode *node = new TreeNode(curr); + int pos = search(inorder, curr, s, e); + node->left=constructTree(preorder, inorder, s, pos-1); + node->right=constructTree(preorder, inorder, pos+1, e); + return node; + } + TreeNode* buildTree(vector& preorder, vector& inorder) { + int n=inorder.size(); + return constructTree(preorder, inorder, 0,n-1); + } +}; From c8dd11454a4c455bc7cd85366a3209abb681c8b2 Mon Sep 17 00:00:00 2001 From: Soumili Chakraborty <95537599+Millie0024@users.noreply.github.com> Date: Tue, 4 Oct 2022 16:14:32 +0530 Subject: [PATCH 093/448] SQRT_using_BinarySearch Find square root of a number using binary search. --- Java/BinarySearchSQRT.java | 43 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 Java/BinarySearchSQRT.java diff --git a/Java/BinarySearchSQRT.java b/Java/BinarySearchSQRT.java new file mode 100644 index 00000000..97cb8a8b --- /dev/null +++ b/Java/BinarySearchSQRT.java @@ -0,0 +1,43 @@ +package Searching; + + +public class BinarySearchSQRT { + public static void main(String[] args) { + int n = 40; + int p = 3; + System.out.printf("%.3f",sqrt(n,p)); + + } + //time complexity: O(log n) + static double sqrt(int n, int p) + { + int start = 0; + int end = n; + double root = 0.0; + + while(start <= end) + { + int m = start + (end - start) / 2; + + if(m * m == n) + return m; + if(m * m > n) + { + end = m - 1; + } + else + start = m + 1; + } + double incr = 0.1; + for(int i = 0; i < p; i++) + { + while(root * root <= n) + root += incr; + root -= incr; + incr /= 10; + + } + return root; + } + } + From a73d1b21c3b3d86e5663a8bc241fea530ca7e588 Mon Sep 17 00:00:00 2001 From: Gaurisha21 Date: Tue, 4 Oct 2022 16:17:17 +0530 Subject: [PATCH 094/448] Added Subarrays with equal 1s and 0s Code --- CPP/arrays/Subarrays with equal 0s and 1s.cpp | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 CPP/arrays/Subarrays with equal 0s and 1s.cpp diff --git a/CPP/arrays/Subarrays with equal 0s and 1s.cpp b/CPP/arrays/Subarrays with equal 0s and 1s.cpp new file mode 100644 index 00000000..cf659d5d --- /dev/null +++ b/CPP/arrays/Subarrays with equal 0s and 1s.cpp @@ -0,0 +1,20 @@ +class Solution{ + public: + //Function to count subarrays with 1s and 0s. + long long int countSubarrWithEqualZeroAndOne(int arr[], int n) + { + for(int i=0; i map; + map[0]=1; + int sum=0, ans=0; + for(int i=0; i Date: Tue, 4 Oct 2022 16:18:43 +0530 Subject: [PATCH 095/448] added selection sort --- Python/Sorting-Techniques/selectionSort.py | 23 ++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 Python/Sorting-Techniques/selectionSort.py diff --git a/Python/Sorting-Techniques/selectionSort.py b/Python/Sorting-Techniques/selectionSort.py new file mode 100644 index 00000000..57fe3ad6 --- /dev/null +++ b/Python/Sorting-Techniques/selectionSort.py @@ -0,0 +1,23 @@ +# Selection sort in Python + +# time complexity O(n^2) + +#sorting by finding min_index +#CODE = +def selectionSort(array, size): + + for ind in range(size): + min_index = ind + + for j in range(ind + 1, size): + # select the minimum element in every iteration + if array[j] < array[min_index]: + min_index = j + # swapping the elements to sort the array + (array[ind], array[min_index]) = (array[min_index], array[ind]) + +arr = [-2, 45, 0, 11, -9,88,-97,-202,747] +size = len(arr) +selectionSort(arr, size) +print('The array after sorting in Ascending Order by selection sort is:') +print(arr) From 340b9f667413ffbaa1900359641ee940b2340399 Mon Sep 17 00:00:00 2001 From: Lokesh Choudhary Medharametla <73935267+Lokesh-Choudhary@users.noreply.github.com> Date: Tue, 4 Oct 2022 16:21:14 +0530 Subject: [PATCH 096/448] Create Kruskal's_Algorithm.cpp --- CPP/Kruskal's_Algorithm.cpp | 114 ++++++++++++++++++++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100644 CPP/Kruskal's_Algorithm.cpp diff --git a/CPP/Kruskal's_Algorithm.cpp b/CPP/Kruskal's_Algorithm.cpp new file mode 100644 index 00000000..0cf3a08e --- /dev/null +++ b/CPP/Kruskal's_Algorithm.cpp @@ -0,0 +1,114 @@ +#include +using namespace std; + +// DSU data structure +// path compression + rank by union + +class DSU { + int* parent; + int* rank; + +public: + DSU(int n) + { + parent = new int[n]; + rank = new int[n]; + + for (int i = 0; i < n; i++) { + parent[i] = -1; + rank[i] = 1; + } + } + + // Find function + int find(int i) + { + if (parent[i] == -1) + return i; + + return parent[i] = find(parent[i]); + } + + // Union function + void unite(int x, int y) + { + int s1 = find(x); + int s2 = find(y); + + if (s1 != s2) { + if (rank[s1] < rank[s2]) { + parent[s1] = s2; + rank[s2] += rank[s1]; + } + else { + parent[s2] = s1; + rank[s1] += rank[s2]; + } + } + } +}; + +class Graph { + vector > edgelist; + int V; + +public: + Graph(int V) { this->V = V; } + + void addEdge(int x, int y, int w) + { + edgelist.push_back({ w, x, y }); + } + + void kruskals_mst() + { + // 1. Sort all edges + sort(edgelist.begin(), edgelist.end()); + + // Initialize the DSU + DSU s(V); + int ans = 0; + cout << "Following are the edges in the " + "constructed MST" + << endl; + for (auto edge : edgelist) { + int w = edge[0]; + int x = edge[1]; + int y = edge[2]; + + // Take this edge in MST if it does + // not forms a cycle + if (s.find(x) != s.find(y)) { + s.unite(x, y); + ans += w; + cout << x << " -- " << y << " == " << w + << endl; + } + } + + cout << "Minimum Cost Spanning Tree: " << ans; + } +}; + +// Driver's code +int main() +{ + /* Let us create following weighted graph + 10 + 0--------1 + | \ | + 6| 5\ |15 + | \ | + 2--------3 + 4 */ + Graph g(4); + g.addEdge(0, 1, 10); + g.addEdge(1, 3, 15); + g.addEdge(2, 3, 4); + g.addEdge(2, 0, 6); + g.addEdge(0, 3, 5); + + // Function call + g.kruskals_mst(); + return 0; +} From 4fbd65dd4602ec3a267ba1a1f0076cfe8746c5a9 Mon Sep 17 00:00:00 2001 From: Enigma-52 Date: Tue, 4 Oct 2022 16:28:37 +0530 Subject: [PATCH 097/448] UPD --- CPP/Leetcode/1-two-sum/1-two-sum.cpp | 36 ++++++++++ CPP/Leetcode/1-two-sum/README.md | 38 +++++++++++ .../1004-max-consecutive-ones-iii.cpp | 22 ++++++ .../1004-max-consecutive-ones-iii/README.md | 27 ++++++++ .../1021-remove-outermost-parentheses.cpp | 17 +++++ .../NOTES.md | 1 + CPP/Leetcode/112-path-sum/112-path-sum.py | 13 ++++ CPP/Leetcode/112-path-sum/README.md | 38 +++++++++++ .../118-pascals-triangle.cpp | 26 +++++++ CPP/Leetcode/118-pascals-triangle/NOTES.md | 1 + CPP/Leetcode/118-pascals-triangle/README.md | 19 ++++++ .../121-best-time-to-buy-and-sell-stock.cpp | 21 ++++++ .../README.md | 30 +++++++++ ...7-airplane-seat-assignment-probability.cpp | 7 ++ .../NOTES.md | 1 + .../README.md | 30 +++++++++ .../125-valid-palindrome.cpp | 23 +++++++ CPP/Leetcode/125-valid-palindrome/README.md | 35 ++++++++++ ...ary-number-in-a-linked-list-to-integer.cpp | 31 +++++++++ .../README.md | 29 ++++++++ .../13-roman-to-integer.cpp | 23 +++++++ CPP/Leetcode/13-roman-to-integer/NOTES.md | 1 + CPP/Leetcode/13-roman-to-integer/README.md | 54 +++++++++++++++ .../1337-the-k-weakest-rows-in-a-matrix.cpp | 21 ++++++ .../README.md | 61 +++++++++++++++++ ...er-of-steps-to-reduce-a-number-to-zero.cpp | 15 +++++ .../NOTES.md | 1 + .../README.md | 42 ++++++++++++ .../1346-check-if-n-and-its-double-exist.cpp | 17 +++++ .../NOTES.md | 1 + .../136-single-number/136-single-number.cpp | 12 ++++ CPP/Leetcode/136-single-number/NOTES.md | 1 + CPP/Leetcode/136-single-number/README.md | 24 +++++++ .../14-longest-common-prefix.cpp | 19 ++++++ .../14-longest-common-prefix/README.md | 27 ++++++++ ...k-if-a-string-can-break-another-string.cpp | 27 ++++++++ .../NOTES.md | 1 + .../1448-count-good-nodes-in-binary-tree.cpp | 34 ++++++++++ .../NOTES.md | 1 + .../README.md | 38 +++++++++++ ...um-product-of-two-elements-in-an-array.cpp | 7 ++ .../NOTES.md | 1 + .../1480-running-sum-of-1d-array.cpp | 14 ++++ .../1480-running-sum-of-1d-array/README.md | 30 +++++++++ .../151-reverse-words-in-a-string.cpp | 53 +++++++++++++++ .../151-reverse-words-in-a-string/README.md | 41 ++++++++++++ ...ximum-nesting-depth-of-the-parentheses.cpp | 13 ++++ .../NOTES.md | 1 + .../1669-merge-in-between-linked-lists.cpp | 37 ++++++++++ .../README.md | 32 +++++++++ .../167-two-sum-ii-input-array-is-sorted.cpp | 23 +++++++ .../README.md | 41 ++++++++++++ .../1679-max-number-of-k-sum-pairs.cpp | 14 ++++ .../1679-max-number-of-k-sum-pairs/NOTES.md | 1 + .../1679-max-number-of-k-sum-pairs/README.md | 33 +++++++++ .../1721-swapping-nodes-in-a-linked-list.cpp | 46 +++++++++++++ .../NOTES.md | 1 + .../README.md | 26 +++++++ .../README.md | 38 +++++++++++ .../1768-merge-strings-alternately.cpp | 30 +++++++++ .../1768-merge-strings-alternately/NOTES.md | 1 + .../1768-merge-strings-alternately/README.md | 42 ++++++++++++ .../1832-check-if-the-sentence-is-pangram.cpp | 16 +++++ .../NOTES.md | 1 + .../README.md | 26 +++++++ .../1859-sorting-the-sentence.cpp | 26 +++++++ .../1859-sorting-the-sentence/NOTES.md | 1 + .../1859-sorting-the-sentence/README.md | 35 ++++++++++ CPP/Leetcode/189-rotate-array/NOTES.md | 1 + CPP/Leetcode/189-rotate-array/README.md | 39 +++++++++++ .../19-remove-nth-node-from-end-of-list.cpp | 40 +++++++++++ .../README.md | 34 ++++++++++ .../191-number-of-1-bits.cpp | 13 ++++ CPP/Leetcode/191-number-of-1-bits/NOTES.md | 1 + ...cters-have-equal-number-of-occurrences.cpp | 20 ++++++ .../NOTES.md | 1 + .../README.md | 28 ++++++++ .../20-valid-parentheses.cpp | 24 +++++++ CPP/Leetcode/20-valid-parentheses/README.md | 36 ++++++++++ ...find-original-array-from-doubled-array.cpp | 27 ++++++++ .../NOTES.md | 1 + ...f-variable-after-performing-operations.cpp | 19 ++++++ .../NOTES.md | 1 + ...ind-target-indices-after-sorting-array.cpp | 15 +++++ .../README.md | 39 +++++++++++ .../2125-number-of-laser-beams-in-a-bank.cpp | 28 ++++++++ .../NOTES.md | 1 + .../README.md | 48 +++++++++++++ .../README.md | 48 +++++++++++++ .../2149-rearrange-array-elements-by-sign.cpp | 21 ++++++ .../README.md | 42 ++++++++++++ ...0-find-all-lonely-numbers-in-the-array.cpp | 17 +++++ .../NOTES.md | 1 + .../README.md | 37 ++++++++++ .../README.md | 48 +++++++++++++ .../2181-merge-nodes-in-between-zeros.cpp | 34 ++++++++++ .../README.md | 38 +++++++++++ .../2296-design-a-text-editor.cpp | 64 ++++++++++++++++++ .../2296-design-a-text-editor/README.md | 67 +++++++++++++++++++ .../237-delete-node-in-a-linked-list.cpp | 19 ++++++ .../237-delete-node-in-a-linked-list/NOTES.md | 1 + .../README.md | 29 ++++++++ .../2395-find-subarrays-with-equal-sum.cpp | 12 ++++ .../README.md | 37 ++++++++++ .../24-swap-nodes-in-pairs.cpp | 24 +++++++ CPP/Leetcode/24-swap-nodes-in-pairs/README.md | 29 ++++++++ .../242-valid-anagram/242-valid-anagram.cpp | 24 +++++++ CPP/Leetcode/242-valid-anagram/NOTES.md | 1 + CPP/Leetcode/242-valid-anagram/README.md | 23 +++++++ ...26-remove-duplicates-from-sorted-array.cpp | 17 +++++ .../README.md | 51 ++++++++++++++ .../268-missing-number/268-missing-number.cpp | 13 ++++ CPP/Leetcode/268-missing-number/NOTES.md | 1 + CPP/Leetcode/268-missing-number/README.md | 37 ++++++++++ .../283-move-zeroes/283-move-zeroes.cpp | 16 +++++ CPP/Leetcode/283-move-zeroes/NOTES.md | 1 + CPP/Leetcode/283-move-zeroes/README.md | 22 ++++++ .../287-find-the-duplicate-number.cpp | 18 +++++ .../287-find-the-duplicate-number/NOTES.md | 1 + .../287-find-the-duplicate-number/README.md | 37 ++++++++++ .../300-longest-increasing-subsequence.cpp | 47 +++++++++++++ .../NOTES.md | 1 + .../README.md | 35 ++++++++++ .../326-power-of-three/326-power-of-three.cpp | 12 ++++ CPP/Leetcode/326-power-of-three/NOTES.md | 1 + .../342-power-of-four/342-power-of-four.cpp | 15 +++++ CPP/Leetcode/342-power-of-four/NOTES.md | 1 + CPP/Leetcode/342-power-of-four/README.md | 24 +++++++ .../344-reverse-string/344-reverse-string.cpp | 19 ++++++ CPP/Leetcode/344-reverse-string/NOTES.md | 1 + CPP/Leetcode/344-reverse-string/README.md | 20 ++++++ .../389-find-the-difference.cpp | 22 ++++++ .../389-find-the-difference/README.md | 29 ++++++++ ...nd-all-numbers-disappeared-in-an-array.cpp | 17 +++++ .../NOTES.md | 1 + .../README.md | 22 ++++++ .../47-permutations-ii/47-permutations-ii.cpp | 17 +++++ CPP/Leetcode/47-permutations-ii/README.md | 26 +++++++ .../485-max-consecutive-ones.cpp | 18 +++++ .../485-max-consecutive-ones/NOTES.md | 1 + .../509-fibonacci-number.cpp | 7 ++ CPP/Leetcode/509-fibonacci-number/NOTES.md | 1 + .../520-detect-capital/520-detect-capital.cpp | 14 ++++ CPP/Leetcode/520-detect-capital/NOTES.md | 1 + .../53-maximum-subarray.cpp | 14 ++++ CPP/Leetcode/53-maximum-subarray/NOTES.md | 1 + .../535-encode-and-decode-tinyurl.cpp | 19 ++++++ .../535-encode-and-decode-tinyurl/NOTES.md | 1 + .../557-reverse-words-in-a-string-iii.cpp | 19 ++++++ .../NOTES.md | 1 + .../README.md | 21 ++++++ .../680-valid-palindrome-ii.cpp | 39 +++++++++++ .../680-valid-palindrome-ii/README.md | 30 +++++++++ .../682-baseball-game/682-baseball-game.cpp | 38 +++++++++++ CPP/Leetcode/682-baseball-game/README.md | 59 ++++++++++++++++ .../7-reverse-integer/7-reverse-integer.cpp | 14 ++++ CPP/Leetcode/7-reverse-integer/NOTES.md | 1 + .../704-binary-search/704-binary-search.cpp | 22 ++++++ CPP/Leetcode/704-binary-search/NOTES.md | 1 + .../804-unique-morse-code-words.cpp | 18 +++++ .../804-unique-morse-code-words/README.md | 48 +++++++++++++ .../81-search-in-rotated-sorted-array-ii.cpp | 14 ++++ .../README.md | 29 ++++++++ .../844-backspace-string-compare.cpp | 38 +++++++++++ .../844-backspace-string-compare/NOTES.md | 1 + .../844-backspace-string-compare/README.md | 37 ++++++++++ .../867-transpose-matrix.cpp | 15 +++++ CPP/Leetcode/867-transpose-matrix/README.md | 30 +++++++++ .../876-middle-of-the-linked-list.cpp | 24 +++++++ .../876-middle-of-the-linked-list/NOTES.md | 1 + .../876-middle-of-the-linked-list/README.md | 27 ++++++++ .../88-merge-sorted-array.cpp | 36 ++++++++++ CPP/Leetcode/88-merge-sorted-array/NOTES.md | 1 + CPP/Leetcode/88-merge-sorted-array/README.md | 46 +++++++++++++ .../905-sort-array-by-parity.cpp | 23 +++++++ .../905-sort-array-by-parity/README.md | 26 +++++++ .../94-binary-tree-inorder-traversal.cpp | 27 ++++++++ .../README.md | 31 +++++++++ .../Matrix Exponentiation - GFG/README.md | 35 ++++++++++ .../matrix-exponentiation.cpp | 48 +++++++++++++ CPP/Leetcode/README.md | 2 + 181 files changed, 3930 insertions(+) create mode 100644 CPP/Leetcode/1-two-sum/1-two-sum.cpp create mode 100644 CPP/Leetcode/1-two-sum/README.md create mode 100644 CPP/Leetcode/1004-max-consecutive-ones-iii/1004-max-consecutive-ones-iii.cpp create mode 100644 CPP/Leetcode/1004-max-consecutive-ones-iii/README.md create mode 100644 CPP/Leetcode/1021-remove-outermost-parentheses/1021-remove-outermost-parentheses.cpp create mode 100644 CPP/Leetcode/1021-remove-outermost-parentheses/NOTES.md create mode 100644 CPP/Leetcode/112-path-sum/112-path-sum.py create mode 100644 CPP/Leetcode/112-path-sum/README.md create mode 100644 CPP/Leetcode/118-pascals-triangle/118-pascals-triangle.cpp create mode 100644 CPP/Leetcode/118-pascals-triangle/NOTES.md create mode 100644 CPP/Leetcode/118-pascals-triangle/README.md create mode 100644 CPP/Leetcode/121-best-time-to-buy-and-sell-stock/121-best-time-to-buy-and-sell-stock.cpp create mode 100644 CPP/Leetcode/121-best-time-to-buy-and-sell-stock/README.md create mode 100644 CPP/Leetcode/1227-airplane-seat-assignment-probability/1227-airplane-seat-assignment-probability.cpp create mode 100644 CPP/Leetcode/1227-airplane-seat-assignment-probability/NOTES.md create mode 100644 CPP/Leetcode/1227-airplane-seat-assignment-probability/README.md create mode 100644 CPP/Leetcode/125-valid-palindrome/125-valid-palindrome.cpp create mode 100644 CPP/Leetcode/125-valid-palindrome/README.md create mode 100644 CPP/Leetcode/1290-convert-binary-number-in-a-linked-list-to-integer/1290-convert-binary-number-in-a-linked-list-to-integer.cpp create mode 100644 CPP/Leetcode/1290-convert-binary-number-in-a-linked-list-to-integer/README.md create mode 100644 CPP/Leetcode/13-roman-to-integer/13-roman-to-integer.cpp create mode 100644 CPP/Leetcode/13-roman-to-integer/NOTES.md create mode 100644 CPP/Leetcode/13-roman-to-integer/README.md create mode 100644 CPP/Leetcode/1337-the-k-weakest-rows-in-a-matrix/1337-the-k-weakest-rows-in-a-matrix.cpp create mode 100644 CPP/Leetcode/1337-the-k-weakest-rows-in-a-matrix/README.md create mode 100644 CPP/Leetcode/1342-number-of-steps-to-reduce-a-number-to-zero/1342-number-of-steps-to-reduce-a-number-to-zero.cpp create mode 100644 CPP/Leetcode/1342-number-of-steps-to-reduce-a-number-to-zero/NOTES.md create mode 100644 CPP/Leetcode/1342-number-of-steps-to-reduce-a-number-to-zero/README.md create mode 100644 CPP/Leetcode/1346-check-if-n-and-its-double-exist/1346-check-if-n-and-its-double-exist.cpp create mode 100644 CPP/Leetcode/1346-check-if-n-and-its-double-exist/NOTES.md create mode 100644 CPP/Leetcode/136-single-number/136-single-number.cpp create mode 100644 CPP/Leetcode/136-single-number/NOTES.md create mode 100644 CPP/Leetcode/136-single-number/README.md create mode 100644 CPP/Leetcode/14-longest-common-prefix/14-longest-common-prefix.cpp create mode 100644 CPP/Leetcode/14-longest-common-prefix/README.md create mode 100644 CPP/Leetcode/1433-check-if-a-string-can-break-another-string/1433-check-if-a-string-can-break-another-string.cpp create mode 100644 CPP/Leetcode/1433-check-if-a-string-can-break-another-string/NOTES.md create mode 100644 CPP/Leetcode/1448-count-good-nodes-in-binary-tree/1448-count-good-nodes-in-binary-tree.cpp create mode 100644 CPP/Leetcode/1448-count-good-nodes-in-binary-tree/NOTES.md create mode 100644 CPP/Leetcode/1448-count-good-nodes-in-binary-tree/README.md create mode 100644 CPP/Leetcode/1464-maximum-product-of-two-elements-in-an-array/1464-maximum-product-of-two-elements-in-an-array.cpp create mode 100644 CPP/Leetcode/1464-maximum-product-of-two-elements-in-an-array/NOTES.md create mode 100644 CPP/Leetcode/1480-running-sum-of-1d-array/1480-running-sum-of-1d-array.cpp create mode 100644 CPP/Leetcode/1480-running-sum-of-1d-array/README.md create mode 100644 CPP/Leetcode/151-reverse-words-in-a-string/151-reverse-words-in-a-string.cpp create mode 100644 CPP/Leetcode/151-reverse-words-in-a-string/README.md create mode 100644 CPP/Leetcode/1614-maximum-nesting-depth-of-the-parentheses/1614-maximum-nesting-depth-of-the-parentheses.cpp create mode 100644 CPP/Leetcode/1614-maximum-nesting-depth-of-the-parentheses/NOTES.md create mode 100644 CPP/Leetcode/1669-merge-in-between-linked-lists/1669-merge-in-between-linked-lists.cpp create mode 100644 CPP/Leetcode/1669-merge-in-between-linked-lists/README.md create mode 100644 CPP/Leetcode/167-two-sum-ii-input-array-is-sorted/167-two-sum-ii-input-array-is-sorted.cpp create mode 100644 CPP/Leetcode/167-two-sum-ii-input-array-is-sorted/README.md create mode 100644 CPP/Leetcode/1679-max-number-of-k-sum-pairs/1679-max-number-of-k-sum-pairs.cpp create mode 100644 CPP/Leetcode/1679-max-number-of-k-sum-pairs/NOTES.md create mode 100644 CPP/Leetcode/1679-max-number-of-k-sum-pairs/README.md create mode 100644 CPP/Leetcode/1721-swapping-nodes-in-a-linked-list/1721-swapping-nodes-in-a-linked-list.cpp create mode 100644 CPP/Leetcode/1721-swapping-nodes-in-a-linked-list/NOTES.md create mode 100644 CPP/Leetcode/1721-swapping-nodes-in-a-linked-list/README.md create mode 100644 CPP/Leetcode/1752-check-if-array-is-sorted-and-rotated/README.md create mode 100644 CPP/Leetcode/1768-merge-strings-alternately/1768-merge-strings-alternately.cpp create mode 100644 CPP/Leetcode/1768-merge-strings-alternately/NOTES.md create mode 100644 CPP/Leetcode/1768-merge-strings-alternately/README.md create mode 100644 CPP/Leetcode/1832-check-if-the-sentence-is-pangram/1832-check-if-the-sentence-is-pangram.cpp create mode 100644 CPP/Leetcode/1832-check-if-the-sentence-is-pangram/NOTES.md create mode 100644 CPP/Leetcode/1832-check-if-the-sentence-is-pangram/README.md create mode 100644 CPP/Leetcode/1859-sorting-the-sentence/1859-sorting-the-sentence.cpp create mode 100644 CPP/Leetcode/1859-sorting-the-sentence/NOTES.md create mode 100644 CPP/Leetcode/1859-sorting-the-sentence/README.md create mode 100644 CPP/Leetcode/189-rotate-array/NOTES.md create mode 100644 CPP/Leetcode/189-rotate-array/README.md create mode 100644 CPP/Leetcode/19-remove-nth-node-from-end-of-list/19-remove-nth-node-from-end-of-list.cpp create mode 100644 CPP/Leetcode/19-remove-nth-node-from-end-of-list/README.md create mode 100644 CPP/Leetcode/191-number-of-1-bits/191-number-of-1-bits.cpp create mode 100644 CPP/Leetcode/191-number-of-1-bits/NOTES.md create mode 100644 CPP/Leetcode/1941-check-if-all-characters-have-equal-number-of-occurrences/1941-check-if-all-characters-have-equal-number-of-occurrences.cpp create mode 100644 CPP/Leetcode/1941-check-if-all-characters-have-equal-number-of-occurrences/NOTES.md create mode 100644 CPP/Leetcode/1941-check-if-all-characters-have-equal-number-of-occurrences/README.md create mode 100644 CPP/Leetcode/20-valid-parentheses/20-valid-parentheses.cpp create mode 100644 CPP/Leetcode/20-valid-parentheses/README.md create mode 100644 CPP/Leetcode/2007-find-original-array-from-doubled-array/2007-find-original-array-from-doubled-array.cpp create mode 100644 CPP/Leetcode/2007-find-original-array-from-doubled-array/NOTES.md create mode 100644 CPP/Leetcode/2011-final-value-of-variable-after-performing-operations/2011-final-value-of-variable-after-performing-operations.cpp create mode 100644 CPP/Leetcode/2011-final-value-of-variable-after-performing-operations/NOTES.md create mode 100644 CPP/Leetcode/2089-find-target-indices-after-sorting-array/2089-find-target-indices-after-sorting-array.cpp create mode 100644 CPP/Leetcode/2089-find-target-indices-after-sorting-array/README.md create mode 100644 CPP/Leetcode/2125-number-of-laser-beams-in-a-bank/2125-number-of-laser-beams-in-a-bank.cpp create mode 100644 CPP/Leetcode/2125-number-of-laser-beams-in-a-bank/NOTES.md create mode 100644 CPP/Leetcode/2125-number-of-laser-beams-in-a-bank/README.md create mode 100644 CPP/Leetcode/2130-maximum-twin-sum-of-a-linked-list/README.md create mode 100644 CPP/Leetcode/2149-rearrange-array-elements-by-sign/2149-rearrange-array-elements-by-sign.cpp create mode 100644 CPP/Leetcode/2149-rearrange-array-elements-by-sign/README.md create mode 100644 CPP/Leetcode/2150-find-all-lonely-numbers-in-the-array/2150-find-all-lonely-numbers-in-the-array.cpp create mode 100644 CPP/Leetcode/2150-find-all-lonely-numbers-in-the-array/NOTES.md create mode 100644 CPP/Leetcode/2150-find-all-lonely-numbers-in-the-array/README.md create mode 100644 CPP/Leetcode/2164-sort-even-and-odd-indices-independently/README.md create mode 100644 CPP/Leetcode/2181-merge-nodes-in-between-zeros/2181-merge-nodes-in-between-zeros.cpp create mode 100644 CPP/Leetcode/2181-merge-nodes-in-between-zeros/README.md create mode 100644 CPP/Leetcode/2296-design-a-text-editor/2296-design-a-text-editor.cpp create mode 100644 CPP/Leetcode/2296-design-a-text-editor/README.md create mode 100644 CPP/Leetcode/237-delete-node-in-a-linked-list/237-delete-node-in-a-linked-list.cpp create mode 100644 CPP/Leetcode/237-delete-node-in-a-linked-list/NOTES.md create mode 100644 CPP/Leetcode/237-delete-node-in-a-linked-list/README.md create mode 100644 CPP/Leetcode/2395-find-subarrays-with-equal-sum/2395-find-subarrays-with-equal-sum.cpp create mode 100644 CPP/Leetcode/2395-find-subarrays-with-equal-sum/README.md create mode 100644 CPP/Leetcode/24-swap-nodes-in-pairs/24-swap-nodes-in-pairs.cpp create mode 100644 CPP/Leetcode/24-swap-nodes-in-pairs/README.md create mode 100644 CPP/Leetcode/242-valid-anagram/242-valid-anagram.cpp create mode 100644 CPP/Leetcode/242-valid-anagram/NOTES.md create mode 100644 CPP/Leetcode/242-valid-anagram/README.md create mode 100644 CPP/Leetcode/26-remove-duplicates-from-sorted-array/26-remove-duplicates-from-sorted-array.cpp create mode 100644 CPP/Leetcode/26-remove-duplicates-from-sorted-array/README.md create mode 100644 CPP/Leetcode/268-missing-number/268-missing-number.cpp create mode 100644 CPP/Leetcode/268-missing-number/NOTES.md create mode 100644 CPP/Leetcode/268-missing-number/README.md create mode 100644 CPP/Leetcode/283-move-zeroes/283-move-zeroes.cpp create mode 100644 CPP/Leetcode/283-move-zeroes/NOTES.md create mode 100644 CPP/Leetcode/283-move-zeroes/README.md create mode 100644 CPP/Leetcode/287-find-the-duplicate-number/287-find-the-duplicate-number.cpp create mode 100644 CPP/Leetcode/287-find-the-duplicate-number/NOTES.md create mode 100644 CPP/Leetcode/287-find-the-duplicate-number/README.md create mode 100644 CPP/Leetcode/300-longest-increasing-subsequence/300-longest-increasing-subsequence.cpp create mode 100644 CPP/Leetcode/300-longest-increasing-subsequence/NOTES.md create mode 100644 CPP/Leetcode/300-longest-increasing-subsequence/README.md create mode 100644 CPP/Leetcode/326-power-of-three/326-power-of-three.cpp create mode 100644 CPP/Leetcode/326-power-of-three/NOTES.md create mode 100644 CPP/Leetcode/342-power-of-four/342-power-of-four.cpp create mode 100644 CPP/Leetcode/342-power-of-four/NOTES.md create mode 100644 CPP/Leetcode/342-power-of-four/README.md create mode 100644 CPP/Leetcode/344-reverse-string/344-reverse-string.cpp create mode 100644 CPP/Leetcode/344-reverse-string/NOTES.md create mode 100644 CPP/Leetcode/344-reverse-string/README.md create mode 100644 CPP/Leetcode/389-find-the-difference/389-find-the-difference.cpp create mode 100644 CPP/Leetcode/389-find-the-difference/README.md create mode 100644 CPP/Leetcode/448-find-all-numbers-disappeared-in-an-array/448-find-all-numbers-disappeared-in-an-array.cpp create mode 100644 CPP/Leetcode/448-find-all-numbers-disappeared-in-an-array/NOTES.md create mode 100644 CPP/Leetcode/448-find-all-numbers-disappeared-in-an-array/README.md create mode 100644 CPP/Leetcode/47-permutations-ii/47-permutations-ii.cpp create mode 100644 CPP/Leetcode/47-permutations-ii/README.md create mode 100644 CPP/Leetcode/485-max-consecutive-ones/485-max-consecutive-ones.cpp create mode 100644 CPP/Leetcode/485-max-consecutive-ones/NOTES.md create mode 100644 CPP/Leetcode/509-fibonacci-number/509-fibonacci-number.cpp create mode 100644 CPP/Leetcode/509-fibonacci-number/NOTES.md create mode 100644 CPP/Leetcode/520-detect-capital/520-detect-capital.cpp create mode 100644 CPP/Leetcode/520-detect-capital/NOTES.md create mode 100644 CPP/Leetcode/53-maximum-subarray/53-maximum-subarray.cpp create mode 100644 CPP/Leetcode/53-maximum-subarray/NOTES.md create mode 100644 CPP/Leetcode/535-encode-and-decode-tinyurl/535-encode-and-decode-tinyurl.cpp create mode 100644 CPP/Leetcode/535-encode-and-decode-tinyurl/NOTES.md create mode 100644 CPP/Leetcode/557-reverse-words-in-a-string-iii/557-reverse-words-in-a-string-iii.cpp create mode 100644 CPP/Leetcode/557-reverse-words-in-a-string-iii/NOTES.md create mode 100644 CPP/Leetcode/557-reverse-words-in-a-string-iii/README.md create mode 100644 CPP/Leetcode/680-valid-palindrome-ii/680-valid-palindrome-ii.cpp create mode 100644 CPP/Leetcode/680-valid-palindrome-ii/README.md create mode 100644 CPP/Leetcode/682-baseball-game/682-baseball-game.cpp create mode 100644 CPP/Leetcode/682-baseball-game/README.md create mode 100644 CPP/Leetcode/7-reverse-integer/7-reverse-integer.cpp create mode 100644 CPP/Leetcode/7-reverse-integer/NOTES.md create mode 100644 CPP/Leetcode/704-binary-search/704-binary-search.cpp create mode 100644 CPP/Leetcode/704-binary-search/NOTES.md create mode 100644 CPP/Leetcode/804-unique-morse-code-words/804-unique-morse-code-words.cpp create mode 100644 CPP/Leetcode/804-unique-morse-code-words/README.md create mode 100644 CPP/Leetcode/81-search-in-rotated-sorted-array-ii/81-search-in-rotated-sorted-array-ii.cpp create mode 100644 CPP/Leetcode/81-search-in-rotated-sorted-array-ii/README.md create mode 100644 CPP/Leetcode/844-backspace-string-compare/844-backspace-string-compare.cpp create mode 100644 CPP/Leetcode/844-backspace-string-compare/NOTES.md create mode 100644 CPP/Leetcode/844-backspace-string-compare/README.md create mode 100644 CPP/Leetcode/867-transpose-matrix/867-transpose-matrix.cpp create mode 100644 CPP/Leetcode/867-transpose-matrix/README.md create mode 100644 CPP/Leetcode/876-middle-of-the-linked-list/876-middle-of-the-linked-list.cpp create mode 100644 CPP/Leetcode/876-middle-of-the-linked-list/NOTES.md create mode 100644 CPP/Leetcode/876-middle-of-the-linked-list/README.md create mode 100644 CPP/Leetcode/88-merge-sorted-array/88-merge-sorted-array.cpp create mode 100644 CPP/Leetcode/88-merge-sorted-array/NOTES.md create mode 100644 CPP/Leetcode/88-merge-sorted-array/README.md create mode 100644 CPP/Leetcode/905-sort-array-by-parity/905-sort-array-by-parity.cpp create mode 100644 CPP/Leetcode/905-sort-array-by-parity/README.md create mode 100644 CPP/Leetcode/94-binary-tree-inorder-traversal/94-binary-tree-inorder-traversal.cpp create mode 100644 CPP/Leetcode/94-binary-tree-inorder-traversal/README.md create mode 100644 CPP/Leetcode/Matrix Exponentiation - GFG/README.md create mode 100644 CPP/Leetcode/Matrix Exponentiation - GFG/matrix-exponentiation.cpp create mode 100644 CPP/Leetcode/README.md diff --git a/CPP/Leetcode/1-two-sum/1-two-sum.cpp b/CPP/Leetcode/1-two-sum/1-two-sum.cpp new file mode 100644 index 00000000..e514e0c3 --- /dev/null +++ b/CPP/Leetcode/1-two-sum/1-two-sum.cpp @@ -0,0 +1,36 @@ +class Solution +{ +public: + vector twoSum(vector& nums, int target) + { + vector v; + int z=0; + for(int i=0;i1. Two Sum

Easy


Given an array of integers nums and an integer target, return indices of the two numbers such that they add up to target.

+ +

You may assume that each input would have exactly one solution, and you may not use the same element twice.

+ +

You can return the answer in any order.

+ +

 

+

Example 1:

+ +
Input: nums = [2,7,11,15], target = 9
+Output: [0,1]
+Explanation: Because nums[0] + nums[1] == 9, we return [0, 1].
+
+ +

Example 2:

+ +
Input: nums = [3,2,4], target = 6
+Output: [1,2]
+
+ +

Example 3:

+ +
Input: nums = [3,3], target = 6
+Output: [0,1]
+
+ +

 

+

Constraints:

+ +
    +
  • 2 <= nums.length <= 104
  • +
  • -109 <= nums[i] <= 109
  • +
  • -109 <= target <= 109
  • +
  • Only one valid answer exists.
  • +
+ +

 

+Follow-up: Can you come up with an algorithm that is less than O(n2time complexity?
\ No newline at end of file diff --git a/CPP/Leetcode/1004-max-consecutive-ones-iii/1004-max-consecutive-ones-iii.cpp b/CPP/Leetcode/1004-max-consecutive-ones-iii/1004-max-consecutive-ones-iii.cpp new file mode 100644 index 00000000..59153316 --- /dev/null +++ b/CPP/Leetcode/1004-max-consecutive-ones-iii/1004-max-consecutive-ones-iii.cpp @@ -0,0 +1,22 @@ +class Solution { +public: + int longestOnes(vector& nums, int k) { + int i=0,j=0; + while(i1004. Max Consecutive Ones III

Medium


Given a binary array nums and an integer k, return the maximum number of consecutive 1's in the array if you can flip at most k 0's.

+ +

 

+

Example 1:

+ +
Input: nums = [1,1,1,0,0,0,1,1,1,1,0], k = 2
+Output: 6
+Explanation: [1,1,1,0,0,1,1,1,1,1,1]
+Bolded numbers were flipped from 0 to 1. The longest subarray is underlined.
+ +

Example 2:

+ +
Input: nums = [0,0,1,1,0,0,1,1,1,0,1,1,0,0,0,1,1,1,1], k = 3
+Output: 10
+Explanation: [0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1]
+Bolded numbers were flipped from 0 to 1. The longest subarray is underlined.
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= nums.length <= 105
  • +
  • nums[i] is either 0 or 1.
  • +
  • 0 <= k <= nums.length
  • +
+
\ No newline at end of file diff --git a/CPP/Leetcode/1021-remove-outermost-parentheses/1021-remove-outermost-parentheses.cpp b/CPP/Leetcode/1021-remove-outermost-parentheses/1021-remove-outermost-parentheses.cpp new file mode 100644 index 00000000..4a9431f8 --- /dev/null +++ b/CPP/Leetcode/1021-remove-outermost-parentheses/1021-remove-outermost-parentheses.cpp @@ -0,0 +1,17 @@ +class Solution { +public: + string removeOuterParentheses(string s) { + int cnt=0; + string k=""; + for(int i=0;i bool: + if root is None: return False + + if root.left is None and root.right is None and root.val == targetSum: return True + + return (self.hasPathSum(root.left,targetSum-root.val) or self.hasPathSum(root.right,targetSum - root.val) ) \ No newline at end of file diff --git a/CPP/Leetcode/112-path-sum/README.md b/CPP/Leetcode/112-path-sum/README.md new file mode 100644 index 00000000..848e1189 --- /dev/null +++ b/CPP/Leetcode/112-path-sum/README.md @@ -0,0 +1,38 @@ +

112. Path Sum

Easy


Given the root of a binary tree and an integer targetSum, return true if the tree has a root-to-leaf path such that adding up all the values along the path equals targetSum.

+ +

A leaf is a node with no children.

+ +

 

+

Example 1:

+ +
Input: root = [5,4,8,11,null,13,4,7,2,null,null,null,1], targetSum = 22
+Output: true
+Explanation: The root-to-leaf path with the target sum is shown.
+
+ +

Example 2:

+ +
Input: root = [1,2,3], targetSum = 5
+Output: false
+Explanation: There two root-to-leaf paths in the tree:
+(1 --> 2): The sum is 3.
+(1 --> 3): The sum is 4.
+There is no root-to-leaf path with sum = 5.
+
+ +

Example 3:

+ +
Input: root = [], targetSum = 0
+Output: false
+Explanation: Since the tree is empty, there are no root-to-leaf paths.
+
+ +

 

+

Constraints:

+ +
    +
  • The number of nodes in the tree is in the range [0, 5000].
  • +
  • -1000 <= Node.val <= 1000
  • +
  • -1000 <= targetSum <= 1000
  • +
+
\ No newline at end of file diff --git a/CPP/Leetcode/118-pascals-triangle/118-pascals-triangle.cpp b/CPP/Leetcode/118-pascals-triangle/118-pascals-triangle.cpp new file mode 100644 index 00000000..00a1337b --- /dev/null +++ b/CPP/Leetcode/118-pascals-triangle/118-pascals-triangle.cpp @@ -0,0 +1,26 @@ +class Solution { + private: + vector> printPascal(int n) + { + vector b; + for (int line = 1; line <= n; line++) + { + int C = 1; + for (int i = 1; i <= line; i++) + { + b.push_back(C); + C = C * (line - i) / i; + } + v.push_back(b); + b.clear(); + + } + return v; +} +public: + vector> v; + vector> generate(int numRows) + { + return printPascal(numRows); + } +}; \ No newline at end of file diff --git a/CPP/Leetcode/118-pascals-triangle/NOTES.md b/CPP/Leetcode/118-pascals-triangle/NOTES.md new file mode 100644 index 00000000..38c1374a --- /dev/null +++ b/CPP/Leetcode/118-pascals-triangle/NOTES.md @@ -0,0 +1 @@ +​ \ No newline at end of file diff --git a/CPP/Leetcode/118-pascals-triangle/README.md b/CPP/Leetcode/118-pascals-triangle/README.md new file mode 100644 index 00000000..9750c83b --- /dev/null +++ b/CPP/Leetcode/118-pascals-triangle/README.md @@ -0,0 +1,19 @@ +

118. Pascal's Triangle

Easy


Given an integer numRows, return the first numRows of Pascal's triangle.

+ +

In Pascal's triangle, each number is the sum of the two numbers directly above it as shown:

+ +

 

+

Example 1:

+
Input: numRows = 5
+Output: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]
+

Example 2:

+
Input: numRows = 1
+Output: [[1]]
+
+

 

+

Constraints:

+ +
    +
  • 1 <= numRows <= 30
  • +
+
\ No newline at end of file diff --git a/CPP/Leetcode/121-best-time-to-buy-and-sell-stock/121-best-time-to-buy-and-sell-stock.cpp b/CPP/Leetcode/121-best-time-to-buy-and-sell-stock/121-best-time-to-buy-and-sell-stock.cpp new file mode 100644 index 00000000..c5a266ac --- /dev/null +++ b/CPP/Leetcode/121-best-time-to-buy-and-sell-stock/121-best-time-to-buy-and-sell-stock.cpp @@ -0,0 +1,21 @@ +class Solution { +public: + int maxProfit(vector& prices) { + int low=INT_MAX; + int profit=0; + for(int i=0;iprofit) + { + profit=cnt; + } + + } + return profit; + } +}; \ No newline at end of file diff --git a/CPP/Leetcode/121-best-time-to-buy-and-sell-stock/README.md b/CPP/Leetcode/121-best-time-to-buy-and-sell-stock/README.md new file mode 100644 index 00000000..9350a49a --- /dev/null +++ b/CPP/Leetcode/121-best-time-to-buy-and-sell-stock/README.md @@ -0,0 +1,30 @@ +

121. Best Time to Buy and Sell Stock

Easy


You are given an array prices where prices[i] is the price of a given stock on the ith day.

+ +

You want to maximize your profit by choosing a single day to buy one stock and choosing a different day in the future to sell that stock.

+ +

Return the maximum profit you can achieve from this transaction. If you cannot achieve any profit, return 0.

+ +

 

+

Example 1:

+ +
Input: prices = [7,1,5,3,6,4]
+Output: 5
+Explanation: Buy on day 2 (price = 1) and sell on day 5 (price = 6), profit = 6-1 = 5.
+Note that buying on day 2 and selling on day 1 is not allowed because you must buy before you sell.
+
+ +

Example 2:

+ +
Input: prices = [7,6,4,3,1]
+Output: 0
+Explanation: In this case, no transactions are done and the max profit = 0.
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= prices.length <= 105
  • +
  • 0 <= prices[i] <= 104
  • +
+
\ No newline at end of file diff --git a/CPP/Leetcode/1227-airplane-seat-assignment-probability/1227-airplane-seat-assignment-probability.cpp b/CPP/Leetcode/1227-airplane-seat-assignment-probability/1227-airplane-seat-assignment-probability.cpp new file mode 100644 index 00000000..3e80b831 --- /dev/null +++ b/CPP/Leetcode/1227-airplane-seat-assignment-probability/1227-airplane-seat-assignment-probability.cpp @@ -0,0 +1,7 @@ +class Solution { +public: + double nthPersonGetsNthSeat(int n) { + if(n==1) return 1.0; + else return 0.5; + } +}; \ No newline at end of file diff --git a/CPP/Leetcode/1227-airplane-seat-assignment-probability/NOTES.md b/CPP/Leetcode/1227-airplane-seat-assignment-probability/NOTES.md new file mode 100644 index 00000000..38c1374a --- /dev/null +++ b/CPP/Leetcode/1227-airplane-seat-assignment-probability/NOTES.md @@ -0,0 +1 @@ +​ \ No newline at end of file diff --git a/CPP/Leetcode/1227-airplane-seat-assignment-probability/README.md b/CPP/Leetcode/1227-airplane-seat-assignment-probability/README.md new file mode 100644 index 00000000..3ad94fad --- /dev/null +++ b/CPP/Leetcode/1227-airplane-seat-assignment-probability/README.md @@ -0,0 +1,30 @@ +

1227. Airplane Seat Assignment Probability

Medium


n passengers board an airplane with exactly n seats. The first passenger has lost the ticket and picks a seat randomly. But after that, the rest of the passengers will:

+ +
    +
  • Take their own seat if it is still available, and
  • +
  • Pick other seats randomly when they find their seat occupied
  • +
+ +

Return the probability that the nth person gets his own seat.

+ +

 

+

Example 1:

+ +
Input: n = 1
+Output: 1.00000
+Explanation: The first person can only get the first seat.
+ +

Example 2:

+ +
Input: n = 2
+Output: 0.50000
+Explanation: The second person has a probability of 0.5 to get the second seat (when first person gets the first seat).
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= n <= 105
  • +
+
\ No newline at end of file diff --git a/CPP/Leetcode/125-valid-palindrome/125-valid-palindrome.cpp b/CPP/Leetcode/125-valid-palindrome/125-valid-palindrome.cpp new file mode 100644 index 00000000..10d0ac26 --- /dev/null +++ b/CPP/Leetcode/125-valid-palindrome/125-valid-palindrome.cpp @@ -0,0 +1,23 @@ +class Solution { +public: + bool isPalindrome(string s) { + int n=s.length(); + string k=""; + transform(s.begin(), s.end(), s.begin(), ::tolower); + for(int i=0;i='a' && s[i]<='z') || (s[i]>='0' && s[i]<='9')) k+=s[i]; + } + + n=k.length(); + int l=0; + int r=n-1; + while(l125. Valid Palindrome

Easy


A phrase is a palindrome if, after converting all uppercase letters into lowercase letters and removing all non-alphanumeric characters, it reads the same forward and backward. Alphanumeric characters include letters and numbers.

+ +

Given a string s, return true if it is a palindrome, or false otherwise.

+ +

 

+

Example 1:

+ +
Input: s = "A man, a plan, a canal: Panama"
+Output: true
+Explanation: "amanaplanacanalpanama" is a palindrome.
+
+ +

Example 2:

+ +
Input: s = "race a car"
+Output: false
+Explanation: "raceacar" is not a palindrome.
+
+ +

Example 3:

+ +
Input: s = " "
+Output: true
+Explanation: s is an empty string "" after removing non-alphanumeric characters.
+Since an empty string reads the same forward and backward, it is a palindrome.
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= s.length <= 2 * 105
  • +
  • s consists only of printable ASCII characters.
  • +
+
\ No newline at end of file diff --git a/CPP/Leetcode/1290-convert-binary-number-in-a-linked-list-to-integer/1290-convert-binary-number-in-a-linked-list-to-integer.cpp b/CPP/Leetcode/1290-convert-binary-number-in-a-linked-list-to-integer/1290-convert-binary-number-in-a-linked-list-to-integer.cpp new file mode 100644 index 00000000..11a4cd5b --- /dev/null +++ b/CPP/Leetcode/1290-convert-binary-number-in-a-linked-list-to-integer/1290-convert-binary-number-in-a-linked-list-to-integer.cpp @@ -0,0 +1,31 @@ +/** + * Definition for singly-linked list. + * struct ListNode { + * int val; + * ListNode *next; + * ListNode() : val(0), next(nullptr) {} + * ListNode(int x) : val(x), next(nullptr) {} + * ListNode(int x, ListNode *next) : val(x), next(next) {} + * }; + */ +class Solution { +public: + int getDecimalValue(ListNode* head) { + ListNode *curr=head; + int n=0; + while(head->next!=NULL) + { + n++; + head=head->next; + } + int res=0; + head=curr; + while(head!=NULL) + { + res=res+((head->val)<next; + } + return res; + } +}; \ No newline at end of file diff --git a/CPP/Leetcode/1290-convert-binary-number-in-a-linked-list-to-integer/README.md b/CPP/Leetcode/1290-convert-binary-number-in-a-linked-list-to-integer/README.md new file mode 100644 index 00000000..f6278f64 --- /dev/null +++ b/CPP/Leetcode/1290-convert-binary-number-in-a-linked-list-to-integer/README.md @@ -0,0 +1,29 @@ +

1290. Convert Binary Number in a Linked List to Integer

Easy


Given head which is a reference node to a singly-linked list. The value of each node in the linked list is either 0 or 1. The linked list holds the binary representation of a number.

+ +

Return the decimal value of the number in the linked list.

+ +

The most significant bit is at the head of the linked list.

+ +

 

+

Example 1:

+ +
Input: head = [1,0,1]
+Output: 5
+Explanation: (101) in base 2 = (5) in base 10
+
+ +

Example 2:

+ +
Input: head = [0]
+Output: 0
+
+ +

 

+

Constraints:

+ +
    +
  • The Linked List is not empty.
  • +
  • Number of nodes will not exceed 30.
  • +
  • Each node's value is either 0 or 1.
  • +
+
\ No newline at end of file diff --git a/CPP/Leetcode/13-roman-to-integer/13-roman-to-integer.cpp b/CPP/Leetcode/13-roman-to-integer/13-roman-to-integer.cpp new file mode 100644 index 00000000..b888008a --- /dev/null +++ b/CPP/Leetcode/13-roman-to-integer/13-roman-to-integer.cpp @@ -0,0 +1,23 @@ +class Solution { +public: +int romanToInt(string s) { + map mp{ + {'I',1}, + {'V',5}, + {'X',10}, + {'L',50}, + {'C',100}, + {'D',500}, + {'M',1000}, + }; + int ans =0; + for(int i=0;i13. Roman to Integer

Easy


Roman numerals are represented by seven different symbols: I, V, X, L, C, D and M.

+ +
Symbol       Value
+I             1
+V             5
+X             10
+L             50
+C             100
+D             500
+M             1000
+ +

For example, 2 is written as II in Roman numeral, just two ones added together. 12 is written as XII, which is simply X + II. The number 27 is written as XXVII, which is XX + V + II.

+ +

Roman numerals are usually written largest to smallest from left to right. However, the numeral for four is not IIII. Instead, the number four is written as IV. Because the one is before the five we subtract it making four. The same principle applies to the number nine, which is written as IX. There are six instances where subtraction is used:

+ +
    +
  • I can be placed before V (5) and X (10) to make 4 and 9. 
  • +
  • X can be placed before L (50) and C (100) to make 40 and 90. 
  • +
  • C can be placed before D (500) and M (1000) to make 400 and 900.
  • +
+ +

Given a roman numeral, convert it to an integer.

+ +

 

+

Example 1:

+ +
Input: s = "III"
+Output: 3
+Explanation: III = 3.
+
+ +

Example 2:

+ +
Input: s = "LVIII"
+Output: 58
+Explanation: L = 50, V= 5, III = 3.
+
+ +

Example 3:

+ +
Input: s = "MCMXCIV"
+Output: 1994
+Explanation: M = 1000, CM = 900, XC = 90 and IV = 4.
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= s.length <= 15
  • +
  • s contains only the characters ('I', 'V', 'X', 'L', 'C', 'D', 'M').
  • +
  • It is guaranteed that s is a valid roman numeral in the range [1, 3999].
  • +
+
\ No newline at end of file diff --git a/CPP/Leetcode/1337-the-k-weakest-rows-in-a-matrix/1337-the-k-weakest-rows-in-a-matrix.cpp b/CPP/Leetcode/1337-the-k-weakest-rows-in-a-matrix/1337-the-k-weakest-rows-in-a-matrix.cpp new file mode 100644 index 00000000..12c4d3da --- /dev/null +++ b/CPP/Leetcode/1337-the-k-weakest-rows-in-a-matrix/1337-the-k-weakest-rows-in-a-matrix.cpp @@ -0,0 +1,21 @@ +class Solution { +public: + vector kWeakestRows(vector>& mat, int k) { + int n = mat.size(); + set> s; + for(int i=0;i v; + for(auto x:s) + { + if(k==0) break; + v.push_back(x.second); + k--; + } + return v; + + } +}; \ No newline at end of file diff --git a/CPP/Leetcode/1337-the-k-weakest-rows-in-a-matrix/README.md b/CPP/Leetcode/1337-the-k-weakest-rows-in-a-matrix/README.md new file mode 100644 index 00000000..38d0c1e3 --- /dev/null +++ b/CPP/Leetcode/1337-the-k-weakest-rows-in-a-matrix/README.md @@ -0,0 +1,61 @@ +

1337. The K Weakest Rows in a Matrix

Easy


You are given an m x n binary matrix mat of 1's (representing soldiers) and 0's (representing civilians). The soldiers are positioned in front of the civilians. That is, all the 1's will appear to the left of all the 0's in each row.

+ +

A row i is weaker than a row j if one of the following is true:

+ +
    +
  • The number of soldiers in row i is less than the number of soldiers in row j.
  • +
  • Both rows have the same number of soldiers and i < j.
  • +
+ +

Return the indices of the k weakest rows in the matrix ordered from weakest to strongest.

+ +

 

+

Example 1:

+ +
Input: mat = 
+[[1,1,0,0,0],
+ [1,1,1,1,0],
+ [1,0,0,0,0],
+ [1,1,0,0,0],
+ [1,1,1,1,1]], 
+k = 3
+Output: [2,0,3]
+Explanation: 
+The number of soldiers in each row is: 
+- Row 0: 2 
+- Row 1: 4 
+- Row 2: 1 
+- Row 3: 2 
+- Row 4: 5 
+The rows ordered from weakest to strongest are [2,0,3,1,4].
+
+ +

Example 2:

+ +
Input: mat = 
+[[1,0,0,0],
+ [1,1,1,1],
+ [1,0,0,0],
+ [1,0,0,0]], 
+k = 2
+Output: [0,2]
+Explanation: 
+The number of soldiers in each row is: 
+- Row 0: 1 
+- Row 1: 4 
+- Row 2: 1 
+- Row 3: 1 
+The rows ordered from weakest to strongest are [0,2,3,1].
+
+ +

 

+

Constraints:

+ +
    +
  • m == mat.length
  • +
  • n == mat[i].length
  • +
  • 2 <= n, m <= 100
  • +
  • 1 <= k <= m
  • +
  • matrix[i][j] is either 0 or 1.
  • +
+
\ No newline at end of file diff --git a/CPP/Leetcode/1342-number-of-steps-to-reduce-a-number-to-zero/1342-number-of-steps-to-reduce-a-number-to-zero.cpp b/CPP/Leetcode/1342-number-of-steps-to-reduce-a-number-to-zero/1342-number-of-steps-to-reduce-a-number-to-zero.cpp new file mode 100644 index 00000000..a5438b21 --- /dev/null +++ b/CPP/Leetcode/1342-number-of-steps-to-reduce-a-number-to-zero/1342-number-of-steps-to-reduce-a-number-to-zero.cpp @@ -0,0 +1,15 @@ +class Solution { +public: + int numberOfSteps(int num) { + int cnt=0; + while(num!=0) + { + if(num%2==0) num=num/2; + else num--; + cnt++; + } + return cnt; + + + } +}; \ No newline at end of file diff --git a/CPP/Leetcode/1342-number-of-steps-to-reduce-a-number-to-zero/NOTES.md b/CPP/Leetcode/1342-number-of-steps-to-reduce-a-number-to-zero/NOTES.md new file mode 100644 index 00000000..38c1374a --- /dev/null +++ b/CPP/Leetcode/1342-number-of-steps-to-reduce-a-number-to-zero/NOTES.md @@ -0,0 +1 @@ +​ \ No newline at end of file diff --git a/CPP/Leetcode/1342-number-of-steps-to-reduce-a-number-to-zero/README.md b/CPP/Leetcode/1342-number-of-steps-to-reduce-a-number-to-zero/README.md new file mode 100644 index 00000000..e26168cf --- /dev/null +++ b/CPP/Leetcode/1342-number-of-steps-to-reduce-a-number-to-zero/README.md @@ -0,0 +1,42 @@ +

1342. Number of Steps to Reduce a Number to Zero

Easy


Given an integer num, return the number of steps to reduce it to zero.

+ +

In one step, if the current number is even, you have to divide it by 2, otherwise, you have to subtract 1 from it.

+ +

 

+

Example 1:

+ +
Input: num = 14
+Output: 6
+Explanation: 
+Step 1) 14 is even; divide by 2 and obtain 7. 
+Step 2) 7 is odd; subtract 1 and obtain 6.
+Step 3) 6 is even; divide by 2 and obtain 3. 
+Step 4) 3 is odd; subtract 1 and obtain 2. 
+Step 5) 2 is even; divide by 2 and obtain 1. 
+Step 6) 1 is odd; subtract 1 and obtain 0.
+
+ +

Example 2:

+ +
Input: num = 8
+Output: 4
+Explanation: 
+Step 1) 8 is even; divide by 2 and obtain 4. 
+Step 2) 4 is even; divide by 2 and obtain 2. 
+Step 3) 2 is even; divide by 2 and obtain 1. 
+Step 4) 1 is odd; subtract 1 and obtain 0.
+
+ +

Example 3:

+ +
Input: num = 123
+Output: 12
+
+ +

 

+

Constraints:

+ +
    +
  • 0 <= num <= 106
  • +
+
\ No newline at end of file diff --git a/CPP/Leetcode/1346-check-if-n-and-its-double-exist/1346-check-if-n-and-its-double-exist.cpp b/CPP/Leetcode/1346-check-if-n-and-its-double-exist/1346-check-if-n-and-its-double-exist.cpp new file mode 100644 index 00000000..53860946 --- /dev/null +++ b/CPP/Leetcode/1346-check-if-n-and-its-double-exist/1346-check-if-n-and-its-double-exist.cpp @@ -0,0 +1,17 @@ +class Solution { +public: + bool checkIfExist(vector& arr) { + unordered_map mp; + for(int i=0;i0 && mp[arr[i]*2]>0 && arr[i]!=0) return true; + if(mp[arr[i]]>=2 && arr[i]==0) return true; + } + return false; + + } +}; \ No newline at end of file diff --git a/CPP/Leetcode/1346-check-if-n-and-its-double-exist/NOTES.md b/CPP/Leetcode/1346-check-if-n-and-its-double-exist/NOTES.md new file mode 100644 index 00000000..38c1374a --- /dev/null +++ b/CPP/Leetcode/1346-check-if-n-and-its-double-exist/NOTES.md @@ -0,0 +1 @@ +​ \ No newline at end of file diff --git a/CPP/Leetcode/136-single-number/136-single-number.cpp b/CPP/Leetcode/136-single-number/136-single-number.cpp new file mode 100644 index 00000000..1847afe3 --- /dev/null +++ b/CPP/Leetcode/136-single-number/136-single-number.cpp @@ -0,0 +1,12 @@ +class Solution { +public: + int singleNumber(vector& nums) { + int k=nums[0]; + for(int i=1;i136. Single Number

Easy


Given a non-empty array of integers nums, every element appears twice except for one. Find that single one.

+ +

You must implement a solution with a linear runtime complexity and use only constant extra space.

+ +

 

+

Example 1:

+
Input: nums = [2,2,1]
+Output: 1
+

Example 2:

+
Input: nums = [4,1,2,1,2]
+Output: 4
+

Example 3:

+
Input: nums = [1]
+Output: 1
+
+

 

+

Constraints:

+ +
    +
  • 1 <= nums.length <= 3 * 104
  • +
  • -3 * 104 <= nums[i] <= 3 * 104
  • +
  • Each element in the array appears twice except for one element which appears only once.
  • +
+
\ No newline at end of file diff --git a/CPP/Leetcode/14-longest-common-prefix/14-longest-common-prefix.cpp b/CPP/Leetcode/14-longest-common-prefix/14-longest-common-prefix.cpp new file mode 100644 index 00000000..45850faa --- /dev/null +++ b/CPP/Leetcode/14-longest-common-prefix/14-longest-common-prefix.cpp @@ -0,0 +1,19 @@ +class Solution { +public: + string longestCommonPrefix(vector& nums) { + + string res=""; + for(int i=0;i14. Longest Common Prefix

Easy


Write a function to find the longest common prefix string amongst an array of strings.

+ +

If there is no common prefix, return an empty string "".

+ +

 

+

Example 1:

+ +
Input: strs = ["flower","flow","flight"]
+Output: "fl"
+
+ +

Example 2:

+ +
Input: strs = ["dog","racecar","car"]
+Output: ""
+Explanation: There is no common prefix among the input strings.
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= strs.length <= 200
  • +
  • 0 <= strs[i].length <= 200
  • +
  • strs[i] consists of only lower-case English letters.
  • +
+
\ No newline at end of file diff --git a/CPP/Leetcode/1433-check-if-a-string-can-break-another-string/1433-check-if-a-string-can-break-another-string.cpp b/CPP/Leetcode/1433-check-if-a-string-can-break-another-string/1433-check-if-a-string-can-break-another-string.cpp new file mode 100644 index 00000000..bb3ffa31 --- /dev/null +++ b/CPP/Leetcode/1433-check-if-a-string-can-break-another-string/1433-check-if-a-string-can-break-another-string.cpp @@ -0,0 +1,27 @@ +class Solution { +public: + bool checkIfCanBreak(string s1, string s2) { + sort(s1.begin(),s1.end()); + sort(s2.begin(),s2.end()); + int f=0; + for(int i=0;i=s2[i]) continue; + else + { + f=1; + } + } + int g=0; + for(int i=0;i=s1[i]) continue; + else + { + g=1; + } + } + if(f==0 || g==0) return true; + else return false; + } +}; \ No newline at end of file diff --git a/CPP/Leetcode/1433-check-if-a-string-can-break-another-string/NOTES.md b/CPP/Leetcode/1433-check-if-a-string-can-break-another-string/NOTES.md new file mode 100644 index 00000000..38c1374a --- /dev/null +++ b/CPP/Leetcode/1433-check-if-a-string-can-break-another-string/NOTES.md @@ -0,0 +1 @@ +​ \ No newline at end of file diff --git a/CPP/Leetcode/1448-count-good-nodes-in-binary-tree/1448-count-good-nodes-in-binary-tree.cpp b/CPP/Leetcode/1448-count-good-nodes-in-binary-tree/1448-count-good-nodes-in-binary-tree.cpp new file mode 100644 index 00000000..915929f7 --- /dev/null +++ b/CPP/Leetcode/1448-count-good-nodes-in-binary-tree/1448-count-good-nodes-in-binary-tree.cpp @@ -0,0 +1,34 @@ +/** + * Definition for a binary tree node. + * struct TreeNode { + * int val; + * TreeNode *left; + * TreeNode *right; + * TreeNode() : val(0), left(nullptr), right(nullptr) {} + * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} + * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} + * }; + */ +class Solution { + + + +public: + int cnt=0; + void search(TreeNode *root,int max) + { + if(!root) return; + if(root->val >=max) + { + cnt++; + max=root->val; + } + search(root->left,max); + search(root->right,max); + } + + int goodNodes(TreeNode* root) { + search(root,root->val); + return cnt; + } +}; \ No newline at end of file diff --git a/CPP/Leetcode/1448-count-good-nodes-in-binary-tree/NOTES.md b/CPP/Leetcode/1448-count-good-nodes-in-binary-tree/NOTES.md new file mode 100644 index 00000000..38c1374a --- /dev/null +++ b/CPP/Leetcode/1448-count-good-nodes-in-binary-tree/NOTES.md @@ -0,0 +1 @@ +​ \ No newline at end of file diff --git a/CPP/Leetcode/1448-count-good-nodes-in-binary-tree/README.md b/CPP/Leetcode/1448-count-good-nodes-in-binary-tree/README.md new file mode 100644 index 00000000..e059058c --- /dev/null +++ b/CPP/Leetcode/1448-count-good-nodes-in-binary-tree/README.md @@ -0,0 +1,38 @@ +

1448. Count Good Nodes in Binary Tree

Medium


Given a binary tree root, a node X in the tree is named good if in the path from root to X there are no nodes with a value greater than X.

+ +

Return the number of good nodes in the binary tree.

+ +

 

+

Example 1:

+ +

+ +
Input: root = [3,1,4,3,null,1,5]
+Output: 4
+Explanation: Nodes in blue are good.
+Root Node (3) is always a good node.
+Node 4 -> (3,4) is the maximum value in the path starting from the root.
+Node 5 -> (3,4,5) is the maximum value in the path
+Node 3 -> (3,1,3) is the maximum value in the path.
+ +

Example 2:

+ +

+ +
Input: root = [3,3,null,4,2]
+Output: 3
+Explanation: Node 2 -> (3, 3, 2) is not good, because "3" is higher than it.
+ +

Example 3:

+ +
Input: root = [1]
+Output: 1
+Explanation: Root is considered as good.
+ +

 

+

Constraints:

+ +
    +
  • The number of nodes in the binary tree is in the range [1, 10^5].
  • +
  • Each node's value is between [-10^4, 10^4].
  • +
\ No newline at end of file diff --git a/CPP/Leetcode/1464-maximum-product-of-two-elements-in-an-array/1464-maximum-product-of-two-elements-in-an-array.cpp b/CPP/Leetcode/1464-maximum-product-of-two-elements-in-an-array/1464-maximum-product-of-two-elements-in-an-array.cpp new file mode 100644 index 00000000..e0f86b1e --- /dev/null +++ b/CPP/Leetcode/1464-maximum-product-of-two-elements-in-an-array/1464-maximum-product-of-two-elements-in-an-array.cpp @@ -0,0 +1,7 @@ +class Solution { +public: + int maxProduct(vector& nums) { + sort(nums.begin(),nums.end()); + return (nums[nums.size()-1]-1) * (nums[nums.size()-2]-1) ; + } +}; \ No newline at end of file diff --git a/CPP/Leetcode/1464-maximum-product-of-two-elements-in-an-array/NOTES.md b/CPP/Leetcode/1464-maximum-product-of-two-elements-in-an-array/NOTES.md new file mode 100644 index 00000000..38c1374a --- /dev/null +++ b/CPP/Leetcode/1464-maximum-product-of-two-elements-in-an-array/NOTES.md @@ -0,0 +1 @@ +​ \ No newline at end of file diff --git a/CPP/Leetcode/1480-running-sum-of-1d-array/1480-running-sum-of-1d-array.cpp b/CPP/Leetcode/1480-running-sum-of-1d-array/1480-running-sum-of-1d-array.cpp new file mode 100644 index 00000000..a74aa846 --- /dev/null +++ b/CPP/Leetcode/1480-running-sum-of-1d-array/1480-running-sum-of-1d-array.cpp @@ -0,0 +1,14 @@ +class Solution { +public: + vector runningSum(vector& nums) { + vector v; + int sum=0; + for(int i=0;i1480. Running Sum of 1d Array

Easy


Given an array nums. We define a running sum of an array as runningSum[i] = sum(nums[0]…nums[i]).

+ +

Return the running sum of nums.

+ +

 

+

Example 1:

+ +
Input: nums = [1,2,3,4]
+Output: [1,3,6,10]
+Explanation: Running sum is obtained as follows: [1, 1+2, 1+2+3, 1+2+3+4].
+ +

Example 2:

+ +
Input: nums = [1,1,1,1,1]
+Output: [1,2,3,4,5]
+Explanation: Running sum is obtained as follows: [1, 1+1, 1+1+1, 1+1+1+1, 1+1+1+1+1].
+ +

Example 3:

+ +
Input: nums = [3,1,2,10,1]
+Output: [3,4,6,16,17]
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= nums.length <= 1000
  • +
  • -10^6 <= nums[i] <= 10^6
  • +
\ No newline at end of file diff --git a/CPP/Leetcode/151-reverse-words-in-a-string/151-reverse-words-in-a-string.cpp b/CPP/Leetcode/151-reverse-words-in-a-string/151-reverse-words-in-a-string.cpp new file mode 100644 index 00000000..421091db --- /dev/null +++ b/CPP/Leetcode/151-reverse-words-in-a-string/151-reverse-words-in-a-string.cpp @@ -0,0 +1,53 @@ +class Solution { +public: + string reverseWords(string s) { + string S=s; + int len = S.length(); + + string res = "", tmp = ""; + + stack ss; + + + + for(int i=0; i 1) + + res += ' '; + + ss.pop(); + + } + + + + return res; + } +}; \ No newline at end of file diff --git a/CPP/Leetcode/151-reverse-words-in-a-string/README.md b/CPP/Leetcode/151-reverse-words-in-a-string/README.md new file mode 100644 index 00000000..2ef6f35d --- /dev/null +++ b/CPP/Leetcode/151-reverse-words-in-a-string/README.md @@ -0,0 +1,41 @@ +

151. Reverse Words in a String

Medium


Given an input string s, reverse the order of the words.

+ +

A word is defined as a sequence of non-space characters. The words in s will be separated by at least one space.

+ +

Return a string of the words in reverse order concatenated by a single space.

+ +

Note that s may contain leading or trailing spaces or multiple spaces between two words. The returned string should only have a single space separating the words. Do not include any extra spaces.

+ +

 

+

Example 1:

+ +
Input: s = "the sky is blue"
+Output: "blue is sky the"
+
+ +

Example 2:

+ +
Input: s = "  hello world  "
+Output: "world hello"
+Explanation: Your reversed string should not contain leading or trailing spaces.
+
+ +

Example 3:

+ +
Input: s = "a good   example"
+Output: "example good a"
+Explanation: You need to reduce multiple spaces between two words to a single space in the reversed string.
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= s.length <= 104
  • +
  • s contains English letters (upper-case and lower-case), digits, and spaces ' '.
  • +
  • There is at least one word in s.
  • +
+ +

 

+

Follow-up: If the string data type is mutable in your language, can you solve it in-place with O(1) extra space?

+
\ No newline at end of file diff --git a/CPP/Leetcode/1614-maximum-nesting-depth-of-the-parentheses/1614-maximum-nesting-depth-of-the-parentheses.cpp b/CPP/Leetcode/1614-maximum-nesting-depth-of-the-parentheses/1614-maximum-nesting-depth-of-the-parentheses.cpp new file mode 100644 index 00000000..67a5fd83 --- /dev/null +++ b/CPP/Leetcode/1614-maximum-nesting-depth-of-the-parentheses/1614-maximum-nesting-depth-of-the-parentheses.cpp @@ -0,0 +1,13 @@ +class Solution { +public: + int maxDepth(string s) { + int cnt=0; + int m=0; + for(int i=0;i next; + index ++; + } + deleted = keep; + + while (index != b + 1) { + keep = keep -> next; + index ++; + } + cat = keep; + deleted -> next = list2; + while (list2 -> next != nullptr) { + list2 = list2 -> next; + } + list2 -> next = cat; + return list1; + + } +}; \ No newline at end of file diff --git a/CPP/Leetcode/1669-merge-in-between-linked-lists/README.md b/CPP/Leetcode/1669-merge-in-between-linked-lists/README.md new file mode 100644 index 00000000..24db7a9d --- /dev/null +++ b/CPP/Leetcode/1669-merge-in-between-linked-lists/README.md @@ -0,0 +1,32 @@ +

1669. Merge In Between Linked Lists

Medium


You are given two linked lists: list1 and list2 of sizes n and m respectively.

+ +

Remove list1's nodes from the ath node to the bth node, and put list2 in their place.

+ +

The blue edges and nodes in the following figure indicate the result:

+ +

Build the result list and return its head.

+ +

 

+

Example 1:

+ +
Input: list1 = [0,1,2,3,4,5], a = 3, b = 4, list2 = [1000000,1000001,1000002]
+Output: [0,1,2,1000000,1000001,1000002,5]
+Explanation: We remove the nodes 3 and 4 and put the entire list2 in their place. The blue edges and nodes in the above figure indicate the result.
+
+ +

Example 2:

+ +
Input: list1 = [0,1,2,3,4,5,6], a = 2, b = 5, list2 = [1000000,1000001,1000002,1000003,1000004]
+Output: [0,1,1000000,1000001,1000002,1000003,1000004,6]
+Explanation: The blue edges and nodes in the above figure indicate the result.
+
+ +

 

+

Constraints:

+ +
    +
  • 3 <= list1.length <= 104
  • +
  • 1 <= a <= b < list1.length - 1
  • +
  • 1 <= list2.length <= 104
  • +
+
\ No newline at end of file diff --git a/CPP/Leetcode/167-two-sum-ii-input-array-is-sorted/167-two-sum-ii-input-array-is-sorted.cpp b/CPP/Leetcode/167-two-sum-ii-input-array-is-sorted/167-two-sum-ii-input-array-is-sorted.cpp new file mode 100644 index 00000000..e85c91dd --- /dev/null +++ b/CPP/Leetcode/167-two-sum-ii-input-array-is-sorted/167-two-sum-ii-input-array-is-sorted.cpp @@ -0,0 +1,23 @@ +class Solution { +public: + vector twoSum(vector& numbers, int target) { + int i=0,j=numbers.size()-1; + vector v; + while(i167. Two Sum II - Input Array Is Sorted

Medium


Given a 1-indexed array of integers numbers that is already sorted in non-decreasing order, find two numbers such that they add up to a specific target number. Let these two numbers be numbers[index1] and numbers[index2] where 1 <= index1 < index2 <= numbers.length.

+ +

Return the indices of the two numbers, index1 and index2, added by one as an integer array [index1, index2] of length 2.

+ +

The tests are generated such that there is exactly one solution. You may not use the same element twice.

+ +

Your solution must use only constant extra space.

+ +

 

+

Example 1:

+ +
Input: numbers = [2,7,11,15], target = 9
+Output: [1,2]
+Explanation: The sum of 2 and 7 is 9. Therefore, index1 = 1, index2 = 2. We return [1, 2].
+
+ +

Example 2:

+ +
Input: numbers = [2,3,4], target = 6
+Output: [1,3]
+Explanation: The sum of 2 and 4 is 6. Therefore index1 = 1, index2 = 3. We return [1, 3].
+
+ +

Example 3:

+ +
Input: numbers = [-1,0], target = -1
+Output: [1,2]
+Explanation: The sum of -1 and 0 is -1. Therefore index1 = 1, index2 = 2. We return [1, 2].
+
+ +

 

+

Constraints:

+ +
    +
  • 2 <= numbers.length <= 3 * 104
  • +
  • -1000 <= numbers[i] <= 1000
  • +
  • numbers is sorted in non-decreasing order.
  • +
  • -1000 <= target <= 1000
  • +
  • The tests are generated such that there is exactly one solution.
  • +
+
\ No newline at end of file diff --git a/CPP/Leetcode/1679-max-number-of-k-sum-pairs/1679-max-number-of-k-sum-pairs.cpp b/CPP/Leetcode/1679-max-number-of-k-sum-pairs/1679-max-number-of-k-sum-pairs.cpp new file mode 100644 index 00000000..1b4cf070 --- /dev/null +++ b/CPP/Leetcode/1679-max-number-of-k-sum-pairs/1679-max-number-of-k-sum-pairs.cpp @@ -0,0 +1,14 @@ +class Solution { +public: + int maxOperations(vector& nums, int k) { + unordered_map mp; + int cnt = 0; + for(auto it: nums) + { + int x = k - it; + if(mp[x] > 0){cnt++; mp[x]--;} + else mp[it]++; + } + return cnt; + } +}; \ No newline at end of file diff --git a/CPP/Leetcode/1679-max-number-of-k-sum-pairs/NOTES.md b/CPP/Leetcode/1679-max-number-of-k-sum-pairs/NOTES.md new file mode 100644 index 00000000..38c1374a --- /dev/null +++ b/CPP/Leetcode/1679-max-number-of-k-sum-pairs/NOTES.md @@ -0,0 +1 @@ +​ \ No newline at end of file diff --git a/CPP/Leetcode/1679-max-number-of-k-sum-pairs/README.md b/CPP/Leetcode/1679-max-number-of-k-sum-pairs/README.md new file mode 100644 index 00000000..2de99b4a --- /dev/null +++ b/CPP/Leetcode/1679-max-number-of-k-sum-pairs/README.md @@ -0,0 +1,33 @@ +

1679. Max Number of K-Sum Pairs

Medium


You are given an integer array nums and an integer k.

+ +

In one operation, you can pick two numbers from the array whose sum equals k and remove them from the array.

+ +

Return the maximum number of operations you can perform on the array.

+ +

 

+

Example 1:

+ +
Input: nums = [1,2,3,4], k = 5
+Output: 2
+Explanation: Starting with nums = [1,2,3,4]:
+- Remove numbers 1 and 4, then nums = [2,3]
+- Remove numbers 2 and 3, then nums = []
+There are no more pairs that sum up to 5, hence a total of 2 operations.
+ +

Example 2:

+ +
Input: nums = [3,1,3,4,3], k = 6
+Output: 1
+Explanation: Starting with nums = [3,1,3,4,3]:
+- Remove the first two 3's, then nums = [1,4,3]
+There are no more pairs that sum up to 6, hence a total of 1 operation.
+ +

 

+

Constraints:

+ +
    +
  • 1 <= nums.length <= 105
  • +
  • 1 <= nums[i] <= 109
  • +
  • 1 <= k <= 109
  • +
+
\ No newline at end of file diff --git a/CPP/Leetcode/1721-swapping-nodes-in-a-linked-list/1721-swapping-nodes-in-a-linked-list.cpp b/CPP/Leetcode/1721-swapping-nodes-in-a-linked-list/1721-swapping-nodes-in-a-linked-list.cpp new file mode 100644 index 00000000..47968dda --- /dev/null +++ b/CPP/Leetcode/1721-swapping-nodes-in-a-linked-list/1721-swapping-nodes-in-a-linked-list.cpp @@ -0,0 +1,46 @@ +/** + * Definition for singly-linked list. + * struct ListNode { + * int val; + * ListNode *next; + * ListNode() : val(0), next(nullptr) {} + * ListNode(int x) : val(x), next(nullptr) {} + * ListNode(int x, ListNode *next) : val(x), next(next) {} + * }; + */ +class Solution { +public: + ListNode* swapNodes(ListNode* head, int k) { + ListNode *curr=head; + ListNode *node=head; + ListNode *hehe=head; + int n=0; + while(hehe->next!=NULL) + { + hehe=hehe->next; + n++; + } + int i=1; + while(i!=k) + { + curr=curr->next; + i++; + } + i=0; + while(i!=(n-k+1)) + { + node=node->next; + i++; + } + int temp=curr->val; + curr->val=node->val; + node->val=temp; + return head; + + + } +}; + + + + \ No newline at end of file diff --git a/CPP/Leetcode/1721-swapping-nodes-in-a-linked-list/NOTES.md b/CPP/Leetcode/1721-swapping-nodes-in-a-linked-list/NOTES.md new file mode 100644 index 00000000..38c1374a --- /dev/null +++ b/CPP/Leetcode/1721-swapping-nodes-in-a-linked-list/NOTES.md @@ -0,0 +1 @@ +​ \ No newline at end of file diff --git a/CPP/Leetcode/1721-swapping-nodes-in-a-linked-list/README.md b/CPP/Leetcode/1721-swapping-nodes-in-a-linked-list/README.md new file mode 100644 index 00000000..e84ddbb8 --- /dev/null +++ b/CPP/Leetcode/1721-swapping-nodes-in-a-linked-list/README.md @@ -0,0 +1,26 @@ +

1721. Swapping Nodes in a Linked List

Medium


You are given the head of a linked list, and an integer k.

+ +

Return the head of the linked list after swapping the values of the kth node from the beginning and the kth node from the end (the list is 1-indexed).

+ +

 

+

Example 1:

+ +
Input: head = [1,2,3,4,5], k = 2
+Output: [1,4,3,2,5]
+
+ +

Example 2:

+ +
Input: head = [7,9,6,6,7,8,3,0,9,5], k = 5
+Output: [7,9,6,6,8,7,3,0,9,5]
+
+ +

 

+

Constraints:

+ +
    +
  • The number of nodes in the list is n.
  • +
  • 1 <= k <= n <= 105
  • +
  • 0 <= Node.val <= 100
  • +
+
\ No newline at end of file diff --git a/CPP/Leetcode/1752-check-if-array-is-sorted-and-rotated/README.md b/CPP/Leetcode/1752-check-if-array-is-sorted-and-rotated/README.md new file mode 100644 index 00000000..94dd3a45 --- /dev/null +++ b/CPP/Leetcode/1752-check-if-array-is-sorted-and-rotated/README.md @@ -0,0 +1,38 @@ +

1752. Check if Array Is Sorted and Rotated

Easy


Given an array nums, return true if the array was originally sorted in non-decreasing order, then rotated some number of positions (including zero). Otherwise, return false.

+ +

There may be duplicates in the original array.

+ +

Note: An array A rotated by x positions results in an array B of the same length such that A[i] == B[(i+x) % A.length], where % is the modulo operation.

+ +

 

+

Example 1:

+ +
Input: nums = [3,4,5,1,2]
+Output: true
+Explanation: [1,2,3,4,5] is the original sorted array.
+You can rotate the array by x = 3 positions to begin on the the element of value 3: [3,4,5,1,2].
+
+ +

Example 2:

+ +
Input: nums = [2,1,3,4]
+Output: false
+Explanation: There is no sorted array once rotated that can make nums.
+
+ +

Example 3:

+ +
Input: nums = [1,2,3]
+Output: true
+Explanation: [1,2,3] is the original sorted array.
+You can rotate the array by x = 0 positions (i.e. no rotation) to make nums.
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= nums.length <= 100
  • +
  • 1 <= nums[i] <= 100
  • +
+
\ No newline at end of file diff --git a/CPP/Leetcode/1768-merge-strings-alternately/1768-merge-strings-alternately.cpp b/CPP/Leetcode/1768-merge-strings-alternately/1768-merge-strings-alternately.cpp new file mode 100644 index 00000000..8374cffb --- /dev/null +++ b/CPP/Leetcode/1768-merge-strings-alternately/1768-merge-strings-alternately.cpp @@ -0,0 +1,30 @@ +class Solution { +public: + string mergeAlternately(string word1, string word2) { + string ans=""; + int n=word1.length(); + int m=word2.length(); + int i=0; + for(i=0;i1768. Merge Strings Alternately

Easy


You are given two strings word1 and word2. Merge the strings by adding letters in alternating order, starting with word1. If a string is longer than the other, append the additional letters onto the end of the merged string.

+ +

Return the merged string.

+ +

 

+

Example 1:

+ +
Input: word1 = "abc", word2 = "pqr"
+Output: "apbqcr"
+Explanation: The merged string will be merged as so:
+word1:  a   b   c
+word2:    p   q   r
+merged: a p b q c r
+
+ +

Example 2:

+ +
Input: word1 = "ab", word2 = "pqrs"
+Output: "apbqrs"
+Explanation: Notice that as word2 is longer, "rs" is appended to the end.
+word1:  a   b 
+word2:    p   q   r   s
+merged: a p b q   r   s
+
+ +

Example 3:

+ +
Input: word1 = "abcd", word2 = "pq"
+Output: "apbqcd"
+Explanation: Notice that as word1 is longer, "cd" is appended to the end.
+word1:  a   b   c   d
+word2:    p   q 
+merged: a p b q c   d
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= word1.length, word2.length <= 100
  • +
  • word1 and word2 consist of lowercase English letters.
  • +
\ No newline at end of file diff --git a/CPP/Leetcode/1832-check-if-the-sentence-is-pangram/1832-check-if-the-sentence-is-pangram.cpp b/CPP/Leetcode/1832-check-if-the-sentence-is-pangram/1832-check-if-the-sentence-is-pangram.cpp new file mode 100644 index 00000000..44e4fef4 --- /dev/null +++ b/CPP/Leetcode/1832-check-if-the-sentence-is-pangram/1832-check-if-the-sentence-is-pangram.cpp @@ -0,0 +1,16 @@ +class Solution { +public: + bool checkIfPangram(string sentence) { + unordered_map mp; + for(int i=0;i1832. Check if the Sentence Is Pangram

Easy


A pangram is a sentence where every letter of the English alphabet appears at least once.

+ +

Given a string sentence containing only lowercase English letters, return true if sentence is a pangram, or false otherwise.

+ +

 

+

Example 1:

+ +
Input: sentence = "thequickbrownfoxjumpsoverthelazydog"
+Output: true
+Explanation: sentence contains at least one of every letter of the English alphabet.
+
+ +

Example 2:

+ +
Input: sentence = "leetcode"
+Output: false
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= sentence.length <= 1000
  • +
  • sentence consists of lowercase English letters.
  • +
+
\ No newline at end of file diff --git a/CPP/Leetcode/1859-sorting-the-sentence/1859-sorting-the-sentence.cpp b/CPP/Leetcode/1859-sorting-the-sentence/1859-sorting-the-sentence.cpp new file mode 100644 index 00000000..8926f33d --- /dev/null +++ b/CPP/Leetcode/1859-sorting-the-sentence/1859-sorting-the-sentence.cpp @@ -0,0 +1,26 @@ +class Solution { +public: + string sortSentence(string s) { + vector> v; + string k=""; + for(int i=0;i='1' && s[i]<='9') + { + v.push_back({s[i],k}); + k=""; + i++; + } + else k=k+s[i]; + } + sort(v.begin(),v.end()); + string s1=""; + for(int i=0;i1859. Sorting the Sentence

Easy


A sentence is a list of words that are separated by a single space with no leading or trailing spaces. Each word consists of lowercase and uppercase English letters.

+ +

A sentence can be shuffled by appending the 1-indexed word position to each word then rearranging the words in the sentence.

+ +
    +
  • For example, the sentence "This is a sentence" can be shuffled as "sentence4 a3 is2 This1" or "is2 sentence4 This1 a3".
  • +
+ +

Given a shuffled sentence s containing no more than 9 words, reconstruct and return the original sentence.

+ +

 

+

Example 1:

+ +
Input: s = "is2 sentence4 This1 a3"
+Output: "This is a sentence"
+Explanation: Sort the words in s to their original positions "This1 is2 a3 sentence4", then remove the numbers.
+
+ +

Example 2:

+ +
Input: s = "Myself2 Me1 I4 and3"
+Output: "Me Myself and I"
+Explanation: Sort the words in s to their original positions "Me1 Myself2 and3 I4", then remove the numbers.
+
+ +

 

+

Constraints:

+ +
    +
  • 2 <= s.length <= 200
  • +
  • s consists of lowercase and uppercase English letters, spaces, and digits from 1 to 9.
  • +
  • The number of words in s is between 1 and 9.
  • +
  • The words in s are separated by a single space.
  • +
  • s contains no leading or trailing spaces.
  • +
\ No newline at end of file diff --git a/CPP/Leetcode/189-rotate-array/NOTES.md b/CPP/Leetcode/189-rotate-array/NOTES.md new file mode 100644 index 00000000..38c1374a --- /dev/null +++ b/CPP/Leetcode/189-rotate-array/NOTES.md @@ -0,0 +1 @@ +​ \ No newline at end of file diff --git a/CPP/Leetcode/189-rotate-array/README.md b/CPP/Leetcode/189-rotate-array/README.md new file mode 100644 index 00000000..71648397 --- /dev/null +++ b/CPP/Leetcode/189-rotate-array/README.md @@ -0,0 +1,39 @@ +

189. Rotate Array

Medium


Given an array, rotate the array to the right by k steps, where k is non-negative.

+ +

 

+

Example 1:

+ +
Input: nums = [1,2,3,4,5,6,7], k = 3
+Output: [5,6,7,1,2,3,4]
+Explanation:
+rotate 1 steps to the right: [7,1,2,3,4,5,6]
+rotate 2 steps to the right: [6,7,1,2,3,4,5]
+rotate 3 steps to the right: [5,6,7,1,2,3,4]
+
+ +

Example 2:

+ +
Input: nums = [-1,-100,3,99], k = 2
+Output: [3,99,-1,-100]
+Explanation: 
+rotate 1 steps to the right: [99,-1,-100,3]
+rotate 2 steps to the right: [3,99,-1,-100]
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= nums.length <= 105
  • +
  • -231 <= nums[i] <= 231 - 1
  • +
  • 0 <= k <= 105
  • +
+ +

 

+

Follow up:

+ +
    +
  • Try to come up with as many solutions as you can. There are at least three different ways to solve this problem.
  • +
  • Could you do it in-place with O(1) extra space?
  • +
+
\ No newline at end of file diff --git a/CPP/Leetcode/19-remove-nth-node-from-end-of-list/19-remove-nth-node-from-end-of-list.cpp b/CPP/Leetcode/19-remove-nth-node-from-end-of-list/19-remove-nth-node-from-end-of-list.cpp new file mode 100644 index 00000000..619e44e8 --- /dev/null +++ b/CPP/Leetcode/19-remove-nth-node-from-end-of-list/19-remove-nth-node-from-end-of-list.cpp @@ -0,0 +1,40 @@ +/** + * Definition for singly-linked list. + * struct ListNode { + * int val; + * ListNode *next; + * ListNode() : val(0), next(nullptr) {} + * ListNode(int x) : val(x), next(nullptr) {} + * ListNode(int x, ListNode *next) : val(x), next(next) {} + * }; + */ +class Solution { +public: + ListNode* removeNthFromEnd(ListNode* head, int n) { + ListNode* ptr=head; //count the nodes + int k=0; + + while(ptr!=NULL){ + k++; + ptr=ptr->next; + } + + k=k-n; + + //make the pointer to connext the head with dummy node and the ptr to head + ListNode* dum= new ListNode(-1); + dum->next=head; + ptr=dum; + //run the loop until count not zero + while(k!=0){ + ptr=ptr->next; + k--; + } + //make the connection + + ptr->next=ptr->next->next; + + +return dum->next; + } +}; \ No newline at end of file diff --git a/CPP/Leetcode/19-remove-nth-node-from-end-of-list/README.md b/CPP/Leetcode/19-remove-nth-node-from-end-of-list/README.md new file mode 100644 index 00000000..8d4110a9 --- /dev/null +++ b/CPP/Leetcode/19-remove-nth-node-from-end-of-list/README.md @@ -0,0 +1,34 @@ +

19. Remove Nth Node From End of List

Medium


Given the head of a linked list, remove the nth node from the end of the list and return its head.

+ +

 

+

Example 1:

+ +
Input: head = [1,2,3,4,5], n = 2
+Output: [1,2,3,5]
+
+ +

Example 2:

+ +
Input: head = [1], n = 1
+Output: []
+
+ +

Example 3:

+ +
Input: head = [1,2], n = 1
+Output: [1]
+
+ +

 

+

Constraints:

+ +
    +
  • The number of nodes in the list is sz.
  • +
  • 1 <= sz <= 30
  • +
  • 0 <= Node.val <= 100
  • +
  • 1 <= n <= sz
  • +
+ +

 

+

Follow up: Could you do this in one pass?

+
\ No newline at end of file diff --git a/CPP/Leetcode/191-number-of-1-bits/191-number-of-1-bits.cpp b/CPP/Leetcode/191-number-of-1-bits/191-number-of-1-bits.cpp new file mode 100644 index 00000000..0d0a5e03 --- /dev/null +++ b/CPP/Leetcode/191-number-of-1-bits/191-number-of-1-bits.cpp @@ -0,0 +1,13 @@ +class Solution { +public: + int hammingWeight(uint32_t n) { + unsigned int count = 0; + while (n) + { + n &= (n-1) ; + count++; + } + return count; + + } +}; \ No newline at end of file diff --git a/CPP/Leetcode/191-number-of-1-bits/NOTES.md b/CPP/Leetcode/191-number-of-1-bits/NOTES.md new file mode 100644 index 00000000..38c1374a --- /dev/null +++ b/CPP/Leetcode/191-number-of-1-bits/NOTES.md @@ -0,0 +1 @@ +​ \ No newline at end of file diff --git a/CPP/Leetcode/1941-check-if-all-characters-have-equal-number-of-occurrences/1941-check-if-all-characters-have-equal-number-of-occurrences.cpp b/CPP/Leetcode/1941-check-if-all-characters-have-equal-number-of-occurrences/1941-check-if-all-characters-have-equal-number-of-occurrences.cpp new file mode 100644 index 00000000..49edf0ac --- /dev/null +++ b/CPP/Leetcode/1941-check-if-all-characters-have-equal-number-of-occurrences/1941-check-if-all-characters-have-equal-number-of-occurrences.cpp @@ -0,0 +1,20 @@ +class Solution { +public: + bool areOccurrencesEqual(string s) { + unordered_map mp; + for(int i=0;i1941. Check if All Characters Have Equal Number of Occurrences

Easy


Given a string s, return true if s is a good string, or false otherwise.

+ +

A string s is good if all the characters that appear in s have the same number of occurrences (i.e., the same frequency).

+ +

 

+

Example 1:

+ +
Input: s = "abacbc"
+Output: true
+Explanation: The characters that appear in s are 'a', 'b', and 'c'. All characters occur 2 times in s.
+
+ +

Example 2:

+ +
Input: s = "aaabb"
+Output: false
+Explanation: The characters that appear in s are 'a' and 'b'.
+'a' occurs 3 times while 'b' occurs 2 times, which is not the same number of times.
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= s.length <= 1000
  • +
  • s consists of lowercase English letters.
  • +
+
\ No newline at end of file diff --git a/CPP/Leetcode/20-valid-parentheses/20-valid-parentheses.cpp b/CPP/Leetcode/20-valid-parentheses/20-valid-parentheses.cpp new file mode 100644 index 00000000..d69de511 --- /dev/null +++ b/CPP/Leetcode/20-valid-parentheses/20-valid-parentheses.cpp @@ -0,0 +1,24 @@ +class Solution { +public: + bool isValid(string s) { + stack st; + for(int i=0;i20. Valid Parentheses

Easy


Given a string s containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid.

+ +

An input string is valid if:

+ +
    +
  1. Open brackets must be closed by the same type of brackets.
  2. +
  3. Open brackets must be closed in the correct order.
  4. +
+ +

 

+

Example 1:

+ +
Input: s = "()"
+Output: true
+
+ +

Example 2:

+ +
Input: s = "()[]{}"
+Output: true
+
+ +

Example 3:

+ +
Input: s = "(]"
+Output: false
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= s.length <= 104
  • +
  • s consists of parentheses only '()[]{}'.
  • +
+
\ No newline at end of file diff --git a/CPP/Leetcode/2007-find-original-array-from-doubled-array/2007-find-original-array-from-doubled-array.cpp b/CPP/Leetcode/2007-find-original-array-from-doubled-array/2007-find-original-array-from-doubled-array.cpp new file mode 100644 index 00000000..2222bc69 --- /dev/null +++ b/CPP/Leetcode/2007-find-original-array-from-doubled-array/2007-find-original-array-from-doubled-array.cpp @@ -0,0 +1,27 @@ +class Solution { +public: + vector findOriginalArray(vector& changed) { + vector v; + sort(changed.begin(),changed.end()); + map mp; + for(int i=0;i& operations) { + int x=0; + for(int i=0;i targetIndices(vector& nums, int target) { + sort(nums.begin(),nums.end()); + int n=nums.size(); + vector v; + for(int i=0;i2089. Find Target Indices After Sorting Array

Easy


You are given a 0-indexed integer array nums and a target element target.

+ +

A target index is an index i such that nums[i] == target.

+ +

Return a list of the target indices of nums after sorting nums in non-decreasing order. If there are no target indices, return an empty list. The returned list must be sorted in increasing order.

+ +

 

+

Example 1:

+ +
Input: nums = [1,2,5,2,3], target = 2
+Output: [1,2]
+Explanation: After sorting, nums is [1,2,2,3,5].
+The indices where nums[i] == 2 are 1 and 2.
+
+ +

Example 2:

+ +
Input: nums = [1,2,5,2,3], target = 3
+Output: [3]
+Explanation: After sorting, nums is [1,2,2,3,5].
+The index where nums[i] == 3 is 3.
+
+ +

Example 3:

+ +
Input: nums = [1,2,5,2,3], target = 5
+Output: [4]
+Explanation: After sorting, nums is [1,2,2,3,5].
+The index where nums[i] == 5 is 4.
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= nums.length <= 100
  • +
  • 1 <= nums[i], target <= 100
  • +
+
\ No newline at end of file diff --git a/CPP/Leetcode/2125-number-of-laser-beams-in-a-bank/2125-number-of-laser-beams-in-a-bank.cpp b/CPP/Leetcode/2125-number-of-laser-beams-in-a-bank/2125-number-of-laser-beams-in-a-bank.cpp new file mode 100644 index 00000000..c0f47dae --- /dev/null +++ b/CPP/Leetcode/2125-number-of-laser-beams-in-a-bank/2125-number-of-laser-beams-in-a-bank.cpp @@ -0,0 +1,28 @@ +class Solution { +public: + int numberOfBeams(vector& bank) { + int f=0; + vector v; + int cnt=0; + for(int i=0;i2125. Number of Laser Beams in a Bank

Medium


Anti-theft security devices are activated inside a bank. You are given a 0-indexed binary string array bank representing the floor plan of the bank, which is an m x n 2D matrix. bank[i] represents the ith row, consisting of '0's and '1's. '0' means the cell is empty, while'1' means the cell has a security device.

+ +

There is one laser beam between any two security devices if both conditions are met:

+ +
    +
  • The two devices are located on two different rows: r1 and r2, where r1 < r2.
  • +
  • For each row i where r1 < i < r2, there are no security devices in the ith row.
  • +
+ +

Laser beams are independent, i.e., one beam does not interfere nor join with another.

+ +

Return the total number of laser beams in the bank.

+ +

 

+

Example 1:

+ +
Input: bank = ["011001","000000","010100","001000"]
+Output: 8
+Explanation: Between each of the following device pairs, there is one beam. In total, there are 8 beams:
+ * bank[0][1] -- bank[2][1]
+ * bank[0][1] -- bank[2][3]
+ * bank[0][2] -- bank[2][1]
+ * bank[0][2] -- bank[2][3]
+ * bank[0][5] -- bank[2][1]
+ * bank[0][5] -- bank[2][3]
+ * bank[2][1] -- bank[3][2]
+ * bank[2][3] -- bank[3][2]
+Note that there is no beam between any device on the 0th row with any on the 3rd row.
+This is because the 2nd row contains security devices, which breaks the second condition.
+
+ +

Example 2:

+ +
Input: bank = ["000","111","000"]
+Output: 0
+Explanation: There does not exist two devices located on two different rows.
+
+ +

 

+

Constraints:

+ +
    +
  • m == bank.length
  • +
  • n == bank[i].length
  • +
  • 1 <= m, n <= 500
  • +
  • bank[i][j] is either '0' or '1'.
  • +
+
\ No newline at end of file diff --git a/CPP/Leetcode/2130-maximum-twin-sum-of-a-linked-list/README.md b/CPP/Leetcode/2130-maximum-twin-sum-of-a-linked-list/README.md new file mode 100644 index 00000000..b3543c2a --- /dev/null +++ b/CPP/Leetcode/2130-maximum-twin-sum-of-a-linked-list/README.md @@ -0,0 +1,48 @@ +

2130. Maximum Twin Sum of a Linked List

Medium


In a linked list of size n, where n is even, the ith node (0-indexed) of the linked list is known as the twin of the (n-1-i)th node, if 0 <= i <= (n / 2) - 1.

+ +
    +
  • For example, if n = 4, then node 0 is the twin of node 3, and node 1 is the twin of node 2. These are the only nodes with twins for n = 4.
  • +
+ +

The twin sum is defined as the sum of a node and its twin.

+ +

Given the head of a linked list with even length, return the maximum twin sum of the linked list.

+ +

 

+

Example 1:

+ +
Input: head = [5,4,2,1]
+Output: 6
+Explanation:
+Nodes 0 and 1 are the twins of nodes 3 and 2, respectively. All have twin sum = 6.
+There are no other nodes with twins in the linked list.
+Thus, the maximum twin sum of the linked list is 6. 
+
+ +

Example 2:

+ +
Input: head = [4,2,2,3]
+Output: 7
+Explanation:
+The nodes with twins present in this linked list are:
+- Node 0 is the twin of node 3 having a twin sum of 4 + 3 = 7.
+- Node 1 is the twin of node 2 having a twin sum of 2 + 2 = 4.
+Thus, the maximum twin sum of the linked list is max(7, 4) = 7. 
+
+ +

Example 3:

+ +
Input: head = [1,100000]
+Output: 100001
+Explanation:
+There is only one node with a twin in the linked list having twin sum of 1 + 100000 = 100001.
+
+ +

 

+

Constraints:

+ +
    +
  • The number of nodes in the list is an even integer in the range [2, 105].
  • +
  • 1 <= Node.val <= 105
  • +
+
\ No newline at end of file diff --git a/CPP/Leetcode/2149-rearrange-array-elements-by-sign/2149-rearrange-array-elements-by-sign.cpp b/CPP/Leetcode/2149-rearrange-array-elements-by-sign/2149-rearrange-array-elements-by-sign.cpp new file mode 100644 index 00000000..c53bec96 --- /dev/null +++ b/CPP/Leetcode/2149-rearrange-array-elements-by-sign/2149-rearrange-array-elements-by-sign.cpp @@ -0,0 +1,21 @@ +class Solution { +public: + vector rearrangeArray(vector& nums) { + vector neg; + vector pos; + for(int i=0;i v; + for(int i=0;i2149. Rearrange Array Elements by Sign

Medium


You are given a 0-indexed integer array nums of even length consisting of an equal number of positive and negative integers.

+ +

You should rearrange the elements of nums such that the modified array follows the given conditions:

+ +
    +
  1. Every consecutive pair of integers have opposite signs.
  2. +
  3. For all integers with the same sign, the order in which they were present in nums is preserved.
  4. +
  5. The rearranged array begins with a positive integer.
  6. +
+ +

Return the modified array after rearranging the elements to satisfy the aforementioned conditions.

+ +

 

+

Example 1:

+ +
Input: nums = [3,1,-2,-5,2,-4]
+Output: [3,-2,1,-5,2,-4]
+Explanation:
+The positive integers in nums are [3,1,2]. The negative integers are [-2,-5,-4].
+The only possible way to rearrange them such that they satisfy all conditions is [3,-2,1,-5,2,-4].
+Other ways such as [1,-2,2,-5,3,-4], [3,1,2,-2,-5,-4], [-2,3,-5,1,-4,2] are incorrect because they do not satisfy one or more conditions.  
+
+ +

Example 2:

+ +
Input: nums = [-1,1]
+Output: [1,-1]
+Explanation:
+1 is the only positive integer and -1 the only negative integer in nums.
+So nums is rearranged to [1,-1].
+
+ +

 

+

Constraints:

+ +
    +
  • 2 <= nums.length <= 2 * 105
  • +
  • nums.length is even
  • +
  • 1 <= |nums[i]| <= 105
  • +
  • nums consists of equal number of positive and negative integers.
  • +
+
\ No newline at end of file diff --git a/CPP/Leetcode/2150-find-all-lonely-numbers-in-the-array/2150-find-all-lonely-numbers-in-the-array.cpp b/CPP/Leetcode/2150-find-all-lonely-numbers-in-the-array/2150-find-all-lonely-numbers-in-the-array.cpp new file mode 100644 index 00000000..6dbcc3b2 --- /dev/null +++ b/CPP/Leetcode/2150-find-all-lonely-numbers-in-the-array/2150-find-all-lonely-numbers-in-the-array.cpp @@ -0,0 +1,17 @@ +class Solution { +public: + vector findLonely(vector& nums) { + unordered_map mp; + for(int i=0;i v; + for(int i=0;i2150. Find All Lonely Numbers in the Array

Medium


You are given an integer array nums. A number x is lonely when it appears only once, and no adjacent numbers (i.e. x + 1 and x - 1) appear in the array.

+ +

Return all lonely numbers in nums. You may return the answer in any order.

+ +

 

+

Example 1:

+ +
Input: nums = [10,6,5,8]
+Output: [10,8]
+Explanation: 
+- 10 is a lonely number since it appears exactly once and 9 and 11 does not appear in nums.
+- 8 is a lonely number since it appears exactly once and 7 and 9 does not appear in nums.
+- 5 is not a lonely number since 6 appears in nums and vice versa.
+Hence, the lonely numbers in nums are [10, 8].
+Note that [8, 10] may also be returned.
+
+ +

Example 2:

+ +
Input: nums = [1,3,5,3]
+Output: [1,5]
+Explanation: 
+- 1 is a lonely number since it appears exactly once and 0 and 2 does not appear in nums.
+- 5 is a lonely number since it appears exactly once and 4 and 6 does not appear in nums.
+- 3 is not a lonely number since it appears twice.
+Hence, the lonely numbers in nums are [1, 5].
+Note that [5, 1] may also be returned.
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= nums.length <= 105
  • +
  • 0 <= nums[i] <= 106
  • +
+
\ No newline at end of file diff --git a/CPP/Leetcode/2164-sort-even-and-odd-indices-independently/README.md b/CPP/Leetcode/2164-sort-even-and-odd-indices-independently/README.md new file mode 100644 index 00000000..5085b16b --- /dev/null +++ b/CPP/Leetcode/2164-sort-even-and-odd-indices-independently/README.md @@ -0,0 +1,48 @@ +

2164. Sort Even and Odd Indices Independently

Easy


You are given a 0-indexed integer array nums. Rearrange the values of nums according to the following rules:

+ +
    +
  1. Sort the values at odd indices of nums in non-increasing order. + +
      +
    • For example, if nums = [4,1,2,3] before this step, it becomes [4,3,2,1] after. The values at odd indices 1 and 3 are sorted in non-increasing order.
    • +
    +
  2. +
  3. Sort the values at even indices of nums in non-decreasing order. +
      +
    • For example, if nums = [4,1,2,3] before this step, it becomes [2,1,4,3] after. The values at even indices 0 and 2 are sorted in non-decreasing order.
    • +
    +
  4. +
+ +

Return the array formed after rearranging the values of nums.

+ +

 

+

Example 1:

+ +
Input: nums = [4,1,2,3]
+Output: [2,3,4,1]
+Explanation: 
+First, we sort the values present at odd indices (1 and 3) in non-increasing order.
+So, nums changes from [4,1,2,3] to [4,3,2,1].
+Next, we sort the values present at even indices (0 and 2) in non-decreasing order.
+So, nums changes from [4,1,2,3] to [2,3,4,1].
+Thus, the array formed after rearranging the values is [2,3,4,1].
+
+ +

Example 2:

+ +
Input: nums = [2,1]
+Output: [2,1]
+Explanation: 
+Since there is exactly one odd index and one even index, no rearrangement of values takes place.
+The resultant array formed is [2,1], which is the same as the initial array. 
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= nums.length <= 100
  • +
  • 1 <= nums[i] <= 100
  • +
+
\ No newline at end of file diff --git a/CPP/Leetcode/2181-merge-nodes-in-between-zeros/2181-merge-nodes-in-between-zeros.cpp b/CPP/Leetcode/2181-merge-nodes-in-between-zeros/2181-merge-nodes-in-between-zeros.cpp new file mode 100644 index 00000000..d6e8c2c4 --- /dev/null +++ b/CPP/Leetcode/2181-merge-nodes-in-between-zeros/2181-merge-nodes-in-between-zeros.cpp @@ -0,0 +1,34 @@ +/** + * Definition for singly-linked list. + * struct ListNode { + * int val; + * ListNode *next; + * ListNode() : val(0), next(nullptr) {} + * ListNode(int x) : val(x), next(nullptr) {} + * ListNode(int x, ListNode *next) : val(x), next(next) {} + * }; + */ +class Solution { +public: + ListNode* mergeNodes(ListNode* head) { + ListNode *curr=head->next; + ListNode *n=head; + int cnt=0; + while(curr!=NULL) + { + if(curr->val!=0) + { + cnt+=curr->val; + } + else + { + n->next=curr; + curr->val=cnt; + cnt=0; + n=curr; + } + curr=curr->next; + } + return head->next; + } +}; \ No newline at end of file diff --git a/CPP/Leetcode/2181-merge-nodes-in-between-zeros/README.md b/CPP/Leetcode/2181-merge-nodes-in-between-zeros/README.md new file mode 100644 index 00000000..56a63a52 --- /dev/null +++ b/CPP/Leetcode/2181-merge-nodes-in-between-zeros/README.md @@ -0,0 +1,38 @@ +

2181. Merge Nodes in Between Zeros

Medium


You are given the head of a linked list, which contains a series of integers separated by 0's. The beginning and end of the linked list will have Node.val == 0.

+ +

For every two consecutive 0's, merge all the nodes lying in between them into a single node whose value is the sum of all the merged nodes. The modified list should not contain any 0's.

+ +

Return the head of the modified linked list.

+ +

 

+

Example 1:

+ +
Input: head = [0,3,1,0,4,5,2,0]
+Output: [4,11]
+Explanation: 
+The above figure represents the given linked list. The modified list contains
+- The sum of the nodes marked in green: 3 + 1 = 4.
+- The sum of the nodes marked in red: 4 + 5 + 2 = 11.
+
+ +

Example 2:

+ +
Input: head = [0,1,0,3,0,2,2,0]
+Output: [1,3,4]
+Explanation: 
+The above figure represents the given linked list. The modified list contains
+- The sum of the nodes marked in green: 1 = 1.
+- The sum of the nodes marked in red: 3 = 3.
+- The sum of the nodes marked in yellow: 2 + 2 = 4.
+
+ +

 

+

Constraints:

+ +
    +
  • The number of nodes in the list is in the range [3, 2 * 105].
  • +
  • 0 <= Node.val <= 1000
  • +
  • There are no two consecutive nodes with Node.val == 0.
  • +
  • The beginning and end of the linked list have Node.val == 0.
  • +
+
\ No newline at end of file diff --git a/CPP/Leetcode/2296-design-a-text-editor/2296-design-a-text-editor.cpp b/CPP/Leetcode/2296-design-a-text-editor/2296-design-a-text-editor.cpp new file mode 100644 index 00000000..a87faf5b --- /dev/null +++ b/CPP/Leetcode/2296-design-a-text-editor/2296-design-a-text-editor.cpp @@ -0,0 +1,64 @@ +class TextEditor { +private: + lista; + // If delete, will delete position cur - 1, not position cur. + list::iterator cur; +public: + TextEditor() { + a.clear(); + // For convenience. + a.push_back('A'); + cur = a.end(); + } + + void addText(string text) { + a.insert(cur, text.begin(), text.end()); + } + + int deleteText(int k) { + int cnt = 0; + // Move to the position that will be deleted. + cur--; + while(k--){ + if(cur==a.begin())break; + cnt++; + a.erase(cur--); + } + // Adjust the position of the cursor. + cur++; + return cnt; + } + + // Left 10 chars. + string solve() { + auto tt = cur; + tt--; + string ret; + int k = 10; + while(k--){ + if(tt==a.begin())break; + ret += (*(tt--)); + } + reverse(ret.begin(), ret.end()); + return ret; + } + + string cursorLeft(int k) { + while(k--){ + auto nxt = cur; + nxt--; + // Never move the cursor to the first position. + if(nxt==a.begin())break; + cur = nxt; + } + return solve(); + } + + string cursorRight(int k) { + while(k--){ + if(cur==a.end())break; + cur++; + } + return solve(); + } +}; \ No newline at end of file diff --git a/CPP/Leetcode/2296-design-a-text-editor/README.md b/CPP/Leetcode/2296-design-a-text-editor/README.md new file mode 100644 index 00000000..7aeee1f9 --- /dev/null +++ b/CPP/Leetcode/2296-design-a-text-editor/README.md @@ -0,0 +1,67 @@ +

2296. Design a Text Editor

Hard


Design a text editor with a cursor that can do the following:

+ +
    +
  • Add text to where the cursor is.
  • +
  • Delete text from where the cursor is (simulating the backspace key).
  • +
  • Move the cursor either left or right.
  • +
+ +

When deleting text, only characters to the left of the cursor will be deleted. The cursor will also remain within the actual text and cannot be moved beyond it. More formally, we have that 0 <= cursor.position <= currentText.length always holds.

+ +

Implement the TextEditor class:

+ +
    +
  • TextEditor() Initializes the object with empty text.
  • +
  • void addText(string text) Appends text to where the cursor is. The cursor ends to the right of text.
  • +
  • int deleteText(int k) Deletes k characters to the left of the cursor. Returns the number of characters actually deleted.
  • +
  • string cursorLeft(int k) Moves the cursor to the left k times. Returns the last min(10, len) characters to the left of the cursor, where len is the number of characters to the left of the cursor.
  • +
  • string cursorRight(int k) Moves the cursor to the right k times. Returns the last min(10, len) characters to the left of the cursor, where len is the number of characters to the left of the cursor.
  • +
+ +

 

+

Example 1:

+ +
Input
+["TextEditor", "addText", "deleteText", "addText", "cursorRight", "cursorLeft", "deleteText", "cursorLeft", "cursorRight"]
+[[], ["leetcode"], [4], ["practice"], [3], [8], [10], [2], [6]]
+Output
+[null, null, 4, null, "etpractice", "leet", 4, "", "practi"]
+
+Explanation
+TextEditor textEditor = new TextEditor(); // The current text is "|". (The '|' character represents the cursor)
+textEditor.addText("leetcode"); // The current text is "leetcode|".
+textEditor.deleteText(4); // return 4
+                          // The current text is "leet|". 
+                          // 4 characters were deleted.
+textEditor.addText("practice"); // The current text is "leetpractice|". 
+textEditor.cursorRight(3); // return "etpractice"
+                           // The current text is "leetpractice|". 
+                           // The cursor cannot be moved beyond the actual text and thus did not move.
+                           // "etpractice" is the last 10 characters to the left of the cursor.
+textEditor.cursorLeft(8); // return "leet"
+                          // The current text is "leet|practice".
+                          // "leet" is the last min(10, 4) = 4 characters to the left of the cursor.
+textEditor.deleteText(10); // return 4
+                           // The current text is "|practice".
+                           // Only 4 characters were deleted.
+textEditor.cursorLeft(2); // return ""
+                          // The current text is "|practice".
+                          // The cursor cannot be moved beyond the actual text and thus did not move. 
+                          // "" is the last min(10, 0) = 0 characters to the left of the cursor.
+textEditor.cursorRight(6); // return "practi"
+                           // The current text is "practi|ce".
+                           // "practi" is the last min(10, 6) = 6 characters to the left of the cursor.
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= text.length, k <= 40
  • +
  • text consists of lowercase English letters.
  • +
  • At most 2 * 104 calls in total will be made to addText, deleteText, cursorLeft and cursorRight.
  • +
+ +

 

+

Follow-up: Could you find a solution with time complexity of O(k) per call?

+
\ No newline at end of file diff --git a/CPP/Leetcode/237-delete-node-in-a-linked-list/237-delete-node-in-a-linked-list.cpp b/CPP/Leetcode/237-delete-node-in-a-linked-list/237-delete-node-in-a-linked-list.cpp new file mode 100644 index 00000000..efdc8676 --- /dev/null +++ b/CPP/Leetcode/237-delete-node-in-a-linked-list/237-delete-node-in-a-linked-list.cpp @@ -0,0 +1,19 @@ +/** + * Definition for singly-linked list. + * struct ListNode { + * int val; + * ListNode *next; + * ListNode(int x) : val(x), next(NULL) {} + * }; + */ +class Solution { +public: + void deleteNode(ListNode* node) { + ListNode *ptr=node; + swap(ptr->val,ptr->next->val); + cout << ptr->val; + ListNode *p2=ptr->next; + ptr->next=ptr->next->next; + delete(p2); + } +}; \ No newline at end of file diff --git a/CPP/Leetcode/237-delete-node-in-a-linked-list/NOTES.md b/CPP/Leetcode/237-delete-node-in-a-linked-list/NOTES.md new file mode 100644 index 00000000..38c1374a --- /dev/null +++ b/CPP/Leetcode/237-delete-node-in-a-linked-list/NOTES.md @@ -0,0 +1 @@ +​ \ No newline at end of file diff --git a/CPP/Leetcode/237-delete-node-in-a-linked-list/README.md b/CPP/Leetcode/237-delete-node-in-a-linked-list/README.md new file mode 100644 index 00000000..797f85a2 --- /dev/null +++ b/CPP/Leetcode/237-delete-node-in-a-linked-list/README.md @@ -0,0 +1,29 @@ +

237. Delete Node in a Linked List

Easy


Write a function to delete a node in a singly-linked list. You will not be given access to the head of the list, instead you will be given access to the node to be deleted directly.

+ +

It is guaranteed that the node to be deleted is not a tail node in the list.

+ +

 

+

Example 1:

+ +
Input: head = [4,5,1,9], node = 5
+Output: [4,1,9]
+Explanation: You are given the second node with value 5, the linked list should become 4 -> 1 -> 9 after calling your function.
+
+ +

Example 2:

+ +
Input: head = [4,5,1,9], node = 1
+Output: [4,5,9]
+Explanation: You are given the third node with value 1, the linked list should become 4 -> 5 -> 9 after calling your function.
+
+ +

 

+

Constraints:

+ +
    +
  • The number of the nodes in the given list is in the range [2, 1000].
  • +
  • -1000 <= Node.val <= 1000
  • +
  • The value of each node in the list is unique.
  • +
  • The node to be deleted is in the list and is not a tail node
  • +
+
\ No newline at end of file diff --git a/CPP/Leetcode/2395-find-subarrays-with-equal-sum/2395-find-subarrays-with-equal-sum.cpp b/CPP/Leetcode/2395-find-subarrays-with-equal-sum/2395-find-subarrays-with-equal-sum.cpp new file mode 100644 index 00000000..b324f449 --- /dev/null +++ b/CPP/Leetcode/2395-find-subarrays-with-equal-sum/2395-find-subarrays-with-equal-sum.cpp @@ -0,0 +1,12 @@ +class Solution { +public: + bool findSubarrays(vector& nums) { + set s; + for(int i=1;i=nums.size()-1) return false; + return true; + } +}; \ No newline at end of file diff --git a/CPP/Leetcode/2395-find-subarrays-with-equal-sum/README.md b/CPP/Leetcode/2395-find-subarrays-with-equal-sum/README.md new file mode 100644 index 00000000..07b7f46b --- /dev/null +++ b/CPP/Leetcode/2395-find-subarrays-with-equal-sum/README.md @@ -0,0 +1,37 @@ +

2395. Find Subarrays With Equal Sum

Easy


Given a 0-indexed integer array nums, determine whether there exist two subarrays of length 2 with equal sum. Note that the two subarrays must begin at different indices.

+ +

Return true if these subarrays exist, and false otherwise.

+ +

A subarray is a contiguous non-empty sequence of elements within an array.

+ +

 

+

Example 1:

+ +
Input: nums = [4,2,4]
+Output: true
+Explanation: The subarrays with elements [4,2] and [2,4] have the same sum of 6.
+
+ +

Example 2:

+ +
Input: nums = [1,2,3,4,5]
+Output: false
+Explanation: No two subarrays of size 2 have the same sum.
+
+ +

Example 3:

+ +
Input: nums = [0,0,0]
+Output: true
+Explanation: The subarrays [nums[0],nums[1]] and [nums[1],nums[2]] have the same sum of 0. 
+Note that even though the subarrays have the same content, the two subarrays are considered different because they are in different positions in the original array.
+
+ +

 

+

Constraints:

+ +
    +
  • 2 <= nums.length <= 1000
  • +
  • -109 <= nums[i] <= 109
  • +
+
\ No newline at end of file diff --git a/CPP/Leetcode/24-swap-nodes-in-pairs/24-swap-nodes-in-pairs.cpp b/CPP/Leetcode/24-swap-nodes-in-pairs/24-swap-nodes-in-pairs.cpp new file mode 100644 index 00000000..fa7b4c5d --- /dev/null +++ b/CPP/Leetcode/24-swap-nodes-in-pairs/24-swap-nodes-in-pairs.cpp @@ -0,0 +1,24 @@ +/** + * Definition for singly-linked list. + * struct ListNode { + * int val; + * ListNode *next; + * ListNode() : val(0), next(nullptr) {} + * ListNode(int x) : val(x), next(nullptr) {} + * ListNode(int x, ListNode *next) : val(x), next(next) {} + * }; + */ +class Solution { +public: + ListNode* swapPairs(ListNode* head) { + if(head == NULL || head -> next == NULL) + { + return head; + } + ListNode* temp; + temp=head->next; + head->next=swapPairs(head->next->next); + temp->next=head; + return temp; + } +}; \ No newline at end of file diff --git a/CPP/Leetcode/24-swap-nodes-in-pairs/README.md b/CPP/Leetcode/24-swap-nodes-in-pairs/README.md new file mode 100644 index 00000000..562c3539 --- /dev/null +++ b/CPP/Leetcode/24-swap-nodes-in-pairs/README.md @@ -0,0 +1,29 @@ +

24. Swap Nodes in Pairs

Medium


Given a linked list, swap every two adjacent nodes and return its head. You must solve the problem without modifying the values in the list's nodes (i.e., only nodes themselves may be changed.)

+ +

 

+

Example 1:

+ +
Input: head = [1,2,3,4]
+Output: [2,1,4,3]
+
+ +

Example 2:

+ +
Input: head = []
+Output: []
+
+ +

Example 3:

+ +
Input: head = [1]
+Output: [1]
+
+ +

 

+

Constraints:

+ +
    +
  • The number of nodes in the list is in the range [0, 100].
  • +
  • 0 <= Node.val <= 100
  • +
+
\ No newline at end of file diff --git a/CPP/Leetcode/242-valid-anagram/242-valid-anagram.cpp b/CPP/Leetcode/242-valid-anagram/242-valid-anagram.cpp new file mode 100644 index 00000000..fe1af101 --- /dev/null +++ b/CPP/Leetcode/242-valid-anagram/242-valid-anagram.cpp @@ -0,0 +1,24 @@ +class Solution { +public: + bool isAnagram(string s, string t) { + unordered_map m1; + unordered_map m2; + for(int i=0;i242. Valid Anagram

Easy


Given two strings s and t, return true if t is an anagram of s, and false otherwise.

+ +

An Anagram is a word or phrase formed by rearranging the letters of a different word or phrase, typically using all the original letters exactly once.

+ +

 

+

Example 1:

+
Input: s = "anagram", t = "nagaram"
+Output: true
+

Example 2:

+
Input: s = "rat", t = "car"
+Output: false
+
+

 

+

Constraints:

+ +
    +
  • 1 <= s.length, t.length <= 5 * 104
  • +
  • s and t consist of lowercase English letters.
  • +
+ +

 

+

Follow up: What if the inputs contain Unicode characters? How would you adapt your solution to such a case?

+
\ No newline at end of file diff --git a/CPP/Leetcode/26-remove-duplicates-from-sorted-array/26-remove-duplicates-from-sorted-array.cpp b/CPP/Leetcode/26-remove-duplicates-from-sorted-array/26-remove-duplicates-from-sorted-array.cpp new file mode 100644 index 00000000..efe14afd --- /dev/null +++ b/CPP/Leetcode/26-remove-duplicates-from-sorted-array/26-remove-duplicates-from-sorted-array.cpp @@ -0,0 +1,17 @@ +class Solution { +public: + int removeDuplicates(vector& nums) { + int cnt=1; + for(int i=0;i26. Remove Duplicates from Sorted Array

Easy


Given an integer array nums sorted in non-decreasing order, remove the duplicates in-place such that each unique element appears only once. The relative order of the elements should be kept the same.

+ +

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[] expectedNums = [...]; // The expected answer with correct length
+
+int k = removeDuplicates(nums); // Calls your implementation
+
+assert k == expectedNums.length;
+for (int i = 0; i < k; i++) {
+    assert nums[i] == expectedNums[i];
+}
+
+ +

If all assertions pass, then your solution will be accepted.

+ +

 

+

Example 1:

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

Example 2:

+ +
Input: nums = [0,0,1,1,1,2,2,3,3,4]
+Output: 5, nums = [0,1,2,3,4,_,_,_,_,_]
+Explanation: Your function should return k = 5, with the first five elements of nums being 0, 1, 2, 3, and 4 respectively.
+It does not matter what you leave beyond the returned k (hence they are underscores).
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= nums.length <= 3 * 104
  • +
  • -100 <= nums[i] <= 100
  • +
  • nums is sorted in non-decreasing order.
  • +
+
\ No newline at end of file diff --git a/CPP/Leetcode/268-missing-number/268-missing-number.cpp b/CPP/Leetcode/268-missing-number/268-missing-number.cpp new file mode 100644 index 00000000..d904a2b0 --- /dev/null +++ b/CPP/Leetcode/268-missing-number/268-missing-number.cpp @@ -0,0 +1,13 @@ +class Solution { +public: + int missingNumber(vector& nums) { + int sum=0; + for(auto it:nums) + { + sum+=it; + } + int n=nums.size(); + sum=((n*(n+1))/2) - sum; + return sum; + } +}; \ No newline at end of file diff --git a/CPP/Leetcode/268-missing-number/NOTES.md b/CPP/Leetcode/268-missing-number/NOTES.md new file mode 100644 index 00000000..38c1374a --- /dev/null +++ b/CPP/Leetcode/268-missing-number/NOTES.md @@ -0,0 +1 @@ +​ \ No newline at end of file diff --git a/CPP/Leetcode/268-missing-number/README.md b/CPP/Leetcode/268-missing-number/README.md new file mode 100644 index 00000000..3a8a33a3 --- /dev/null +++ b/CPP/Leetcode/268-missing-number/README.md @@ -0,0 +1,37 @@ +

268. Missing Number

Easy


Given an array nums containing n distinct numbers in the range [0, n], return the only number in the range that is missing from the array.

+ +

 

+

Example 1:

+ +
Input: nums = [3,0,1]
+Output: 2
+Explanation: n = 3 since there are 3 numbers, so all numbers are in the range [0,3]. 2 is the missing number in the range since it does not appear in nums.
+
+ +

Example 2:

+ +
Input: nums = [0,1]
+Output: 2
+Explanation: n = 2 since there are 2 numbers, so all numbers are in the range [0,2]. 2 is the missing number in the range since it does not appear in nums.
+
+ +

Example 3:

+ +
Input: nums = [9,6,4,2,3,5,7,0,1]
+Output: 8
+Explanation: n = 9 since there are 9 numbers, so all numbers are in the range [0,9]. 8 is the missing number in the range since it does not appear in nums.
+
+ +

 

+

Constraints:

+ +
    +
  • n == nums.length
  • +
  • 1 <= n <= 104
  • +
  • 0 <= nums[i] <= n
  • +
  • All the numbers of nums are unique.
  • +
+ +

 

+

Follow up: Could you implement a solution using only O(1) extra space complexity and O(n) runtime complexity?

+
\ No newline at end of file diff --git a/CPP/Leetcode/283-move-zeroes/283-move-zeroes.cpp b/CPP/Leetcode/283-move-zeroes/283-move-zeroes.cpp new file mode 100644 index 00000000..dc06a8d1 --- /dev/null +++ b/CPP/Leetcode/283-move-zeroes/283-move-zeroes.cpp @@ -0,0 +1,16 @@ +class Solution { +public: + void moveZeroes(vector& nums) { + int m=0; + int n=nums.size(); + for(int i=0;i283. Move Zeroes

Easy


Given an integer array nums, move all 0's to the end of it while maintaining the relative order of the non-zero elements.

+ +

Note that you must do this in-place without making a copy of the array.

+ +

 

+

Example 1:

+
Input: nums = [0,1,0,3,12]
+Output: [1,3,12,0,0]
+

Example 2:

+
Input: nums = [0]
+Output: [0]
+
+

 

+

Constraints:

+ +
    +
  • 1 <= nums.length <= 104
  • +
  • -231 <= nums[i] <= 231 - 1
  • +
+ +

 

+Follow up: Could you minimize the total number of operations done?
\ No newline at end of file diff --git a/CPP/Leetcode/287-find-the-duplicate-number/287-find-the-duplicate-number.cpp b/CPP/Leetcode/287-find-the-duplicate-number/287-find-the-duplicate-number.cpp new file mode 100644 index 00000000..463c3038 --- /dev/null +++ b/CPP/Leetcode/287-find-the-duplicate-number/287-find-the-duplicate-number.cpp @@ -0,0 +1,18 @@ +class Solution { +public: + int findDuplicate(vector& nums) { + int slow=nums[0]; + int fast=nums[0]; + do{ + slow=nums[slow]; + fast=nums[nums[fast]]; + }while(slow!=fast); + fast=nums[0]; + while(fast!=slow) + { + slow=nums[slow]; + fast=nums[fast]; + } + return slow; + } +}; \ No newline at end of file diff --git a/CPP/Leetcode/287-find-the-duplicate-number/NOTES.md b/CPP/Leetcode/287-find-the-duplicate-number/NOTES.md new file mode 100644 index 00000000..38c1374a --- /dev/null +++ b/CPP/Leetcode/287-find-the-duplicate-number/NOTES.md @@ -0,0 +1 @@ +​ \ No newline at end of file diff --git a/CPP/Leetcode/287-find-the-duplicate-number/README.md b/CPP/Leetcode/287-find-the-duplicate-number/README.md new file mode 100644 index 00000000..7e26c348 --- /dev/null +++ b/CPP/Leetcode/287-find-the-duplicate-number/README.md @@ -0,0 +1,37 @@ +

287. Find the Duplicate Number

Medium


Given an array of integers nums containing n + 1 integers where each integer is in the range [1, n] inclusive.

+ +

There is only one repeated number in nums, return this repeated number.

+ +

You must solve the problem without modifying the array nums and uses only constant extra space.

+ +

 

+

Example 1:

+ +
Input: nums = [1,3,4,2,2]
+Output: 2
+
+ +

Example 2:

+ +
Input: nums = [3,1,3,4,2]
+Output: 3
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= n <= 105
  • +
  • nums.length == n + 1
  • +
  • 1 <= nums[i] <= n
  • +
  • All the integers in nums appear only once except for precisely one integer which appears two or more times.
  • +
+ +

 

+

Follow up:

+ +
    +
  • How can we prove that at least one duplicate number must exist in nums?
  • +
  • Can you solve the problem in linear runtime complexity?
  • +
+
\ No newline at end of file diff --git a/CPP/Leetcode/300-longest-increasing-subsequence/300-longest-increasing-subsequence.cpp b/CPP/Leetcode/300-longest-increasing-subsequence/300-longest-increasing-subsequence.cpp new file mode 100644 index 00000000..ce55ef2d --- /dev/null +++ b/CPP/Leetcode/300-longest-increasing-subsequence/300-longest-increasing-subsequence.cpp @@ -0,0 +1,47 @@ +class Solution { + private: + int CeilIndex(std::vector& v, int l, int r, int key) +{ + while (r - l > 1) { + int m = l + (r - l) / 2; + if (v[m] >= key) + r = m; + else + l = m; + } + + return r; +} +public: + int lengthOfLIS(vector& v) { + if (v.size() == 0) + return 0; + + std::vector tail(v.size(), 0); + int length = 1; // always points empty slot in tail + + tail[0] = v[0]; + for (size_t i = 1; i < v.size(); i++) { + + // new smallest value + if (v[i] < tail[0]) + tail[0] = v[i]; + + // v[i] extends largest subsequence + else if (v[i] > tail[length - 1]) + tail[length++] = v[i]; + + // v[i] will become end candidate of an existing + // subsequence or Throw away larger elements in all + // LIS, to make room for upcoming greater elements + // than v[i] (and also, v[i] would have already + // appeared in one of LIS, identify the location + // and replace it) + else + tail[CeilIndex(tail, -1, length - 1, v[i])] = v[i]; + } + + return length; + + } +}; \ No newline at end of file diff --git a/CPP/Leetcode/300-longest-increasing-subsequence/NOTES.md b/CPP/Leetcode/300-longest-increasing-subsequence/NOTES.md new file mode 100644 index 00000000..38c1374a --- /dev/null +++ b/CPP/Leetcode/300-longest-increasing-subsequence/NOTES.md @@ -0,0 +1 @@ +​ \ No newline at end of file diff --git a/CPP/Leetcode/300-longest-increasing-subsequence/README.md b/CPP/Leetcode/300-longest-increasing-subsequence/README.md new file mode 100644 index 00000000..9a2c8d6f --- /dev/null +++ b/CPP/Leetcode/300-longest-increasing-subsequence/README.md @@ -0,0 +1,35 @@ +

300. Longest Increasing Subsequence

Medium


Given an integer array nums, return the length of the longest strictly increasing subsequence.

+ +

A subsequence is a sequence that can be derived from an array by deleting some or no elements without changing the order of the remaining elements. For example, [3,6,2,7] is a subsequence of the array [0,3,1,6,2,2,7].

+ +

 

+

Example 1:

+ +
Input: nums = [10,9,2,5,3,7,101,18]
+Output: 4
+Explanation: The longest increasing subsequence is [2,3,7,101], therefore the length is 4.
+
+ +

Example 2:

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

Example 3:

+ +
Input: nums = [7,7,7,7,7,7,7]
+Output: 1
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= nums.length <= 2500
  • +
  • -104 <= nums[i] <= 104
  • +
+ +

 

+

Follow up: Can you come up with an algorithm that runs in O(n log(n)) time complexity?

+
\ No newline at end of file diff --git a/CPP/Leetcode/326-power-of-three/326-power-of-three.cpp b/CPP/Leetcode/326-power-of-three/326-power-of-three.cpp new file mode 100644 index 00000000..6163a9da --- /dev/null +++ b/CPP/Leetcode/326-power-of-three/326-power-of-three.cpp @@ -0,0 +1,12 @@ +class Solution { +public: + bool isPowerOfThree(int n) { + if(n == 0){ + return false; + } + if(n == 1){ + return true; + } + return (n % 3 == 0) && (isPowerOfThree(n/3)); + } +}; \ No newline at end of file diff --git a/CPP/Leetcode/326-power-of-three/NOTES.md b/CPP/Leetcode/326-power-of-three/NOTES.md new file mode 100644 index 00000000..38c1374a --- /dev/null +++ b/CPP/Leetcode/326-power-of-three/NOTES.md @@ -0,0 +1 @@ +​ \ No newline at end of file diff --git a/CPP/Leetcode/342-power-of-four/342-power-of-four.cpp b/CPP/Leetcode/342-power-of-four/342-power-of-four.cpp new file mode 100644 index 00000000..010ea52a --- /dev/null +++ b/CPP/Leetcode/342-power-of-four/342-power-of-four.cpp @@ -0,0 +1,15 @@ +class Solution { +public: + bool isPowerOfFour(int n) { + // Base Cases + if(n == 0){ + return false; + } + if(n == 1){ + return true; + } + + // Check remainder is 0 or not when divided by 3, and recursion call. + return (n % 4 == 0) && (isPowerOfFour(n/4)); + } +}; \ No newline at end of file diff --git a/CPP/Leetcode/342-power-of-four/NOTES.md b/CPP/Leetcode/342-power-of-four/NOTES.md new file mode 100644 index 00000000..38c1374a --- /dev/null +++ b/CPP/Leetcode/342-power-of-four/NOTES.md @@ -0,0 +1 @@ +​ \ No newline at end of file diff --git a/CPP/Leetcode/342-power-of-four/README.md b/CPP/Leetcode/342-power-of-four/README.md new file mode 100644 index 00000000..c54783d2 --- /dev/null +++ b/CPP/Leetcode/342-power-of-four/README.md @@ -0,0 +1,24 @@ +

342. Power of Four

Easy


Given an integer n, return true if it is a power of four. Otherwise, return false.

+ +

An integer n is a power of four, if there exists an integer x such that n == 4x.

+ +

 

+

Example 1:

+
Input: n = 16
+Output: true
+

Example 2:

+
Input: n = 5
+Output: false
+

Example 3:

+
Input: n = 1
+Output: true
+
+

 

+

Constraints:

+ +
    +
  • -231 <= n <= 231 - 1
  • +
+ +

 

+Follow up: Could you solve it without loops/recursion?
\ No newline at end of file diff --git a/CPP/Leetcode/344-reverse-string/344-reverse-string.cpp b/CPP/Leetcode/344-reverse-string/344-reverse-string.cpp new file mode 100644 index 00000000..a08675d5 --- /dev/null +++ b/CPP/Leetcode/344-reverse-string/344-reverse-string.cpp @@ -0,0 +1,19 @@ +class Solution { +public: + void reverseString(vector& s) + { + int l=0; + int r=s.size()-1; + while(l344. Reverse String

Easy


Write a function that reverses a string. The input string is given as an array of characters s.

+ +

You must do this by modifying the input array in-place with O(1) extra memory.

+ +

 

+

Example 1:

+
Input: s = ["h","e","l","l","o"]
+Output: ["o","l","l","e","h"]
+

Example 2:

+
Input: s = ["H","a","n","n","a","h"]
+Output: ["h","a","n","n","a","H"]
+
+

 

+

Constraints:

+ + +
\ No newline at end of file diff --git a/CPP/Leetcode/389-find-the-difference/389-find-the-difference.cpp b/CPP/Leetcode/389-find-the-difference/389-find-the-difference.cpp new file mode 100644 index 00000000..10c3d0f8 --- /dev/null +++ b/CPP/Leetcode/389-find-the-difference/389-find-the-difference.cpp @@ -0,0 +1,22 @@ +class Solution { +public: + char findTheDifference(string s, string t) { + map m1; + map m2; + for(int i=0;i389. Find the Difference

Easy


You are given two strings s and t.

+ +

String t is generated by random shuffling string s and then add one more letter at a random position.

+ +

Return the letter that was added to t.

+ +

 

+

Example 1:

+ +
Input: s = "abcd", t = "abcde"
+Output: "e"
+Explanation: 'e' is the letter that was added.
+
+ +

Example 2:

+ +
Input: s = "", t = "y"
+Output: "y"
+
+ +

 

+

Constraints:

+ +
    +
  • 0 <= s.length <= 1000
  • +
  • t.length == s.length + 1
  • +
  • s and t consist of lowercase English letters.
  • +
+
\ No newline at end of file diff --git a/CPP/Leetcode/448-find-all-numbers-disappeared-in-an-array/448-find-all-numbers-disappeared-in-an-array.cpp b/CPP/Leetcode/448-find-all-numbers-disappeared-in-an-array/448-find-all-numbers-disappeared-in-an-array.cpp new file mode 100644 index 00000000..9738d727 --- /dev/null +++ b/CPP/Leetcode/448-find-all-numbers-disappeared-in-an-array/448-find-all-numbers-disappeared-in-an-array.cpp @@ -0,0 +1,17 @@ +class Solution { +public: + vector findDisappearedNumbers(vector& nums) { + vector v; + unordered_map mp; + for(auto it:nums) + { + mp[it]++; + } + int n=nums.size(); + for(int i=1;i<=n;i++) + { + if(mp[i]==0) v.push_back(i); + } + return v; + } +}; \ No newline at end of file diff --git a/CPP/Leetcode/448-find-all-numbers-disappeared-in-an-array/NOTES.md b/CPP/Leetcode/448-find-all-numbers-disappeared-in-an-array/NOTES.md new file mode 100644 index 00000000..38c1374a --- /dev/null +++ b/CPP/Leetcode/448-find-all-numbers-disappeared-in-an-array/NOTES.md @@ -0,0 +1 @@ +​ \ No newline at end of file diff --git a/CPP/Leetcode/448-find-all-numbers-disappeared-in-an-array/README.md b/CPP/Leetcode/448-find-all-numbers-disappeared-in-an-array/README.md new file mode 100644 index 00000000..f144bcd0 --- /dev/null +++ b/CPP/Leetcode/448-find-all-numbers-disappeared-in-an-array/README.md @@ -0,0 +1,22 @@ +

448. Find All Numbers Disappeared in an Array

Easy


Given an array nums of n integers where nums[i] is in the range [1, n], return an array of all the integers in the range [1, n] that do not appear in nums.

+ +

 

+

Example 1:

+
Input: nums = [4,3,2,7,8,2,3,1]
+Output: [5,6]
+

Example 2:

+
Input: nums = [1,1]
+Output: [2]
+
+

 

+

Constraints:

+ +
    +
  • n == nums.length
  • +
  • 1 <= n <= 105
  • +
  • 1 <= nums[i] <= n
  • +
+ +

 

+

Follow up: Could you do it without extra space and in O(n) runtime? You may assume the returned list does not count as extra space.

+
\ No newline at end of file diff --git a/CPP/Leetcode/47-permutations-ii/47-permutations-ii.cpp b/CPP/Leetcode/47-permutations-ii/47-permutations-ii.cpp new file mode 100644 index 00000000..41519731 --- /dev/null +++ b/CPP/Leetcode/47-permutations-ii/47-permutations-ii.cpp @@ -0,0 +1,17 @@ +class Solution { +public: + vector> permuteUnique(vector& nums) + { + set> st; + vector t = nums; + do + { + next_permutation(t.begin(), t.end()); + st.insert(t); + } while (t != nums); + vector> res; + for (auto it: st) + res.push_back(it); + return res; + } +}; \ No newline at end of file diff --git a/CPP/Leetcode/47-permutations-ii/README.md b/CPP/Leetcode/47-permutations-ii/README.md new file mode 100644 index 00000000..1158829e --- /dev/null +++ b/CPP/Leetcode/47-permutations-ii/README.md @@ -0,0 +1,26 @@ +

47. Permutations II

Medium


Given a collection of numbers, nums, that might contain duplicates, return all possible unique permutations in any order.

+ +

 

+

Example 1:

+ +
Input: nums = [1,1,2]
+Output:
+[[1,1,2],
+ [1,2,1],
+ [2,1,1]]
+
+ +

Example 2:

+ +
Input: nums = [1,2,3]
+Output: [[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= nums.length <= 8
  • +
  • -10 <= nums[i] <= 10
  • +
+
\ No newline at end of file diff --git a/CPP/Leetcode/485-max-consecutive-ones/485-max-consecutive-ones.cpp b/CPP/Leetcode/485-max-consecutive-ones/485-max-consecutive-ones.cpp new file mode 100644 index 00000000..000c39a0 --- /dev/null +++ b/CPP/Leetcode/485-max-consecutive-ones/485-max-consecutive-ones.cpp @@ -0,0 +1,18 @@ +class Solution { +public: + int findMaxConsecutiveOnes(vector& nums) { + int cnt=0; + int m=0; + for(int i=0;i& nums) { + int maxi=-1e4; + int sum=0; + for(auto it:nums) + { + sum+=it; + maxi=max(maxi,sum); + if(sum<0) sum=0; + } + return maxi; + } +}; \ No newline at end of file diff --git a/CPP/Leetcode/53-maximum-subarray/NOTES.md b/CPP/Leetcode/53-maximum-subarray/NOTES.md new file mode 100644 index 00000000..38c1374a --- /dev/null +++ b/CPP/Leetcode/53-maximum-subarray/NOTES.md @@ -0,0 +1 @@ +​ \ No newline at end of file diff --git a/CPP/Leetcode/535-encode-and-decode-tinyurl/535-encode-and-decode-tinyurl.cpp b/CPP/Leetcode/535-encode-and-decode-tinyurl/535-encode-and-decode-tinyurl.cpp new file mode 100644 index 00000000..43eb40ce --- /dev/null +++ b/CPP/Leetcode/535-encode-and-decode-tinyurl/535-encode-and-decode-tinyurl.cpp @@ -0,0 +1,19 @@ +class Solution { +public: + + unordered_map mp; + string encode(string longUrl) { + mp["enigma"]=longUrl; + return "enigma"; + + } + + // Decodes a shortened URL to its original URL. + string decode(string shortUrl) { + return mp[shortUrl]; + } +}; + +// Your Solution object will be instantiated and called as such: +// Solution solution; +// solution.decode(solution.encode(url)); \ No newline at end of file diff --git a/CPP/Leetcode/535-encode-and-decode-tinyurl/NOTES.md b/CPP/Leetcode/535-encode-and-decode-tinyurl/NOTES.md new file mode 100644 index 00000000..38c1374a --- /dev/null +++ b/CPP/Leetcode/535-encode-and-decode-tinyurl/NOTES.md @@ -0,0 +1 @@ +​ \ No newline at end of file diff --git a/CPP/Leetcode/557-reverse-words-in-a-string-iii/557-reverse-words-in-a-string-iii.cpp b/CPP/Leetcode/557-reverse-words-in-a-string-iii/557-reverse-words-in-a-string-iii.cpp new file mode 100644 index 00000000..57d44ce5 --- /dev/null +++ b/CPP/Leetcode/557-reverse-words-in-a-string-iii/557-reverse-words-in-a-string-iii.cpp @@ -0,0 +1,19 @@ +class Solution { +public: + string reverseWords(string s) { + string k=""; + string res=""; + for(int i=0;i557. Reverse Words in a String III

Easy


Given a string s, reverse the order of characters in each word within a sentence while still preserving whitespace and initial word order.

+ +

 

+

Example 1:

+
Input: s = "Let's take LeetCode contest"
+Output: "s'teL ekat edoCteeL tsetnoc"
+

Example 2:

+
Input: s = "God Ding"
+Output: "doG gniD"
+
+

 

+

Constraints:

+ +
    +
  • 1 <= s.length <= 5 * 104
  • +
  • s contains printable ASCII characters.
  • +
  • s does not contain any leading or trailing spaces.
  • +
  • There is at least one word in s.
  • +
  • All the words in s are separated by a single space.
  • +
+
\ No newline at end of file diff --git a/CPP/Leetcode/680-valid-palindrome-ii/680-valid-palindrome-ii.cpp b/CPP/Leetcode/680-valid-palindrome-ii/680-valid-palindrome-ii.cpp new file mode 100644 index 00000000..58a13bea --- /dev/null +++ b/CPP/Leetcode/680-valid-palindrome-ii/680-valid-palindrome-ii.cpp @@ -0,0 +1,39 @@ +class Solution { + private: + bool pal(string s,int l,int r) + { + while(l680. Valid Palindrome II

Easy


Given a string s, return true if the s can be palindrome after deleting at most one character from it.

+ +

 

+

Example 1:

+ +
Input: s = "aba"
+Output: true
+
+ +

Example 2:

+ +
Input: s = "abca"
+Output: true
+Explanation: You could delete the character 'c'.
+
+ +

Example 3:

+ +
Input: s = "abc"
+Output: false
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= s.length <= 105
  • +
  • s consists of lowercase English letters.
  • +
+
\ No newline at end of file diff --git a/CPP/Leetcode/682-baseball-game/682-baseball-game.cpp b/CPP/Leetcode/682-baseball-game/682-baseball-game.cpp new file mode 100644 index 00000000..13e4e00b --- /dev/null +++ b/CPP/Leetcode/682-baseball-game/682-baseball-game.cpp @@ -0,0 +1,38 @@ +class Solution { +public: + int calPoints(vector& ops) { + vector v; + + for(int i=0;i682. Baseball Game

Easy


You are keeping score for a baseball game with strange rules. The game consists of several rounds, where the scores of past rounds may affect future rounds' scores.

+ +

At the beginning of the game, you start with an empty record. You are given a list of strings ops, where ops[i] is the ith operation you must apply to the record and is one of the following:

+ +
    +
  1. An integer x - Record a new score of x.
  2. +
  3. "+" - Record a new score that is the sum of the previous two scores. It is guaranteed there will always be two previous scores.
  4. +
  5. "D" - Record a new score that is double the previous score. It is guaranteed there will always be a previous score.
  6. +
  7. "C" - Invalidate the previous score, removing it from the record. It is guaranteed there will always be a previous score.
  8. +
+ +

Return the sum of all the scores on the record.

+ +

 

+

Example 1:

+ +
Input: ops = ["5","2","C","D","+"]
+Output: 30
+Explanation:
+"5" - Add 5 to the record, record is now [5].
+"2" - Add 2 to the record, record is now [5, 2].
+"C" - Invalidate and remove the previous score, record is now [5].
+"D" - Add 2 * 5 = 10 to the record, record is now [5, 10].
+"+" - Add 5 + 10 = 15 to the record, record is now [5, 10, 15].
+The total sum is 5 + 10 + 15 = 30.
+
+ +

Example 2:

+ +
Input: ops = ["5","-2","4","C","D","9","+","+"]
+Output: 27
+Explanation:
+"5" - Add 5 to the record, record is now [5].
+"-2" - Add -2 to the record, record is now [5, -2].
+"4" - Add 4 to the record, record is now [5, -2, 4].
+"C" - Invalidate and remove the previous score, record is now [5, -2].
+"D" - Add 2 * -2 = -4 to the record, record is now [5, -2, -4].
+"9" - Add 9 to the record, record is now [5, -2, -4, 9].
+"+" - Add -4 + 9 = 5 to the record, record is now [5, -2, -4, 9, 5].
+"+" - Add 9 + 5 = 14 to the record, record is now [5, -2, -4, 9, 5, 14].
+The total sum is 5 + -2 + -4 + 9 + 5 + 14 = 27.
+
+ +

Example 3:

+ +
Input: ops = ["1"]
+Output: 1
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= ops.length <= 1000
  • +
  • ops[i] is "C", "D", "+", or a string representing an integer in the range [-3 * 104, 3 * 104].
  • +
  • For operation "+", there will always be at least two previous scores on the record.
  • +
  • For operations "C" and "D", there will always be at least one previous score on the record.
  • +
+
\ No newline at end of file diff --git a/CPP/Leetcode/7-reverse-integer/7-reverse-integer.cpp b/CPP/Leetcode/7-reverse-integer/7-reverse-integer.cpp new file mode 100644 index 00000000..0e09e2cd --- /dev/null +++ b/CPP/Leetcode/7-reverse-integer/7-reverse-integer.cpp @@ -0,0 +1,14 @@ +class Solution { +public: + int reverse(int x) { + int cnt=0; + while(x!=0) + { + int d=x%10; + if(cnt>INT_MAX/10 || cnt& nums, int target) { + int n=nums.size(); + int l = 0, h = n-1; + int mid = 0; + + while(l <= h) + { + mid = l + (h-l)/2; + + if(nums[mid] == target) + return mid; + + else if(nums[mid] > target) + h = mid-1; + else l = mid + 1; + } + return -1; + + } +}; \ No newline at end of file diff --git a/CPP/Leetcode/704-binary-search/NOTES.md b/CPP/Leetcode/704-binary-search/NOTES.md new file mode 100644 index 00000000..38c1374a --- /dev/null +++ b/CPP/Leetcode/704-binary-search/NOTES.md @@ -0,0 +1 @@ +​ \ No newline at end of file diff --git a/CPP/Leetcode/804-unique-morse-code-words/804-unique-morse-code-words.cpp b/CPP/Leetcode/804-unique-morse-code-words/804-unique-morse-code-words.cpp new file mode 100644 index 00000000..6edb376f --- /dev/null +++ b/CPP/Leetcode/804-unique-morse-code-words/804-unique-morse-code-words.cpp @@ -0,0 +1,18 @@ +class Solution { +public: + int uniqueMorseRepresentations(vector& words) { + string s[26]={".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."}; + set s1; + for(int i=0;i804. Unique Morse Code Words

Easy


International Morse Code defines a standard encoding where each letter is mapped to a series of dots and dashes, as follows:

+ +
    +
  • 'a' maps to ".-",
  • +
  • 'b' maps to "-...",
  • +
  • 'c' maps to "-.-.", and so on.
  • +
+ +

For convenience, the full table for the 26 letters of the English alphabet is given below:

+ +
[".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."]
+ +

Given an array of strings words where each word can be written as a concatenation of the Morse code of each letter.

+ +
    +
  • For example, "cab" can be written as "-.-..--...", which is the concatenation of "-.-.", ".-", and "-...". We will call such a concatenation the transformation of a word.
  • +
+ +

Return the number of different transformations among all words we have.

+ +

 

+

Example 1:

+ +
Input: words = ["gin","zen","gig","msg"]
+Output: 2
+Explanation: The transformation of each word is:
+"gin" -> "--...-."
+"zen" -> "--...-."
+"gig" -> "--...--."
+"msg" -> "--...--."
+There are 2 different transformations: "--...-." and "--...--.".
+
+ +

Example 2:

+ +
Input: words = ["a"]
+Output: 1
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= words.length <= 100
  • +
  • 1 <= words[i].length <= 12
  • +
  • words[i] consists of lowercase English letters.
  • +
+
\ No newline at end of file diff --git a/CPP/Leetcode/81-search-in-rotated-sorted-array-ii/81-search-in-rotated-sorted-array-ii.cpp b/CPP/Leetcode/81-search-in-rotated-sorted-array-ii/81-search-in-rotated-sorted-array-ii.cpp new file mode 100644 index 00000000..ba1d9c44 --- /dev/null +++ b/CPP/Leetcode/81-search-in-rotated-sorted-array-ii/81-search-in-rotated-sorted-array-ii.cpp @@ -0,0 +1,14 @@ +#include +class Solution { +public: + bool search(vector& nums, int target) { + std::vector::iterator it; + it = std::find (nums.begin(), nums.end(), target); + if (it != nums.end()) + { + return true; + } + else return false; + + } +}; \ No newline at end of file diff --git a/CPP/Leetcode/81-search-in-rotated-sorted-array-ii/README.md b/CPP/Leetcode/81-search-in-rotated-sorted-array-ii/README.md new file mode 100644 index 00000000..aa3c0b4b --- /dev/null +++ b/CPP/Leetcode/81-search-in-rotated-sorted-array-ii/README.md @@ -0,0 +1,29 @@ +

81. Search in Rotated Sorted Array II

Medium


There is an integer array nums sorted in non-decreasing order (not necessarily with distinct values).

+ +

Before being passed to your function, nums is rotated at an unknown pivot index k (0 <= k < nums.length) such that the resulting array is [nums[k], nums[k+1], ..., nums[n-1], nums[0], nums[1], ..., nums[k-1]] (0-indexed). For example, [0,1,2,4,4,4,5,6,6,7] might be rotated at pivot index 5 and become [4,5,6,6,7,0,1,2,4,4].

+ +

Given the array nums after the rotation and an integer target, return true if target is in nums, or false if it is not in nums.

+ +

You must decrease the overall operation steps as much as possible.

+ +

 

+

Example 1:

+
Input: nums = [2,5,6,0,0,1,2], target = 0
+Output: true
+

Example 2:

+
Input: nums = [2,5,6,0,0,1,2], target = 3
+Output: false
+
+

 

+

Constraints:

+ +
    +
  • 1 <= nums.length <= 5000
  • +
  • -104 <= nums[i] <= 104
  • +
  • nums is guaranteed to be rotated at some pivot.
  • +
  • -104 <= target <= 104
  • +
+ +

 

+

Follow up: This problem is similar to Search in Rotated Sorted Array, but nums may contain duplicates. Would this affect the runtime complexity? How and why?

+
\ No newline at end of file diff --git a/CPP/Leetcode/844-backspace-string-compare/844-backspace-string-compare.cpp b/CPP/Leetcode/844-backspace-string-compare/844-backspace-string-compare.cpp new file mode 100644 index 00000000..85512588 --- /dev/null +++ b/CPP/Leetcode/844-backspace-string-compare/844-backspace-string-compare.cpp @@ -0,0 +1,38 @@ +class Solution { +public: + bool backspaceCompare(string s, string t) { + int n=s.length(); + int m=t.length(); + int cnt=0; + string a="",b=""; + for(int i=n-1;i>=0;i--) + { + if(s[i]=='#') cnt++; + else + { + if(cnt==0) + { + a=a+s[i]; + } + else cnt--; + } + } + cnt=0; + for(int i=m-1;i>=0;i--) + { + if(t[i]=='#') cnt++; + else + { + if(cnt==0) + { + b=b+t[i]; + } + else cnt--; + } + } + if(a==b) return true; + else return false; + + + } +}; \ No newline at end of file diff --git a/CPP/Leetcode/844-backspace-string-compare/NOTES.md b/CPP/Leetcode/844-backspace-string-compare/NOTES.md new file mode 100644 index 00000000..38c1374a --- /dev/null +++ b/CPP/Leetcode/844-backspace-string-compare/NOTES.md @@ -0,0 +1 @@ +​ \ No newline at end of file diff --git a/CPP/Leetcode/844-backspace-string-compare/README.md b/CPP/Leetcode/844-backspace-string-compare/README.md new file mode 100644 index 00000000..60b4a9fb --- /dev/null +++ b/CPP/Leetcode/844-backspace-string-compare/README.md @@ -0,0 +1,37 @@ +

844. Backspace String Compare

Easy


Given two strings s and t, return true if they are equal when both are typed into empty text editors. '#' means a backspace character.

+ +

Note that after backspacing an empty text, the text will continue empty.

+ +

 

+

Example 1:

+ +
Input: s = "ab#c", t = "ad#c"
+Output: true
+Explanation: Both s and t become "ac".
+
+ +

Example 2:

+ +
Input: s = "ab##", t = "c#d#"
+Output: true
+Explanation: Both s and t become "".
+
+ +

Example 3:

+ +
Input: s = "a#c", t = "b"
+Output: false
+Explanation: s becomes "c" while t becomes "b".
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= s.length, t.length <= 200
  • +
  • s and t only contain lowercase letters and '#' characters.
  • +
+ +

 

+

Follow up: Can you solve it in O(n) time and O(1) space?

+
\ No newline at end of file diff --git a/CPP/Leetcode/867-transpose-matrix/867-transpose-matrix.cpp b/CPP/Leetcode/867-transpose-matrix/867-transpose-matrix.cpp new file mode 100644 index 00000000..5a127a44 --- /dev/null +++ b/CPP/Leetcode/867-transpose-matrix/867-transpose-matrix.cpp @@ -0,0 +1,15 @@ +class Solution { +public: + vector> transpose(vector>& matrix) { + int n = matrix.size(); + int m = matrix[0].size(); + + vector> res(m,vector (n,0)); + for(int i=0;i867. Transpose Matrix

Easy


Given a 2D integer array matrix, return the transpose of matrix.

+ +

The transpose of a matrix is the matrix flipped over its main diagonal, switching the matrix's row and column indices.

+ +

+ +

 

+

Example 1:

+ +
Input: matrix = [[1,2,3],[4,5,6],[7,8,9]]
+Output: [[1,4,7],[2,5,8],[3,6,9]]
+
+ +

Example 2:

+ +
Input: matrix = [[1,2,3],[4,5,6]]
+Output: [[1,4],[2,5],[3,6]]
+
+ +

 

+

Constraints:

+ +
    +
  • m == matrix.length
  • +
  • n == matrix[i].length
  • +
  • 1 <= m, n <= 1000
  • +
  • 1 <= m * n <= 105
  • +
  • -109 <= matrix[i][j] <= 109
  • +
+
\ No newline at end of file diff --git a/CPP/Leetcode/876-middle-of-the-linked-list/876-middle-of-the-linked-list.cpp b/CPP/Leetcode/876-middle-of-the-linked-list/876-middle-of-the-linked-list.cpp new file mode 100644 index 00000000..bd72c6da --- /dev/null +++ b/CPP/Leetcode/876-middle-of-the-linked-list/876-middle-of-the-linked-list.cpp @@ -0,0 +1,24 @@ +/** + * Definition for singly-linked list. + * struct ListNode { + * int val; + * ListNode *next; + * ListNode() : val(0), next(nullptr) {} + * ListNode(int x) : val(x), next(nullptr) {} + * ListNode(int x, ListNode *next) : val(x), next(next) {} + * }; + */ +class Solution { +public: + ListNode* middleNode(ListNode* head) { + ListNode* p1=head; + ListNode* p2=head; + while(p2->next!=NULL && p2->next->next!=NULL) + { + p1=p1->next; + p2=p2->next->next; + } + if(p2->next!=NULL && p2->next->next==NULL) return p1->next; + else return p1; + } +}; \ No newline at end of file diff --git a/CPP/Leetcode/876-middle-of-the-linked-list/NOTES.md b/CPP/Leetcode/876-middle-of-the-linked-list/NOTES.md new file mode 100644 index 00000000..38c1374a --- /dev/null +++ b/CPP/Leetcode/876-middle-of-the-linked-list/NOTES.md @@ -0,0 +1 @@ +​ \ No newline at end of file diff --git a/CPP/Leetcode/876-middle-of-the-linked-list/README.md b/CPP/Leetcode/876-middle-of-the-linked-list/README.md new file mode 100644 index 00000000..264fadb1 --- /dev/null +++ b/CPP/Leetcode/876-middle-of-the-linked-list/README.md @@ -0,0 +1,27 @@ +

876. Middle of the Linked List

Easy


Given the head of a singly linked list, return the middle node of the linked list.

+ +

If there are two middle nodes, return the second middle node.

+ +

 

+

Example 1:

+ +
Input: head = [1,2,3,4,5]
+Output: [3,4,5]
+Explanation: The middle node of the list is node 3.
+
+ +

Example 2:

+ +
Input: head = [1,2,3,4,5,6]
+Output: [4,5,6]
+Explanation: Since the list has two middle nodes with values 3 and 4, we return the second one.
+
+ +

 

+

Constraints:

+ +
    +
  • The number of nodes in the list is in the range [1, 100].
  • +
  • 1 <= Node.val <= 100
  • +
+
\ No newline at end of file diff --git a/CPP/Leetcode/88-merge-sorted-array/88-merge-sorted-array.cpp b/CPP/Leetcode/88-merge-sorted-array/88-merge-sorted-array.cpp new file mode 100644 index 00000000..71e23611 --- /dev/null +++ b/CPP/Leetcode/88-merge-sorted-array/88-merge-sorted-array.cpp @@ -0,0 +1,36 @@ +class Solution { +public: + void merge(vector& nums1, int m, vector& nums2, int n) { + vector v; + int i=0,j=0; + while(inums2[j]) + { + v.push_back(nums2[j]);j++; + } + else + { + v.push_back(nums1[i]);i++; + v.push_back(nums2[j]);j++; + } + } + while(i88. Merge Sorted Array

Easy


You are given two integer arrays nums1 and nums2, sorted in non-decreasing order, and two integers m and n, representing the number of elements in nums1 and nums2 respectively.

+ +

Merge nums1 and nums2 into a single array sorted in non-decreasing order.

+ +

The final sorted array should not be returned by the function, but instead be stored inside the array nums1. To accommodate this, nums1 has a length of m + n, where the first m elements denote the elements that should be merged, and the last n elements are set to 0 and should be ignored. nums2 has a length of n.

+ +

 

+

Example 1:

+ +
Input: nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3
+Output: [1,2,2,3,5,6]
+Explanation: The arrays we are merging are [1,2,3] and [2,5,6].
+The result of the merge is [1,2,2,3,5,6] with the underlined elements coming from nums1.
+
+ +

Example 2:

+ +
Input: nums1 = [1], m = 1, nums2 = [], n = 0
+Output: [1]
+Explanation: The arrays we are merging are [1] and [].
+The result of the merge is [1].
+
+ +

Example 3:

+ +
Input: nums1 = [0], m = 0, nums2 = [1], n = 1
+Output: [1]
+Explanation: The arrays we are merging are [] and [1].
+The result of the merge is [1].
+Note that because m = 0, there are no elements in nums1. The 0 is only there to ensure the merge result can fit in nums1.
+
+ +

 

+

Constraints:

+ +
    +
  • nums1.length == m + n
  • +
  • nums2.length == n
  • +
  • 0 <= m, n <= 200
  • +
  • 1 <= m + n <= 200
  • +
  • -109 <= nums1[i], nums2[j] <= 109
  • +
+ +

 

+

Follow up: Can you come up with an algorithm that runs in O(m + n) time?

+
\ No newline at end of file diff --git a/CPP/Leetcode/905-sort-array-by-parity/905-sort-array-by-parity.cpp b/CPP/Leetcode/905-sort-array-by-parity/905-sort-array-by-parity.cpp new file mode 100644 index 00000000..643410b1 --- /dev/null +++ b/CPP/Leetcode/905-sort-array-by-parity/905-sort-array-by-parity.cpp @@ -0,0 +1,23 @@ +class Solution { +public: + vector sortArrayByParity(vector& nums) { + vector odd; + vector even; + for(auto it:nums) + { + if(it%2==0) even.push_back(it); + else odd.push_back(it); + } + vector v; + for(auto it:even) + { + v.push_back(it); + } + for(auto it:odd) + { + v.push_back(it); + } + return v; + + } +}; \ No newline at end of file diff --git a/CPP/Leetcode/905-sort-array-by-parity/README.md b/CPP/Leetcode/905-sort-array-by-parity/README.md new file mode 100644 index 00000000..74448b33 --- /dev/null +++ b/CPP/Leetcode/905-sort-array-by-parity/README.md @@ -0,0 +1,26 @@ +

905. Sort Array By Parity

Easy


Given an integer array nums, move all the even integers at the beginning of the array followed by all the odd integers.

+ +

Return any array that satisfies this condition.

+ +

 

+

Example 1:

+ +
Input: nums = [3,1,2,4]
+Output: [2,4,3,1]
+Explanation: The outputs [4,2,3,1], [2,4,1,3], and [4,2,1,3] would also be accepted.
+
+ +

Example 2:

+ +
Input: nums = [0]
+Output: [0]
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= nums.length <= 5000
  • +
  • 0 <= nums[i] <= 5000
  • +
+
\ No newline at end of file diff --git a/CPP/Leetcode/94-binary-tree-inorder-traversal/94-binary-tree-inorder-traversal.cpp b/CPP/Leetcode/94-binary-tree-inorder-traversal/94-binary-tree-inorder-traversal.cpp new file mode 100644 index 00000000..985afd7f --- /dev/null +++ b/CPP/Leetcode/94-binary-tree-inorder-traversal/94-binary-tree-inorder-traversal.cpp @@ -0,0 +1,27 @@ +/** + * Definition for a binary tree node. + * struct TreeNode { + * int val; + * TreeNode *left; + * TreeNode *right; + * TreeNode() : val(0), left(nullptr), right(nullptr) {} + * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} + * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} + * }; + */ +class Solution { + private: + void printer(TreeNode* root){ + if(root==NULL) {return;} + printer(root->left); + v.push_back(root->val); + printer(root->right); + } + +public: + vector v; + vector inorderTraversal(TreeNode* root) { + printer(root); + return v; + } +}; \ No newline at end of file diff --git a/CPP/Leetcode/94-binary-tree-inorder-traversal/README.md b/CPP/Leetcode/94-binary-tree-inorder-traversal/README.md new file mode 100644 index 00000000..e6ca03ee --- /dev/null +++ b/CPP/Leetcode/94-binary-tree-inorder-traversal/README.md @@ -0,0 +1,31 @@ +

94. Binary Tree Inorder Traversal

Easy


Given the root of a binary tree, return the inorder traversal of its nodes' values.

+ +

 

+

Example 1:

+ +
Input: root = [1,null,2,3]
+Output: [1,3,2]
+
+ +

Example 2:

+ +
Input: root = []
+Output: []
+
+ +

Example 3:

+ +
Input: root = [1]
+Output: [1]
+
+ +

 

+

Constraints:

+ +
    +
  • The number of nodes in the tree is in the range [0, 100].
  • +
  • -100 <= Node.val <= 100
  • +
+ +

 

+Follow up: Recursive solution is trivial, could you do it iteratively?
\ No newline at end of file diff --git a/CPP/Leetcode/Matrix Exponentiation - GFG/README.md b/CPP/Leetcode/Matrix Exponentiation - GFG/README.md new file mode 100644 index 00000000..2a742f8e --- /dev/null +++ b/CPP/Leetcode/Matrix Exponentiation - GFG/README.md @@ -0,0 +1,35 @@ +# Matrix Exponentiation +## Medium +
+

Given an equation of the form f(n) = f(n-1) + f(n-2) where f(0) = 1, F(1) = 1 , the task is to find the nth term of this sequence.

+ +

Example 1:

+ +
Input: n = 3
+Output: 3
+Explanation: f(3) = f(2) + f(1) = 3
+
+
+ +

Example 2:

+ +
Input: n = 2
+Output: 2
+Explanation: f(2) = f(1) + f(0) = 2
+
+ +

 

+ +

Yout Task:
+You don't need to read or print anything. Your task is to complete the function FindNthTerm() which takes n as input parameter and returns nth term mod 10^9+7 .

+ +


+Expected Time Compelxity: O(log(n))
+Expected Space Complexity: O(K) where K is constant.

+ +

Constraints:
+1 <= n <= 109

+

+
\ No newline at end of file diff --git a/CPP/Leetcode/Matrix Exponentiation - GFG/matrix-exponentiation.cpp b/CPP/Leetcode/Matrix Exponentiation - GFG/matrix-exponentiation.cpp new file mode 100644 index 00000000..8dbe2b9a --- /dev/null +++ b/CPP/Leetcode/Matrix Exponentiation - GFG/matrix-exponentiation.cpp @@ -0,0 +1,48 @@ +// { Driver Code Starts +#include +using namespace std; + + // } Driver Code Ends +class Solution { + + + private: int M = 1000000007; + vector> multi(vector> &a, vector> &b) { + vector> c = {{0,0},{0,0}}; + for(int i = 0; i < 2; i++) { + for(int j = 0; j < 2; j++) { + for(int k = 0; k < 2; k++) { + c[i][j] += ((a[i][k]%M)*(b[k][j]%M))%M; + } + } + } + return c; + } + + public : int FindNthTerm(long long int n) { + vector> mat = {{1,1},{1,0}}; + vector> res = {{1,1},{1,0}}; + + while(n) { + if(n%2 == 1) + res = multi(mat,res); + + mat = multi(mat,mat); + n = n>>1; + } + return res[0][1]%M; + } +}; +// { Driver Code Starts. +int main(){ + int tc; + cin >> tc; + while(tc--){ + long long int n; + cin >> n; + Solution obj; + int ans = obj.FindNthTerm(n); + cout << ans << "\n"; + } + return 0; +} // } Driver Code Ends \ No newline at end of file diff --git a/CPP/Leetcode/README.md b/CPP/Leetcode/README.md new file mode 100644 index 00000000..e2674cd8 --- /dev/null +++ b/CPP/Leetcode/README.md @@ -0,0 +1,2 @@ +# LeetCode-CPP +Collection of LeetCode questions to ace the coding interview! - Created using [LeetHub](https://github.com/QasimWani/LeetHub) From b5091b0e9e770a9fe7cd9627be1e17e59fe8029d Mon Sep 17 00:00:00 2001 From: divyaa1511 <102688183+divyaa1511@users.noreply.github.com> Date: Tue, 4 Oct 2022 16:34:25 +0530 Subject: [PATCH 098/448] circular queue python program to create a circular queue --- Python/circular queue.py | 84 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 Python/circular queue.py diff --git a/Python/circular queue.py b/Python/circular queue.py new file mode 100644 index 00000000..6b3ac9c9 --- /dev/null +++ b/Python/circular queue.py @@ -0,0 +1,84 @@ +# PYTHON PROGRAM TO CREATE A CIRCULAR QUEUE + +class Queue: + def __init__(self,maxsize): + self.items = maxsize*[None] + self.maxsize=maxsize + self.start=-1 + self.top=-1 + + def __str__(self): + values=[str(x) for x in self.items] + return ' '.join(values) + + + + # to check if queue is full + def isFull(self): + if self.top+1==self.start: + return True + elif self.start ==0 and self.top+1==self.maxsize: + return True + else: + return False + + + + # to check if queue is empty + def isEmpty(self): + if self.top ==-1: + return True + else: + return False + + + + # insert elements + def Enqueue(self,value): + if self.isFull(): + return "queue is full" + else: + if self.top+1==self.maxsize: + self.top=0 + else: + self.top+=1 + if self.start==-1: + self.start=0 + self.items[self.top]=value + return "element inserted" + + + + def dequeue(self): + if self.isEmpty(): + return "there is no element in queue" + else: + firstElement = self.items[self.start] + start = self.start + if self.start ==self.top: + self.start=-1 + self.top=-1 + elif self.start+1==self.maxsize: + self.start=0 + else: + self.start+=1 + self.items[start]=None + return firstElement + + + + # peek() + def peek(self): + if self.isEmpty(): + return "no element in queue" + else: + return self.items[self.start] + + + + #delete entire queue + def delete(self): + self.items =self.maxsize*[None] + self.top=-1 + self.start=-1 + From 9e9edd1223f5b8089f3f1878c61602ec2e7c6178 Mon Sep 17 00:00:00 2001 From: ShreyasiDebnath <92165807+ShreyasiDebnath@users.noreply.github.com> Date: Tue, 4 Oct 2022 16:35:33 +0530 Subject: [PATCH 099/448] Create QueueUsingStack.cpp --- CPP/QUEUE/QueueUsingStack.cpp | 61 +++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 CPP/QUEUE/QueueUsingStack.cpp diff --git a/CPP/QUEUE/QueueUsingStack.cpp b/CPP/QUEUE/QueueUsingStack.cpp new file mode 100644 index 00000000..3b708011 --- /dev/null +++ b/CPP/QUEUE/QueueUsingStack.cpp @@ -0,0 +1,61 @@ + +#include +using namespace std; +struct Queue{ + stack s1,s2; + + + void enqueue(int x){ + + s1.push(x); + + } + int dequeue(){ + while(!s1.empty()){ + s2.push(s1.top()); + s1.pop(); + } + int ans=s2.top(); + s2.pop(); + while(!s2.empty()){ + s1.push(s2.top()); + s2.pop(); + + } + return ans; + + } + + +}; +int main(){ + Queue q; + int ch; + int x; + cout<<"Press 0 to exit else enter 1: "; + cin>>ch; + while(ch!=0) + { + cout<<"\n"<<"1.ENQUEUE"<<"\n"<<"2.DEQUQUE"<<"\n"; + cout<<"\n"<<"Enter choice :"; + cin>>ch; + switch (ch) + { + case 1: + cout<<"Enter the value you want to enqueue: "; + cin>>x; + q.enqueue(x); + break; + case 2: + cout<<"Dequeued element is : "< Date: Tue, 4 Oct 2022 16:43:33 +0530 Subject: [PATCH 100/448] SORTING ALGORITHMS BUBBLE SORT , SELECTION SORT ,INSERTION SORT ,BUCKET SORT ,MERGE SORT ,QUICK SORT ,HEAP SORT --- Python/all sorting methods.py | 176 ++++++++++++++++++++++++++++++++++ 1 file changed, 176 insertions(+) create mode 100644 Python/all sorting methods.py diff --git a/Python/all sorting methods.py b/Python/all sorting methods.py new file mode 100644 index 00000000..6a44c3d8 --- /dev/null +++ b/Python/all sorting methods.py @@ -0,0 +1,176 @@ +# BUBBLE SORT +def bubblesort(customList): + for i in range(len(customList)-1): #O(n) + for j in range(len(customList)-i-1): #O(n) + if customList[j]>customList[j+1]: #O(1) + customList[j],customList[j+1]=customList[j+1],customList[j] + print(customList) +# cList=[2,1,3,6,9,7,4,8,5] +# bubblesort(cList) + +# SELECTION SORT +def selectionSort(customList): + for i in range(len(customList)): + min_index = i + for j in range(i+1,len(customList)): + if customList[min_index] > customList[j]: + min_index = j + customList[i],customList[min_index] = customList[min_index],customList[i] + print(customList) + +# cList=[2,1,3,6,9,7,4,8,5] +# selectionSort(cList) + + + +# INSERTION SORT + +def insertionSort(customList): + for i in range(1,len(customList)): + key=customList[i] + j=i-1 + while j>=0 and key < customList[j]: + customList[j+1] = customList[j] + j -= 1 + customList[j+1] = key + return customList + +# cList=[2,1,3,6,9,7,4,8,5] +# print(insertionSort(cList)) + +# BUCKET SORT + +import math +from xmlrpc.server import MultiPathXMLRPCServer + +def bucketSort(customList): + numberofBuckets = round(math.sqrt(len(customList))) + maxValue = max(customList) + arr =[] + + for i in range(numberofBuckets): + arr.append([]) + for j in customList: + index_b = math.ceil(j*numberofBuckets/maxValue) + arr[index_b-1].append(j) + + for i in range(numberofBuckets): + arr[i] = insertionSort(arr[i]) + + k = 0 + for i in range(numberofBuckets): + for j in range(len(arr[i])): + customList[k] = arr[i][j] + k+=1 + return customList + + + +# cList=[2,1,3,6,9,7,4,8,5] +# print(bucketSort(cList)) + + +# MERGE SORT ALGORITHM + +def merge(customList, l, m, r): + n1 = m - l + 1 + n2 = r - m + + L =[0]*(n1) + R =[0]*(n2) + + for i in range(0,n1): + L[i] = customList[l+i] + + for j in range(0,n2): + R[j] = customList[m+1+j] + + i = 0 + j = 0 + k = l + while i < n1 and j Date: Tue, 4 Oct 2022 16:43:58 +0530 Subject: [PATCH 101/448] Create arrangeNumbers --- Java/Array/arrangeNumbers | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 Java/Array/arrangeNumbers diff --git a/Java/Array/arrangeNumbers b/Java/Array/arrangeNumbers new file mode 100644 index 00000000..03577fd7 --- /dev/null +++ b/Java/Array/arrangeNumbers @@ -0,0 +1,36 @@ +import java.util.*; +public class arrange_numbers { + + public static void main(String[] args) { + // TODO Auto-generated method stub + Scanner sc = new Scanner (System.in); + int n = sc.nextInt (); + int arr[] = new int[n]; + + for (int i = 0; i < n; i++) + arr[i] = sc.nextInt (); + int p1 = 0, p2 = n - 1; + + while (p1 < p2) + { + while (arr[p1] % 2 == 0 && p1 < p2) + p1++; + + while (arr[p2] % 2 != 0 && p1 < p2) + p2--; + + if (p1 < p2) + { + int temp = arr[p1]; + arr[p1] = arr[p2]; + arr[p2] = temp; + p1++; + p2--; + } + } + + for (int i = 0; i < n; i++) + System.out.print (arr[i] + " "); + } + +} From 641e1ca586e006c1899baa848ca4467560ebb512 Mon Sep 17 00:00:00 2001 From: Sandeep V <64470115+Sanu1999@users.noreply.github.com> Date: Tue, 4 Oct 2022 16:45:12 +0530 Subject: [PATCH 102/448] Create android fingerprint dsa algorithm.java --- .../android fingerprint dsa algorithm.java | 146 ++++++++++++++++++ 1 file changed, 146 insertions(+) create mode 100644 DSA android fingerprint/android fingerprint dsa algorithm.java diff --git a/DSA android fingerprint/android fingerprint dsa algorithm.java b/DSA android fingerprint/android fingerprint dsa algorithm.java new file mode 100644 index 00000000..459dda0a --- /dev/null +++ b/DSA android fingerprint/android fingerprint dsa algorithm.java @@ -0,0 +1,146 @@ +package com.paulsofts.gfgfingerprintauthentication; + +import androidx.appcompat.app.AppCompatActivity; +import androidx.core.app.ActivityCompat; + +import android.Manifest; +import android.annotation.TargetApi; +import android.app.KeyguardManager; +import android.content.pm.PackageManager; +import android.hardware.fingerprint.FingerprintManager; +import android.os.Build; +import android.os.Bundle; +import android.security.keystore.KeyGenParameterSpec; +import android.security.keystore.KeyPermanentlyInvalidatedException; +import android.security.keystore.KeyProperties; +import android.widget.TextView; + +import java.io.IOException; +import java.security.InvalidAlgorithmParameterException; +import java.security.InvalidKeyException; +import java.security.KeyStore; +import java.security.KeyStoreException; +import java.security.NoSuchAlgorithmException; +import java.security.NoSuchProviderException; +import java.security.UnrecoverableKeyException; +import java.security.cert.CertificateException; + +import javax.crypto.Cipher; +import javax.crypto.KeyGenerator; +import javax.crypto.NoSuchPaddingException; +import javax.crypto.SecretKey; + +public class MainActivity extends AppCompatActivity { + + private KeyStore keyStore; + // Defining variable for storing + // key in android keystore container + private static final String KEY_NAME = "CaptainSandeep"; + private Cipher cipher; + private TextView errorText; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + + // Initializing KeyguardManager and FingerprintManager + KeyguardManager keyguardManager = (KeyguardManager) getSystemService(KEYGUARD_SERVICE); + FingerprintManager fingerprintManager = (FingerprintManager) getSystemService(FINGERPRINT_SERVICE); + + // Initializing our error text + errorText = (TextView) findViewById(R.id.errorText); + + // Here, we are using various security checks + // Checking device is inbuilt with fingerprint sensor or not + if(!fingerprintManager.isHardwareDetected()){ + + // Setting error message if device + // doesn't have fingerprint sensor + errorText.setText("Device does not support fingerprint sensor"); + }else { + // Checking fingerprint permission + if (ActivityCompat.checkSelfPermission(this, Manifest.permission.USE_FINGERPRINT) != PackageManager.PERMISSION_GRANTED) { + errorText.setText("Fingerprint authentication is not enabled"); + }else{ + // Check for at least one registered finger + if (!fingerprintManager.hasEnrolledFingerprints()) { + errorText.setText("Register at least one finger"); + }else{ + // Checking for screen lock security + if (!keyguardManager.isKeyguardSecure()) { + errorText.setText("Screen lock security not enabled"); + }else{ + + // if everything is enabled and correct then we will generate + // the encryption key which will be stored on the device + generateKey(); + if (cipherInit()) { + FingerprintManager.CryptoObject cryptoObject = new FingerprintManager.CryptoObject(cipher); + FingerprintHandler helper = new FingerprintHandler(this); + helper.startAuth(fingerprintManager, cryptoObject); + } + } + } + } + } + } + + + @TargetApi(Build.VERSION_CODES.M) + protected void generateKey() { + try { + keyStore = KeyStore.getInstance("AndroidKeyStore"); + } catch (Exception e) { + e.printStackTrace(); + } + + + KeyGenerator keyGenerator; + try { + keyGenerator = KeyGenerator.getInstance(KeyProperties.KEY_ALGORITHM_AES, "AndroidKeyStore"); + } catch (NoSuchAlgorithmException | NoSuchProviderException e) { + throw new RuntimeException("KeyGenerator instance failed", e); + } + + try { + keyStore.load(null); + keyGenerator.init(new + KeyGenParameterSpec.Builder(KEY_NAME, + KeyProperties.PURPOSE_ENCRYPT | + KeyProperties.PURPOSE_DECRYPT) + .setBlockModes(KeyProperties.BLOCK_MODE_CBC) + .setUserAuthenticationRequired(true) + .setEncryptionPaddings( + KeyProperties.ENCRYPTION_PADDING_PKCS7) + .build()); + keyGenerator.generateKey(); + } catch (NoSuchAlgorithmException | + InvalidAlgorithmParameterException + | CertificateException | IOException e) { + throw new RuntimeException(e); + } + } + + + @TargetApi(Build.VERSION_CODES.M) + public boolean cipherInit() { + try { + cipher = Cipher.getInstance(KeyProperties.KEY_ALGORITHM_AES + "/" + KeyProperties.BLOCK_MODE_CBC + "/" + KeyProperties.ENCRYPTION_PADDING_PKCS7); + } catch (NoSuchAlgorithmException | NoSuchPaddingException e) { + throw new RuntimeException("Cipher failed", e); + } + + try { + keyStore.load(null); + SecretKey key = (SecretKey) keyStore.getKey(KEY_NAME, + null); + cipher.init(Cipher.ENCRYPT_MODE, key); + return true; + } catch (KeyPermanentlyInvalidatedException e) { + return false; + } catch (KeyStoreException | CertificateException | UnrecoverableKeyException | IOException | NoSuchAlgorithmException | InvalidKeyException e) { + throw new RuntimeException("Cipher initialization failed", e); + } + } +} From 864d64e2466a97f60dc9875a68137de36644660f Mon Sep 17 00:00:00 2001 From: Juhii16 <88276540+Juhii16@users.noreply.github.com> Date: Tue, 4 Oct 2022 17:00:49 +0530 Subject: [PATCH 103/448] Create Kadanes.cpp --- Dynamic Programming/Kadanes.cpp | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 Dynamic Programming/Kadanes.cpp diff --git a/Dynamic Programming/Kadanes.cpp b/Dynamic Programming/Kadanes.cpp new file mode 100644 index 00000000..2a78e536 --- /dev/null +++ b/Dynamic Programming/Kadanes.cpp @@ -0,0 +1,26 @@ +// C++ program to print largest contiguous array sum +#include +using namespace std; +//This is the smallest code for kadanes algorithm +int maxSubArraySum(int A[], int size) +{ + int ans = A[0]; + int sum = A[0]; + for(int i =1 ; i Date: Tue, 4 Oct 2022 17:03:47 +0530 Subject: [PATCH 104/448] Revert "Soduko-solver.java (#356)" (#399) This reverts commit ee21b78b722bef5d55418622eb3b80b380d472ef. --- Soduko-solver.java | 55 ---------------------------------------------- 1 file changed, 55 deletions(-) delete mode 100644 Soduko-solver.java diff --git a/Soduko-solver.java b/Soduko-solver.java deleted file mode 100644 index c67a88c5..00000000 --- a/Soduko-solver.java +++ /dev/null @@ -1,55 +0,0 @@ -class Solution { -public void solveSudoku(char[][] board) -{ -solvsss(board); -} -public boolean solvsss(char[][] board) -{ -for(int i=0;i Date: Tue, 4 Oct 2022 17:03:48 +0530 Subject: [PATCH 105/448] Problem Name : Reverse Word In String --- String/reverseWordinString.cpp | 38 ++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 String/reverseWordinString.cpp diff --git a/String/reverseWordinString.cpp b/String/reverseWordinString.cpp new file mode 100644 index 00000000..790fdedf --- /dev/null +++ b/String/reverseWordinString.cpp @@ -0,0 +1,38 @@ +#include +using namespace std; +string reverseWords(string s) +{ + int n = s.length(); + if (n == 1) + { + return s; + } + int k = 0, j; + for (int i = 0; i < n; i++) + { + if (s[i + 1] == 32 || s[i + 1] == '\0') + { + j = i; + char p; + while (k < j) + { + p = s[k]; + s[k] = s[j]; + s[j] = p; + k++, j--; + } + k = i + 2; + } + } + return s; +} + +int main() +{ + string s,k; + cout << "Enter The String : "; + getline(cin, s); + k=reverseWords(s); + cout << s << endl; + cout << k << endl; +} \ No newline at end of file From 0d3a3029558424a758198a05e75ec1e79557fed5 Mon Sep 17 00:00:00 2001 From: kshitij Date: Tue, 4 Oct 2022 17:05:13 +0530 Subject: [PATCH 106/448] DS C++ Prog Added --- ...ection sort search on given array list.cpp | 92 ++++++++++++ .../Binary Search on Given Array List.cpp | 62 ++++++++ .../Insertion and Quick sort on Arraylist.cpp | 136 ++++++++++++++++++ ...Linear Sort Search on Given Array List.cpp | 46 ++++++ ...arse Matrix Using Array Representation.cpp | 69 +++++++++ 5 files changed, 405 insertions(+) create mode 100644 CPP/DS C++/Binary & Selection sort search on given array list.cpp create mode 100644 CPP/DS C++/Binary Search on Given Array List.cpp create mode 100644 CPP/DS C++/Insertion and Quick sort on Arraylist.cpp create mode 100644 CPP/DS C++/Linear Sort Search on Given Array List.cpp create mode 100644 CPP/DS C++/Sparse Matrix Using Array Representation.cpp diff --git a/CPP/DS C++/Binary & Selection sort search on given array list.cpp b/CPP/DS C++/Binary & Selection sort search on given array list.cpp new file mode 100644 index 00000000..eeea1dda --- /dev/null +++ b/CPP/DS C++/Binary & Selection sort search on given array list.cpp @@ -0,0 +1,92 @@ +class search +{ + private: + int a[5]; + int i,n,j,temp; + public: + void getdata(); + void bubble_search(); + void select_search(); + }; + + void search::getdata() + { + cout<<"\n Enter size of array:"; + cin>>n; + cout<<"\n Enter the array elements:"; + + for(i=0;i>a[i]; + } + } + void search::bubble_search() + { + for(i=0;ia[j+1]) + { + temp=a[j]; + a[j]=a[j+1]; + a[j+1]=temp; + } + } + } + +cout<<"\n Array after bubble sort:"; + for(i=0;ia[j]) + { + temp=a[i]; + a[i]=a[j]; + a[j]=temp; + } + } + } + cout<<"Array after selection sort:\n"; + for(i=0;i>choice; + switch(choice) + { + + + case 'A': + cout<<"Program to implement Bubble sort on a array list:"; + s.getdata(); + s.bubble_search(); + break; + case 'B': + cout<<"Program to implement Selection sort on a array list:"; + s.getdata(); + s.select_search(); + break; + default: cout<<"Enter correct choice:"; + } + getch(); + } diff --git a/CPP/DS C++/Binary Search on Given Array List.cpp b/CPP/DS C++/Binary Search on Given Array List.cpp new file mode 100644 index 00000000..461203c9 --- /dev/null +++ b/CPP/DS C++/Binary Search on Given Array List.cpp @@ -0,0 +1,62 @@ +class search +{ + private: + inta[20],beg,end,mid,item,n; + public: + void getdata(); + void binary_search(); + }; + + void search::getdata() + { + cout<<"Enter the size of array:"; + cin>>n; + cout<<"Enter the array elements:"; + for(int i=1;i<=n;i++) + { + cin>>a[i]; + } + } + void search::binary_search() + { + + cout<<"Enter a number to be search:"; + cin>>item; + beg=0;end=n-1; + mid=(beg+end)/2; + + while((beg<=end)&&(a[mid]!=item)) + { + if(item>no; + cout<<"\n Enter the array elements:"; + for(int i=0;i>a[i]; + } + } + + void insertquick::insertionsort() + { + for(i=1;i<=no-1;i++) + { + for(j=i;j>=1;j--) + { + if(a[j]>no; + cout<<"\n Enter array of element to sort: "; + for(inti=0;i>k[i]; + } +} +void insertquick::sortit(int x[], intlb, intub) +{ + int j; + if(lb>= ub) + return; + show(); + partition(x,lb,ub,j); + sortit(x,lb,j-1); + sortit(x,j+1,ub); +} + +void insertquick::partition(int x[],intlb,intub,int&pj) +{ + int a, down, temp, up; + a = x[lb]; + up = ub; + down = lb; +while(down < up) +{ + while(x[down] <= a) + down++; + while(x[up] > a) + up--; + if(down < up) + { + temp = x[down]; + x[down] = x[up]; + x[up] = temp; + } + } + + x[lb] = x[up]; + x[up] = a; + pj = up; +} + +void insertquick::show() +{ + for(inti=0;i>choice; + + switch(choice) + { + case 'A': + cout<<"\n Program to implement Insertion sort:"; + iq.getdata(); + iq.insertionsort(); + iq.display(); + break; + + case 'B': + cout<<"\n Program to implement Quick sort:"; + iq.getarray(); + iq.sortit(iq.k,0,iq.no-1); + iq.show(); + break; + default: + + cout<<"Enter proper choice:"; + } + getch(); + } diff --git a/CPP/DS C++/Linear Sort Search on Given Array List.cpp b/CPP/DS C++/Linear Sort Search on Given Array List.cpp new file mode 100644 index 00000000..46e227f8 --- /dev/null +++ b/CPP/DS C++/Linear Sort Search on Given Array List.cpp @@ -0,0 +1,46 @@ +class search +{ + public: + inta[5],no,flag; + void getdata(); + void linear(); + }; + +void search::getdata() + { + cout<<"\n Enter the numbers:"; + for(int i=0;i<5;i++) + { + cin>>a[i]; + } + cout<<"Enter the no to be searched:"; + cin>>no; + } + void search::linear() + { + for(int i=0;i<5;i++) + { + if(no==a[i]) + { + flag=1; + break; + } + } + if(flag==1) + { + cout<<"\n The no is found at position:"<>a[i][j]; + } + } + } + + void matrix::calculate() + { + k=0; + for(int i=0;i<3;i++) + { + for(int j=0;j<3;j++) + { + if(a[i][j]!=0) + { + s[0][k]=i; + s[1][k]=j; + s[2][k]=a[i][j]; + k++; + } + } + } + } + + void matrix::display() + { + cout<<"The separate matrix is:\n"; + + for(i=0;i<3;i++) + { + for(j=0;j<3;j++) + { + cout<<"\t"< Date: Tue, 4 Oct 2022 17:05:38 +0530 Subject: [PATCH 107/448] Revert "Create Heap Sort in C++ (#364)" (#400) This reverts commit 54f0c87d6b96326e7a4176406982885cf12709e0. --- 49a.cpp | 28 ------------- CPP/sorting/Heap Sort in C++ | 77 ------------------------------------ 2 files changed, 105 deletions(-) delete mode 100644 49a.cpp delete mode 100644 CPP/sorting/Heap Sort in C++ diff --git a/49a.cpp b/49a.cpp deleted file mode 100644 index 840d794c..00000000 --- a/49a.cpp +++ /dev/null @@ -1,28 +0,0 @@ -#include -using namespace std; -int main(){ - -string s; -getline(cin,s); - -int l=s.length(); -int f=0; -for (int i=l;i=0;i--){ -if (s[i]!=' ' || s[i]!='?'){ - if (s[i]=='A' || s[i]=='E' || s[i]=='I' || s[i]=='O' || s[i]=='U' || s[i]=='Y' || s[i]=='a' || s[i]=='e' || s[i]=='i' || s[i]=='o' || s[i]=='u' || s[i]=='y' ){ - f=1; - break; - - } - else - f=0;}} - - if (f==1){ - cout<<"YES"< -using namespace std; - -// To heapify a subtree rooted with node i -// which is an index in arr[]. -// n is size of heap -void heapify(int arr[], int N, int i) -{ - - // Initialize largest as root - int largest = i; - - // left = 2*i + 1 - int l = 2 * i + 1; - - // right = 2*i + 2 - int r = 2 * i + 2; - - // If left child is larger than root - if (l < N && arr[l] > arr[largest]) - largest = l; - - // If right child is larger than largest - // so far - if (r < N && arr[r] > arr[largest]) - largest = r; - - // If largest is not root - if (largest != i) { - swap(arr[i], arr[largest]); - - // Recursively heapify the affected - // sub-tree - heapify(arr, N, largest); - } -} - -// Main function to do heap sort -void heapSort(int arr[], int N) -{ - - // Build heap (rearrange array) - for (int i = N / 2 - 1; i >= 0; i--) - heapify(arr, N, i); - - // One by one extract an element - // from heap - for (int i = N - 1; i > 0; i--) { - - // Move current root to end - swap(arr[0], arr[i]); - - // call max heapify on the reduced heap - heapify(arr, i, 0); - } -} - -// A utility function to print array of size n -void printArray(int arr[], int N) -{ - for (int i = 0; i < N; ++i) - cout << arr[i] << " "; - cout << "\n"; -} - -// Driver's code -int main() -{ - int arr[] = { 12, 11, 13, 5, 6, 7 }; - int N = sizeof(arr) / sizeof(arr[0]); - - // Function call - heapSort(arr, N); - - cout << "Sorted array is \n"; - printArray(arr, N); -} From 382df7da65909530e1f244165835fc376cfce01b Mon Sep 17 00:00:00 2001 From: Sujit Jaunjal <78826399+sujit-jaunjal@users.noreply.github.com> Date: Tue, 4 Oct 2022 17:06:06 +0530 Subject: [PATCH 108/448] Create domino.cpp --- CPP/pattern/domino.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 CPP/pattern/domino.cpp diff --git a/CPP/pattern/domino.cpp b/CPP/pattern/domino.cpp new file mode 100644 index 00000000..1e37d428 --- /dev/null +++ b/CPP/pattern/domino.cpp @@ -0,0 +1,12 @@ +#include + +using namespace std; + +int main(){ + + int m,n; + cin>>m>>n; + + cout<<(m*n)/2; + return 0; +} From 2429875823ee48a42b4b41c9227b9b3563a82c5b Mon Sep 17 00:00:00 2001 From: Adarsh jaiswal Date: Tue, 4 Oct 2022 17:06:17 +0530 Subject: [PATCH 109/448] Revert "Leetcode solution merge interval.java (#375)" (#402) This reverts commit 6f8e99d5b06889b6cb91129fa070e09e57053ac5. --- 56-LEETCODE-SOLUTION-Merge-interval.java | 93 ------------------------ 1 file changed, 93 deletions(-) delete mode 100644 56-LEETCODE-SOLUTION-Merge-interval.java diff --git a/56-LEETCODE-SOLUTION-Merge-interval.java b/56-LEETCODE-SOLUTION-Merge-interval.java deleted file mode 100644 index 206067a3..00000000 --- a/56-LEETCODE-SOLUTION-Merge-interval.java +++ /dev/null @@ -1,93 +0,0 @@ -class Solution { - private Map> graph; - private Map> nodesInComp; - private Set visited; - - // return whether two intervals overlap (inclusive) - private boolean overlap(int[] a, int[] b) { - return a[0] <= b[1] && b[0] <= a[1]; - } - - // build a graph where an undirected edge between intervals u and v exists - // iff u and v overlap. - private void buildGraph(int[][] intervals) { - graph = new HashMap<>(); - for (int[] interval : intervals) { - graph.put(interval, new LinkedList<>()); - } - - for (int[] interval1 : intervals) { - for (int[] interval2 : intervals) { - if (overlap(interval1, interval2)) { - graph.get(interval1).add(interval2); - graph.get(interval2).add(interval1); - } - } - } - } - - // merges all of the nodes in this connected component into one interval. - private int[] mergeNodes(List nodes) { - int minStart = nodes.get(0)[0]; - for (int[] node : nodes) { - minStart = Math.min(minStart, node[0]); - } - - int maxEnd = nodes.get(0)[1]; - for (int[] node : nodes) { - maxEnd = Math.max(maxEnd, node[1]); - } - - return new int[] {minStart, maxEnd}; - } - - // use depth-first search to mark all nodes in the same connected component - // with the same integer. - private void markComponentDFS(int[] start, int compNumber) { - Stack stack = new Stack<>(); - stack.add(start); - - while (!stack.isEmpty()) { - int[] node = stack.pop(); - if (!visited.contains(node)) { - visited.add(node); - - if (nodesInComp.get(compNumber) == null) { - nodesInComp.put(compNumber, new LinkedList<>()); - } - nodesInComp.get(compNumber).add(node); - - for (int[] child : graph.get(node)) { - stack.add(child); - } - } - } - } - - // gets the connected components of the interval overlap graph. - private void buildComponents(int[][] intervals) { - nodesInComp = new HashMap<>(); - visited = new HashSet<>(); - int compNumber = 0; - - for (int[] interval : intervals) { - if (!visited.contains(interval)) { - markComponentDFS(interval, compNumber); - compNumber++; - } - } - } - - public int[][] merge(int[][] intervals) { - buildGraph(intervals); - buildComponents(intervals); - - // for each component, merge all intervals into one interval. - List merged = new LinkedList<>(); - for (int comp = 0; comp < nodesInComp.size(); comp++) { - merged.add(mergeNodes(nodesInComp.get(comp))); - } - - return merged.toArray(new int[merged.size()][]); - } -} From 052d192869808006cee6332ae32fd982c04c3abf Mon Sep 17 00:00:00 2001 From: Adarsh jaiswal Date: Tue, 4 Oct 2022 17:07:20 +0530 Subject: [PATCH 110/448] Revert "Created add-digit-dp-problem.java (#362)" (#405) This reverts commit adfbcfd2b9f6166d5667a7b4e0e257f563fc3b22. --- Add-digit-dp-problem.java | 166 -------------------------------------- 1 file changed, 166 deletions(-) delete mode 100644 Add-digit-dp-problem.java diff --git a/Add-digit-dp-problem.java b/Add-digit-dp-problem.java deleted file mode 100644 index 2ea2e8c5..00000000 --- a/Add-digit-dp-problem.java +++ /dev/null @@ -1,166 +0,0 @@ - -import java.util.ArrayList; - -import java.util.Arrays; - -// Given two integers a and b. The task is to print -// sum of all the digits appearing in the -// integers between a and b - -public class AMAN { - - - // Memoization for the state results - - static long dp[][][] = new long[20][180][2]; - - - // Stores the digits in x in a vector digit - - static void getDigits(long x, ArrayList digit) - - { - - while (x != 0) { - - digit.add((int)(x % 10)); - - x /= 10; - - } - - } - - - // Return sum of digits from 1 to integer in - - // digit vector - - static long digitSum(int idx, int sum, int tight, - - ArrayList digit) - - { - - // base case - - if (idx == -1) - - return sum; - - - // checking if already calculated this state - - if (dp[idx][sum][tight] != -1 && tight != 1) - - return dp[idx][sum][tight]; - - - long ret = 0; - - - // calculating range value - - int k = (tight != 0) ? digit.get(idx) : 9; - - - for (int i = 0; i <= k; i++) { - - // calculating newTight value for next state - - int newTight - - = (digit.get(idx) == i) ? tight : 0; - - - // fetching answer from next state - - ret += digitSum(idx - 1, sum + i, newTight, - - digit); - - } - - - if (tight != 0) - - dp[idx][sum][tight] = ret; - - - return ret; - - } - - - // Returns sum of digits in numbers from a to b. - - static int rangeDigitSum(int a, int b) - - { - - // initializing dp with -1 - - for (int i = 0; i < 20; i++) - - for (int j = 0; j < 180; j++) - - for (int k = 0; k < 2; k++) - - dp[i][j][k] = -1; - - - // storing digits of a-1 in digit vector - - ArrayList digitA - - = new ArrayList(); - - getDigits(a - 1, digitA); - - - // Finding sum of digits from 1 to "a-1" which is - - // passed as digitA. - - long ans1 - - = digitSum(digitA.size() - 1, 0, 1, digitA); - - - // Storing digits of b in digit vector - - ArrayList digitB - - = new ArrayList(); - - getDigits(b, digitB); - - - // Finding sum of digits from 1 to "b" which is - - // passed as digitB. - - long ans2 - - = digitSum(digitB.size() - 1, 0, 1, digitB); - - - return (int)(ans2 - ans1); - - } - - - // driver function to call above function - - public static void main(String[] args) - - { - - int a = 123, b = 1024; - - System.out.println("digit sum for given range : " - - + rangeDigitSum(a, b)); - - } -} From 1d91c50c8a1a56675c352e3769baa4ab7dec9463 Mon Sep 17 00:00:00 2001 From: Adarsh jaiswal Date: Tue, 4 Oct 2022 17:08:05 +0530 Subject: [PATCH 111/448] Revert "Create BFS-ALGORITHM-USING-C++ (#372)" (#406) This reverts commit 936bc02440e79a1ca900a2b45a9fd8c45c26c179. --- BFS-ALGORITHM-USING-C++ | 72 ----------------------------------------- 1 file changed, 72 deletions(-) delete mode 100644 BFS-ALGORITHM-USING-C++ diff --git a/BFS-ALGORITHM-USING-C++ b/BFS-ALGORITHM-USING-C++ deleted file mode 100644 index 25141e40..00000000 --- a/BFS-ALGORITHM-USING-C++ +++ /dev/null @@ -1,72 +0,0 @@ -// BFS algorithm in C++ - -#include -#include - -using namespace std; - -class Graph { - int numVertices; - list* adjLists; - bool* visited; - - public: - Graph(int vertices); - void addEdge(int src, int dest); - void BFS(int startVertex); -}; - -// Create a graph with given vertices, -// and maintain an adjacency list -Graph::Graph(int vertices) { - numVertices = vertices; - adjLists = new list[vertices]; -} - -// Add edges to the graph -void Graph::addEdge(int src, int dest) { - adjLists[src].push_back(dest); - adjLists[dest].push_back(src); -} - -// BFS algorithm -void Graph::BFS(int startVertex) { - visited = new bool[numVertices]; - for (int i = 0; i < numVertices; i++) - visited[i] = false; - - list queue; - - visited[startVertex] = true; - queue.push_back(startVertex); - - list::iterator i; - - while (!queue.empty()) { - int currVertex = queue.front(); - cout << "Visited " << currVertex << " "; - queue.pop_front(); - - for (i = adjLists[currVertex].begin(); i != adjLists[currVertex].end(); ++i) { - int adjVertex = *i; - if (!visited[adjVertex]) { - visited[adjVertex] = true; - queue.push_back(adjVertex); - } - } - } -} - -int main() { - Graph g(4); - g.addEdge(0, 1); - g.addEdge(0, 2); - g.addEdge(1, 2); - g.addEdge(2, 0); - g.addEdge(2, 3); - g.addEdge(3, 3); - - g.BFS(2); - - return 0; -} From 374de7d519a0b988cd103d253649d7cd98459823 Mon Sep 17 00:00:00 2001 From: Adarsh jaiswal Date: Tue, 4 Oct 2022 17:08:49 +0530 Subject: [PATCH 112/448] Revert "Add files via upload (#252)" (#407) This reverts commit cc4f69180a957dd6f2cf7b4bd8fd0c830e3c3f22. --- Leetcode 930 solution.cpp | 16 ---------------- 1 file changed, 16 deletions(-) delete mode 100644 Leetcode 930 solution.cpp diff --git a/Leetcode 930 solution.cpp b/Leetcode 930 solution.cpp deleted file mode 100644 index 13c6fbca..00000000 --- a/Leetcode 930 solution.cpp +++ /dev/null @@ -1,16 +0,0 @@ -class Solution { -public: - int numSubarraysWithSum(vector& nums, int goal) { - unordered_map m; - m[0]=1; - int ans=0,s=0; - for(auto x:nums) - { - s+=x; - if(m.find(s-goal)!=m.end()) - ans+=m[s-goal]; - m[s]++; - } - return ans; - } -}; \ No newline at end of file From 08b5b75e48ee9d4bba30af27053ff40b5dfde48d Mon Sep 17 00:00:00 2001 From: Adarsh jaiswal Date: Tue, 4 Oct 2022 17:09:39 +0530 Subject: [PATCH 113/448] Revert "Number of dice rolls with target sum (#234)" (#408) This reverts commit 57048da03905303997266b23dfde6d493a0bb1c1. --- .../Number of Dice Rolls With Target Sum.cpp | 30 ------------------ Quick Review.pdf | Bin 206530 -> 0 bytes 2 files changed, 30 deletions(-) delete mode 100644 CPP/Problems/Number of Dice Rolls With Target Sum.cpp delete mode 100644 Quick Review.pdf diff --git a/CPP/Problems/Number of Dice Rolls With Target Sum.cpp b/CPP/Problems/Number of Dice Rolls With Target Sum.cpp deleted file mode 100644 index fc091137..00000000 --- a/CPP/Problems/Number of Dice Rolls With Target Sum.cpp +++ /dev/null @@ -1,30 +0,0 @@ -class Solution { -public: - - int solve(int n, int k ,int t,vector>&dp){ - if(n == 0 && t == 0 ) - return 1; - - if(n == 0) - return 0; - - int take = 0; - - if(dp[n][t] != -1) - return dp[n][t]; - - for(int i = 1;i<=k;i++) { - if(t >= i) { - take += solve(n-1,k,t-i , dp); - take %= 1000000007; - } - } - return dp[n][t] = take; - } - - int numRollsToTarget(int n, int k, int target) { - vector> dp(n+1 , vector (target+1,-1)); - return solve(n , k ,target , dp); - } - -}; diff --git a/Quick Review.pdf b/Quick Review.pdf deleted file mode 100644 index 77d814a1e2b2045b44122cae4e296ad221283606..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 206530 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 Date: Tue, 4 Oct 2022 17:10:02 +0530 Subject: [PATCH 114/448] Add files via upload --- CPP/graph_tree/Check for bipertite.cpp | 82 ++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 CPP/graph_tree/Check for bipertite.cpp diff --git a/CPP/graph_tree/Check for bipertite.cpp b/CPP/graph_tree/Check for bipertite.cpp new file mode 100644 index 00000000..73482aae --- /dev/null +++ b/CPP/graph_tree/Check for bipertite.cpp @@ -0,0 +1,82 @@ + + +#include + +using namespace std; + +const int V = 4; + +// This function returns true if +// graph G[V][V] is Bipartite, else false +bool isBipartiteUtil(int G[][V], int src, int colorArr[]) +{ + colorArr[src] = 1; + + // Create a queue (FIFO) of vertex numbers a + // nd enqueue source vertex for BFS traversal + queue q; + q.push(src); + + // Run while there are vertices in queue (Similar to + // BFS) + while (!q.empty()) { + // Dequeue a vertex from queue ( Refer + // http://goo.gl/35oz8 ) + int u = q.front(); + q.pop(); + + // Return false if there is a self-loop + if (G[u][u] == 1) + return false; + + // Find all non-colored adjacent vertices + for (int v = 0; v < V; ++v) { + // An edge from u to v exists and + // destination v is not colored + if (G[u][v] && colorArr[v] == -1) { + // Assign alternate color to this + // adjacent v of u + colorArr[v] = 1 - colorArr[u]; + q.push(v); + } + + // An edge from u to v exists and destination + // v is colored with same color as u + else if (G[u][v] && colorArr[v] == colorArr[u]) + return false; + } + } + + // If we reach here, then all adjacent vertices can + // be colored with alternate color + return true; +} + +// Returns true if G[][] is Bipartite, else false +bool isBipartite(int G[][V]) +{ + + int colorArr[V]; + for (int i = 0; i < V; ++i) + colorArr[i] = -1; + + // This code is to handle disconnected graph + for (int i = 0; i < V; i++) + if (colorArr[i] == -1) + if (isBipartiteUtil(G, i, colorArr) == false) + return false; + + return true; +} + +// Driver code +int main() +{ + int G[][V] = { { 0, 1, 0, 1 }, + { 1, 0, 1, 0 }, + { 0, 1, 0, 1 }, + { 1, 0, 1, 0 } }; + + isBipartite(G) ? cout << "Yes" : cout << "No"; + return 0; +} From 0482421bd35f51ddb127cf835a2eef24cd630cfe Mon Sep 17 00:00:00 2001 From: Aman5989 <95266619+Aman5989@users.noreply.github.com> Date: Tue, 4 Oct 2022 17:13:05 +0530 Subject: [PATCH 115/448] create sudoko-solver.java updated the directory now applying for new PR --- Java/SODUKO-SOLVER/soduko-solver.java | 123 ++++++++++++++++++++++++++ 1 file changed, 123 insertions(+) create mode 100644 Java/SODUKO-SOLVER/soduko-solver.java diff --git a/Java/SODUKO-SOLVER/soduko-solver.java b/Java/SODUKO-SOLVER/soduko-solver.java new file mode 100644 index 00000000..ad1821eb --- /dev/null +++ b/Java/SODUKO-SOLVER/soduko-solver.java @@ -0,0 +1,123 @@ +package com.ssaurel.sudoku; + +public class Sudoku { + + // we define a simple grid to solve. Grid is stored in a 2D Array + public static int[][] GRID_TO_SOLVE = { + {9,0,0,1,0,0,0,0,5}, + {0,0,5,0,9,0,2,0,1}, + {8,0,0,0,4,0,0,0,0}, + {0,0,0,0,8,0,0,0,0}, + {0,0,0,7,0,0,0,0,0}, + {0,0,0,0,2,6,0,0,9}, + {2,0,0,3,0,0,0,0,6}, + {0,0,0,2,0,0,9,0,0}, + {0,0,1,9,0,4,5,7,0}, + }; + + private int[][] board; + public static final int EMPTY = 0; // empty cell + public static final int SIZE = 9; // size of our Sudoku grids + + public Sudoku(int[][] board) { + this.board = new int[SIZE][SIZE]; + + for (int i = 0; i < SIZE; i++) { + for (int j = 0; j < SIZE; j++) { + this.board[i][j] = board[i][j]; + } + } + } + + // we check if a possible number is already in a row + private boolean isInRow(int row, int number) { + for (int i = 0; i < SIZE; i++) + if (board[row][i] == number) + return true; + + return false; + } + + // we check if a possible number is already in a column + private boolean isInCol(int col, int number) { + for (int i = 0; i < SIZE; i++) + if (board[i][col] == number) + return true; + + return false; + } + + // we check if a possible number is in its 3x3 box + private boolean isInBox(int row, int col, int number) { + int r = row - row % 3; + int c = col - col % 3; + + for (int i = r; i < r + 3; i++) + for (int j = c; j < c + 3; j++) + if (board[i][j] == number) + return true; + + return false; + } + + // combined method to check if a number possible to a row,col position is ok + private boolean isOk(int row, int col, int number) { + return !isInRow(row, number) && !isInCol(col, number) && !isInBox(row, col, number); + } + + // Solve method. We will use a recursive BackTracking algorithm. + // we will see better approaches in next video :) + public boolean solve() { + for (int row = 0; row < SIZE; row++) { + for (int col = 0; col < SIZE; col++) { + // we search an empty cell + if (board[row][col] == EMPTY) { + // we try possible numbers + for (int number = 1; number <= SIZE; number++) { + if (isOk(row, col, number)) { + // number ok. it respects sudoku constraints + board[row][col] = number; + + if (solve()) { // we start backtracking recursively + return true; + } else { // if not a solution, we empty the cell and we continue + board[row][col] = EMPTY; + } + } + } + + return false; // we return false + } + } + } + + return true; // sudoku solved + } + + public void display() { + for (int i = 0; i < SIZE; i++) { + for (int j = 0; j < SIZE; j++) { + System.out.print(" " + board[i][j]); + } + + System.out.println(); + } + + System.out.println(); + } + + public static void main(String[] args) { + Sudoku sudoku = new Sudoku(GRID_TO_SOLVE); + System.out.println("Sudoku grid to solve"); + sudoku.display(); + + // we try resolution + if (sudoku.solve()) { + System.out.println("Sudoku Grid solved with simple BT"); + sudoku.display(); + } else { + System.out.println("Unsolvable"); + } + } + +} From be41eb0553c1099168fd4a9f6aaff508097e8c48 Mon Sep 17 00:00:00 2001 From: Aman5989 <95266619+Aman5989@users.noreply.github.com> Date: Tue, 4 Oct 2022 17:16:28 +0530 Subject: [PATCH 116/448] create merge-interval.java changed the directory now applying with new PR --- LeetCode Solutions/merge interval.java | 56 ++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 LeetCode Solutions/merge interval.java diff --git a/LeetCode Solutions/merge interval.java b/LeetCode Solutions/merge interval.java new file mode 100644 index 00000000..a772ea53 --- /dev/null +++ b/LeetCode Solutions/merge interval.java @@ -0,0 +1,56 @@ +public static List < Interval > mergeIntervals(Interval[] intervals) { + int n = intervals.length; + List < Interval > res = new ArrayList(); + + boolean vis[] = new boolean[n]; + + for (int i = 0; i < n; i++) { + if (vis[i]) { + continue; + } + + vis[i] = true; + int minS = intervals[i].start; + int maxE = intervals[i].finish; + + while (true) { + int c = 0; + + for (int j = 0; j < n; j++) { + if (!vis[j] && isOverlap(minS, maxE, intervals[j])) { + vis[j] = true; + minS = Math.min(minS, intervals[j].start); + maxE = Math.max(maxE, intervals[j].finish); + c++; + } + } + + if (c == 0) { + break; + } + } +res.add(new Interval(minS, maxE)); + } + + Collections.sort(res, new Comparator < Interval > () { + + public int compare(Interval a, Interval b) { + if (a.start == b.start) { + return a.finish - b.finish; + } + + return a.start - b.start; + } + + }); + + return res; +} + +public static boolean isOverlap(int minS, int maxE, Interval i) { + if (minS > i.finish || maxE < i.start) { + return false; + } + + return true; +} From 4825f941b0bece3eec9556abc5ab4b2145e66765 Mon Sep 17 00:00:00 2001 From: Aman5989 <95266619+Aman5989@users.noreply.github.com> Date: Tue, 4 Oct 2022 17:19:42 +0530 Subject: [PATCH 117/448] create BFS-GRAPH-ALGO USING C++ changed the directory and applying for new PR --- CPP/BFS GRAPH ALGO/BFS-GRAPH-ALGO.cpp | 72 +++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 CPP/BFS GRAPH ALGO/BFS-GRAPH-ALGO.cpp diff --git a/CPP/BFS GRAPH ALGO/BFS-GRAPH-ALGO.cpp b/CPP/BFS GRAPH ALGO/BFS-GRAPH-ALGO.cpp new file mode 100644 index 00000000..25141e40 --- /dev/null +++ b/CPP/BFS GRAPH ALGO/BFS-GRAPH-ALGO.cpp @@ -0,0 +1,72 @@ +// BFS algorithm in C++ + +#include +#include + +using namespace std; + +class Graph { + int numVertices; + list* adjLists; + bool* visited; + + public: + Graph(int vertices); + void addEdge(int src, int dest); + void BFS(int startVertex); +}; + +// Create a graph with given vertices, +// and maintain an adjacency list +Graph::Graph(int vertices) { + numVertices = vertices; + adjLists = new list[vertices]; +} + +// Add edges to the graph +void Graph::addEdge(int src, int dest) { + adjLists[src].push_back(dest); + adjLists[dest].push_back(src); +} + +// BFS algorithm +void Graph::BFS(int startVertex) { + visited = new bool[numVertices]; + for (int i = 0; i < numVertices; i++) + visited[i] = false; + + list queue; + + visited[startVertex] = true; + queue.push_back(startVertex); + + list::iterator i; + + while (!queue.empty()) { + int currVertex = queue.front(); + cout << "Visited " << currVertex << " "; + queue.pop_front(); + + for (i = adjLists[currVertex].begin(); i != adjLists[currVertex].end(); ++i) { + int adjVertex = *i; + if (!visited[adjVertex]) { + visited[adjVertex] = true; + queue.push_back(adjVertex); + } + } + } +} + +int main() { + Graph g(4); + g.addEdge(0, 1); + g.addEdge(0, 2); + g.addEdge(1, 2); + g.addEdge(2, 0); + g.addEdge(2, 3); + g.addEdge(3, 3); + + g.BFS(2); + + return 0; +} From 14cae048980499123fd7e50ded362d4652c5fa46 Mon Sep 17 00:00:00 2001 From: Yash Gautam <94813186+yash0650@users.noreply.github.com> Date: Tue, 4 Oct 2022 17:21:20 +0530 Subject: [PATCH 118/448] Create Rat in a Maze Consider a rat placed at (0, 0) in a square matrix of order N * N. It has to reach the destination at (N - 1, N - 1). Find all possible paths that the rat can take to reach from source to destination. The directions in which the rat can move are 'U'(up), 'D'(down), 'L' (left), 'R' (right). Value 0 at a cell in the matrix represents that it is blocked and rat cannot move to it while value 1 at a cell in the matrix represents that rat can be travel through it. Note: In a path, no cell can be visited more than one time. If the source cell is 0, the rat cannot move to any other cell. Moreover, we have to find all possible routes that the rat can take to reach the bottom-right square. --- CPP/recursion/Rat in a Maze | 95 +++++++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 CPP/recursion/Rat in a Maze diff --git a/CPP/recursion/Rat in a Maze b/CPP/recursion/Rat in a Maze new file mode 100644 index 00000000..8e7e09ce --- /dev/null +++ b/CPP/recursion/Rat in a Maze @@ -0,0 +1,95 @@ +#include +using namespace std; + +bool isSafe(int x, int y, int n, vector> vis, vector> &m) +{ + if ((x >= 0 and x < n) and (y >= 0 and y < n) and vis[x][y] == 0 and m[x][y] == 1) + { + return true; + } + return false; +} + +void solve(vector> &m, int n, vector &ans, int x, int y, vector> vis, string path) +{ + if (x == n - 1 and y == n - 1) + { + ans.push_back(path); + return; + } + vis[x][y] = 1; + + int newx = x + 1, newy = y; + if (isSafe(newx, newy, n, vis, m)) + { + path.push_back('D'); + solve(m, n, ans, newx, newy, vis, path); + path.pop_back(); + } + + newx = x, newy = y - 1; + if (isSafe(newx, newy, n, vis, m)) + { + path.push_back('L'); + solve(m, n, ans, newx, newy, vis, path); + path.pop_back(); + } + + newx = x, newy = y + 1; + if (isSafe(newx, newy, n, vis, m)) + { + path.push_back('R'); + solve(m, n, ans, newx, newy, vis, path); + path.pop_back(); + } + + newx = x - 1, newy = y; + if (isSafe(newx, newy, n, vis, m)) + { + path.push_back('U'); + solve(m, n, ans, newx, newy, vis, path); + path.pop_back(); + } + + vis[x][y] = 0; +} + +vector findPath(vector> &m, int n) +{ + vector ans; + if (m[0][0] == 0) + return ans; + int x = 0, y = 0; + vector> vis = m; + for (int i = 0; i < n; i++) + { + for (int j = 0; j < n; j++) + vis[i][j] = 0; + } + string path = ""; + solve(m, n, ans, x, y, vis, path); + sort(ans.begin(), ans.end()); + return ans; +} + +int main() +{ + int n; + cin >> n; + vector> a(n, vector(n, 0)); + for (int i = 0; i < n; i++) + { + for (int j = 0; j < n; j++) + { + cin >> a[i][j]; + } + } + vector ans = findPath(a, n); + for (auto i : ans) + { + cout << i << endl; + } + return 0; +} + +// by YASH GAUTAM From e849bf35f8d73f50b575edb3b86d02151de6ed80 Mon Sep 17 00:00:00 2001 From: Yash Gautam <94813186+yash0650@users.noreply.github.com> Date: Tue, 4 Oct 2022 17:24:59 +0530 Subject: [PATCH 119/448] Create Phone Keypad Problem Given a string containing digits from 2-9 inclusive, return all possible letter combinations that the number could represent. Return the answer in any order. A mapping of digits to letters (just like on the telephone buttons) is given below. Note :1 does not map to any letters. For example, digits = "23" then the outputs will be in form of a vector of strings like -> ["ad","ae","af","bd","be","bf","cd","ce","cf"] --- CPP/recursion/Phone Keypad Problem | 42 ++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 CPP/recursion/Phone Keypad Problem diff --git a/CPP/recursion/Phone Keypad Problem b/CPP/recursion/Phone Keypad Problem new file mode 100644 index 00000000..5a659310 --- /dev/null +++ b/CPP/recursion/Phone Keypad Problem @@ -0,0 +1,42 @@ +#include +using namespace std; + +const vector pad = { + "", "", "abc", "def", "ghi", "jkl", + "mno", "pqrs", "tuv", "wxyz"}; + +vector letterCombinations(string digits) +{ + if (digits.empty()) + return {}; + vector result; + result.push_back(""); + + for (auto digit : digits) + { + vector tmp; + for (auto candidate : pad[digit - '0']) + { + for (auto s : result) + { + tmp.push_back(s + candidate); + } + } + result.swap(tmp); + } + return result; +} + +int main() +{ + string s; + cin >> s; + vector ans = letterCombinations(s); + for (auto i : ans) + { + cout << i << " "; + } + return 0; +} + +// by YASH GAUTAM From 67fa4c32068f24ace096953851ad767f9c842a51 Mon Sep 17 00:00:00 2001 From: Sujit Jaunjal <78826399+sujit-jaunjal@users.noreply.github.com> Date: Tue, 4 Oct 2022 17:30:42 +0530 Subject: [PATCH 120/448] Create police.cpp --- String/police.cpp | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 String/police.cpp diff --git a/String/police.cpp b/String/police.cpp new file mode 100644 index 00000000..72e9e138 --- /dev/null +++ b/String/police.cpp @@ -0,0 +1,30 @@ +#include +#include +using namespace std; +int main(){ + long long a[100000]; + long long n; + long long c=0,p=0,sum=0; + cin>>n; + for(int i=0;i>a[i]; + for(int i=0;i Date: Tue, 4 Oct 2022 17:31:14 +0530 Subject: [PATCH 121/448] Create readme.md --- Arrays/readme.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Arrays/readme.md diff --git a/Arrays/readme.md b/Arrays/readme.md new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/Arrays/readme.md @@ -0,0 +1 @@ + From 51e008f92bdd87a71af3b310724b85b4eb0c90e8 Mon Sep 17 00:00:00 2001 From: Aman5989 <95266619+Aman5989@users.noreply.github.com> Date: Tue, 4 Oct 2022 17:31:33 +0530 Subject: [PATCH 122/448] create reverse-word-in-a-string.java here's a solution to the opened issue reverse word in a string. please add hacktoberfest tags. --- .../reversewordinastring.java | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 Java/Reverse-words-in-a-string/reversewordinastring.java diff --git a/Java/Reverse-words-in-a-string/reversewordinastring.java b/Java/Reverse-words-in-a-string/reversewordinastring.java new file mode 100644 index 00000000..aac66f5b --- /dev/null +++ b/Java/Reverse-words-in-a-string/reversewordinastring.java @@ -0,0 +1,31 @@ +class Solution { + public String reverseWords(String s) { + Stack st = new Stack<>(); + s+=" "; + String str = ""; + String ans=""; + for(int i =0;i Date: Tue, 4 Oct 2022 17:31:47 +0530 Subject: [PATCH 123/448] Create soldier.cpp --- String/soldier.cpp | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 String/soldier.cpp diff --git a/String/soldier.cpp b/String/soldier.cpp new file mode 100644 index 00000000..53d81e9f --- /dev/null +++ b/String/soldier.cpp @@ -0,0 +1,26 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#define ll long long +#define dd double +using namespace std; +int main() { + ios::sync_with_stdio(false); + ll n, m, k; cin >> n >> m >> k; + ll sum = 0; + for (ll i = 1; i <= k; i++) { + sum += n * i; + } + sum -= m; + if (sum <= 0) { + cout << "0" << endl; + } + else { + cout << sum << endl; + } +} From 7fa0116baf31f5a853286a269f0990632867a1c0 Mon Sep 17 00:00:00 2001 From: Sujit Jaunjal <78826399+sujit-jaunjal@users.noreply.github.com> Date: Tue, 4 Oct 2022 17:32:37 +0530 Subject: [PATCH 124/448] Create translation.cpp --- String/translation.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 String/translation.cpp diff --git a/String/translation.cpp b/String/translation.cpp new file mode 100644 index 00000000..1a68d067 --- /dev/null +++ b/String/translation.cpp @@ -0,0 +1,13 @@ +#include +#include +int main(){ + char str1[105],str2[105],count=0; + scanf("%s%s",str1,str2); + int length=strlen(str1); + for(int i=0;i Date: Tue, 4 Oct 2022 17:33:37 +0530 Subject: [PATCH 125/448] Add files via upload --- Arrays/01_static_and_dynamicArray.c | 25 + Arrays/01_static_and_dynamicArray.exe | Bin 0 -> 41394 bytes ...02_increasing_size_of_array_using_heap.cpp | 26 + ...02_increasing_size_of_array_using_heap.exe | Bin 0 -> 42341 bytes Arrays/03_Creating_2D_array_Accessing.c | 30 + Arrays/03_Creating_2D_array_Accessing.exe | Bin 0 -> 41398 bytes Arrays/04_Array_ADT.c | 40 ++ Arrays/05_inserting_an_element.cpp | 54 ++ Arrays/06_Deleting_element_from_array.c | 45 ++ Arrays/07_Linearsearch.c | 31 + Arrays/08_Improving_Linear_search.c | 41 ++ Arrays/09_Binary_Search_using_loop.c | 39 + Arrays/10_Binary_Search_Using_Recursion.c | 40 ++ Arrays/11_Get_Set_max_min_sum_avg.c | 78 ++ Arrays/12_Rotate_and_Shift.cpp | 53 ++ Arrays/13_IsSorted .cpp | 44 ++ Arrays/14_Mergeing_2_Array.c | 51 ++ Arrays/14_Mergeing_2_Array.exe | Bin 0 -> 41932 bytes Arrays/15_InsertSort .c | 43 ++ Arrays/16_Set_Operation.c | 114 +++ Arrays/16_Set_Operation.exe | Bin 0 -> 42484 bytes Arrays/17_nsertion_and_Deletion.cpp | 90 +++ Arrays/18_Menu_Based_problem.cpp | 381 ++++++++++ ...Single_Missing_Element_in_Sorted_Array.cpp | 22 + ...ingle_Missing_Value_in_a_sorted_array_M2.c | 34 + ...tiple_Missing_Elements_in_Sorted_Array.cpp | 27 + ..._Missing_elements_in_Unsorted_Array_HT.cpp | 17 + .../23_Finding_Duplicate_in_Sorted_Array.cpp | 20 + ..._Counting_Duplicate_Elements_In_Sorted.cpp | 23 + ..._Duplicate_elements_using_hash_table_SAcpp | 23 + ...26_Finding_Duplicate_in_Unsorted_Array.cpp | 26 + Arrays/27_Find_a_pair_with_sum_k.cpp | 30 + .../28_Find_a_pair_with_sum_k_in_unsorted.cpp | 20 + ...9_Find_a_pair_with_sum_k_using_Hashing.cpp | 18 + .../30_Finding_max_&_min_in_single_scan.cpp | 18 + Arrays/31_Menu_for_Array.c | 674 ++++++++++++++++++ 36 files changed, 2177 insertions(+) create mode 100644 Arrays/01_static_and_dynamicArray.c create mode 100644 Arrays/01_static_and_dynamicArray.exe create mode 100644 Arrays/02_increasing_size_of_array_using_heap.cpp create mode 100644 Arrays/02_increasing_size_of_array_using_heap.exe create mode 100644 Arrays/03_Creating_2D_array_Accessing.c create mode 100644 Arrays/03_Creating_2D_array_Accessing.exe create mode 100644 Arrays/04_Array_ADT.c create mode 100644 Arrays/05_inserting_an_element.cpp create mode 100644 Arrays/06_Deleting_element_from_array.c create mode 100644 Arrays/07_Linearsearch.c create mode 100644 Arrays/08_Improving_Linear_search.c create mode 100644 Arrays/09_Binary_Search_using_loop.c create mode 100644 Arrays/10_Binary_Search_Using_Recursion.c create mode 100644 Arrays/11_Get_Set_max_min_sum_avg.c create mode 100644 Arrays/12_Rotate_and_Shift.cpp create mode 100644 Arrays/13_IsSorted .cpp create mode 100644 Arrays/14_Mergeing_2_Array.c create mode 100644 Arrays/14_Mergeing_2_Array.exe create mode 100644 Arrays/15_InsertSort .c create mode 100644 Arrays/16_Set_Operation.c create mode 100644 Arrays/16_Set_Operation.exe create mode 100644 Arrays/17_nsertion_and_Deletion.cpp create mode 100644 Arrays/18_Menu_Based_problem.cpp create mode 100644 Arrays/19_Single_Missing_Element_in_Sorted_Array.cpp create mode 100644 Arrays/20_Single_Missing_Value_in_a_sorted_array_M2.c create mode 100644 Arrays/21_Multiple_Missing_Elements_in_Sorted_Array.cpp create mode 100644 Arrays/22_Missing_elements_in_Unsorted_Array_HT.cpp create mode 100644 Arrays/23_Finding_Duplicate_in_Sorted_Array.cpp create mode 100644 Arrays/24_Counting_Duplicate_Elements_In_Sorted.cpp create mode 100644 Arrays/25_Counting_Duplicate_elements_using_hash_table_SAcpp create mode 100644 Arrays/26_Finding_Duplicate_in_Unsorted_Array.cpp create mode 100644 Arrays/27_Find_a_pair_with_sum_k.cpp create mode 100644 Arrays/28_Find_a_pair_with_sum_k_in_unsorted.cpp create mode 100644 Arrays/29_Find_a_pair_with_sum_k_using_Hashing.cpp create mode 100644 Arrays/30_Finding_max_&_min_in_single_scan.cpp create mode 100644 Arrays/31_Menu_for_Array.c diff --git a/Arrays/01_static_and_dynamicArray.c b/Arrays/01_static_and_dynamicArray.c new file mode 100644 index 00000000..1ff30400 --- /dev/null +++ b/Arrays/01_static_and_dynamicArray.c @@ -0,0 +1,25 @@ +#include +#include +int main() +{ + int A[5] = { 1,2,3,4,5 }; // this is allocated inside stack memory + int* p; // pointer of array + int i; + p = (int*)malloc(5 * sizeof(int)); // dynamically createing array inside heap + p[0] = 1; // initializing all the terms in array + p[1] = 2; + p[2] = 3; + p[3] = 4; + p[4] = 5; + + for (i = 0; i < 5; i++) // iteration for normal array + { + printf("%d ", A[i]); + } + printf("\n"); + for (i = 0; i < 5; i++) // iteration for the dynamic array + { + printf("%d ",p[i]); + } + return 0; +} diff --git a/Arrays/01_static_and_dynamicArray.exe b/Arrays/01_static_and_dynamicArray.exe new file mode 100644 index 0000000000000000000000000000000000000000..c44a584451e433ff3fcefbc8e9a92cc69eb6327d GIT binary patch literal 41394 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 Z6`xs?BhY)8<}62R>XN;ei>~cZ{~rgJiq8N5 literal 0 HcmV?d00001 diff --git a/Arrays/02_increasing_size_of_array_using_heap.cpp b/Arrays/02_increasing_size_of_array_using_heap.cpp new file mode 100644 index 00000000..99f0b2e7 --- /dev/null +++ b/Arrays/02_increasing_size_of_array_using_heap.cpp @@ -0,0 +1,26 @@ +/* Normal array is created in stack +and stack used memory array cannot be change +tht is we can not incresae the size of array */ + +#include +#include +int main () +{ + int *p,*q; // Taking two pointers + int i; + p=(int *)malloc(5*sizeof(int)); // array is created in heap memory + p[0]=9;p[1]=7;p[2]=22;p[3]=11;p[4]=12; + + q= (int *) malloc(10*sizeof(int)); // increasing size of array in heap memory + + for (i=0;i<5;i++) + q[i]=p[i]; + + free(p); + p=q; + q=NULL; + + for (i=0;i<5;i++) + printf("%d \n",p[i]); + return 0; +} diff --git a/Arrays/02_increasing_size_of_array_using_heap.exe b/Arrays/02_increasing_size_of_array_using_heap.exe new file mode 100644 index 0000000000000000000000000000000000000000..11e7300b754a8c04fee24a5649f71d3cd18d2fe6 GIT binary patch literal 42341 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 C5eo4D literal 0 HcmV?d00001 diff --git a/Arrays/03_Creating_2D_array_Accessing.c b/Arrays/03_Creating_2D_array_Accessing.c new file mode 100644 index 00000000..08a2aeaa --- /dev/null +++ b/Arrays/03_Creating_2D_array_Accessing.c @@ -0,0 +1,30 @@ + // Creating 2-D array +#include +#include +int main () +{ // normal delaration and initialization + int A[3][4]={{1,2,3,4},{2,4,6,8},{1,3,5,7}}; // stack memory + + // pointer decleration +int *B[3]; +int **C; // double pointer , completly in heap memory +int i,j; + +B[0]=(int *)malloc(4*sizeof(int)); // Creating memory in heap +B[1]=(int *)malloc(4*sizeof(int)); +B[2]=(int *)malloc(4*sizeof(int)); + +C=(int **)malloc(3*sizeof(int *)); +C[0]=(int *)malloc(4*sizeof(int)); +C[1]=(int *)malloc(4*sizeof(int)); +C[2]=(int *)malloc(4*sizeof(int)); + +for (i=0;i<3;i++) +{ +for (j=0;j<4;j++) +printf("%d ",A[i][j]); +printf("\n"); +} +return 0; +} + diff --git a/Arrays/03_Creating_2D_array_Accessing.exe b/Arrays/03_Creating_2D_array_Accessing.exe new file mode 100644 index 0000000000000000000000000000000000000000..1d6055e05a253cda637fc0d33a63ab27b96cd3be GIT binary patch literal 41398 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 +#include +struct Array +{ + int* A; + int size; + int length; +}; + +// fxn for display all the elements of the array + +void Display(struct Array arr) +{ + int i; + printf("Elements Are\n"); + for (i = 0; i < arr.length; i++) + printf("%d ",arr.A[i]); // it will display all the elements +} +int main() +{ + struct Array arr; + int n; // how many no is going to be inserted + int i; + printf("Enter size of an array "); + scanf_s("%d", &arr.size); + arr.A = (int*)malloc(arr.size * sizeof(int)); // dynamically created array + arr.length = 0;// intially no elements + printf("Enter number of numbers "); + scanf_s("%d", &n); + printf("Enter All the elements "); + for (i = 0; i < n; i++) + scanf_s("%d", &arr.A[i]); // enter the elements of an array + arr.length = n; // set length as n + + + Display(arr); + + + return 0; +} diff --git a/Arrays/05_inserting_an_element.cpp b/Arrays/05_inserting_an_element.cpp new file mode 100644 index 00000000..7568d0eb --- /dev/null +++ b/Arrays/05_inserting_an_element.cpp @@ -0,0 +1,54 @@ +#include +using namespace std; +struct Array +{ + int A[10]; + int size; + int length; +}; +void Display(struct Array arr) +{ + int i; + cout<<"printing all the elements "<length < arr->size) + arr->A[arr->length++] = x; // increment the size of array and fit the elements // it will take the constant time +} +void Insert(struct Array* arr, int index, int x) // the index at which we want to enter // and the value we want tpo enter +{ + int i; + for (i = arr->length; i > index; i--) // we will strat from last of the array and shift the elements upto the given index + { + arr->A[i] = arr->A[i - 1]; // shifting the elements to next // i is on some index and copy the value from previous index + } + arr->A[index] = x; // set the value at the particular index + arr->length++; // increment the size of length + // work done shifting of elelmets and copying elements + // best case : --------------- min : O(1) // there may be zero shifting + // worst case : --------------- max : O(n)// there may be n shifing + +} + +int main() { + int no; + struct Array arr; + cout << "Enter the size of the array " << endl; + cin >> arr.size; + arr.A = new int[arr.size]; + arr.length = 0; + cout << "Enter the length of array" << endl; + cin >> no; + cout << "Enter all the elements of array" << endl; + for (int i = 0; i < no; i++) + cin >> arr.A[i]; + arr.length = no; + Add(&arr, 10); + Insert(&arr,3,25); + Display(arr); + + return 0; +} diff --git a/Arrays/06_Deleting_element_from_array.c b/Arrays/06_Deleting_element_from_array.c new file mode 100644 index 00000000..7f2fef78 --- /dev/null +++ b/Arrays/06_Deleting_element_from_array.c @@ -0,0 +1,45 @@ +#include + +struct Array +{ + int A[10]; + int length; + int size; +}; + +int Display(struct Array arr) +{ + int i; + printf("Elements Are\n"); + for (i=0;i) operator: + +The Dot(.) operator is used to normally access members of a structure or union. +The Arrow(->) operator exists to access the members of the structure or the unions using pointers. */ +{ + int x=0; + int i; + if (index>=0 && index length) + { + x=arr->A[index]; // first of all take out the element from the particular index you want to del---------------------> taking 1 unit of time + for (i=index;ilength-1;i++) // shift the element in forward direnction and stop at length -1 so that array can not have any vacant space + arr->A[i]=arr->A[i+1]; // at the place of a[i] copy the next element i.e a[i+1] + arr->length--;//at last the length will be decreatmented ----------------> 1 unit of time -------> so best time is 1+1 =2 + + // min shifting is 0 and max shifting is n ----> Best case time is O(1) -> Worst Case time is ----> O(n) + return x; + } + return 0; +} +int main () +{ + struct Array arr1={{1,2,3,4,56,5,2},10,5}; + printf("%d\n",Delete(&arr1,0)); + Display(arr1); + return 0; +} diff --git a/Arrays/07_Linearsearch.c b/Arrays/07_Linearsearch.c new file mode 100644 index 00000000..556cc36a --- /dev/null +++ b/Arrays/07_Linearsearch.c @@ -0,0 +1,31 @@ +#include +struct Array { + int A[20]; + int length; + int size; + +}; +void Display (struct Array arr) +{ + int i; + printf("\nEnter elements\n"); + for (i=0;i +struct Array { + int A[20]; + int length; + int size; + +}; +void Display (struct Array arr) +{ + int i; + printf("\nEnter elements\n"); + for (i=0;ilength;i++) // iterating through the list + { + if(key==arr->A[i]) // checking whether elements is equal to the key elements or not + { + swap(&arr->A[i],&arr->A[0]); // this is move to 1st method // from this we can reduce time to O(1) // when we will search the same element again + return i; + } + } + return -1; +} + +int main () +{ + struct Array arr1= {{2,3,4,2,3,4,5,88,9 },20,5 }; + printf("The element is at %dth index",LinearSearch(&arr1,9)); + Display(arr1); + return 0; +} diff --git a/Arrays/09_Binary_Search_using_loop.c b/Arrays/09_Binary_Search_using_loop.c new file mode 100644 index 00000000..631a0465 --- /dev/null +++ b/Arrays/09_Binary_Search_using_loop.c @@ -0,0 +1,39 @@ +#include +struct Array +{ + int A[10]; + int size; + int length; +}; + void Display(struct Array arr) + { + int i; + printf("\nElements are\n"); + for(i=0;i +struct Array { + int A[10]; + int length; + int size; + +}; +void Display (struct Array arr) +{ + int i; + printf("Enter all the elements "); + for (i=0;i +struct Array +{ + int A[20]; + int length; + int size; +}; +void Display (struct Array arr) +{ + int i; + printf("Enter elements "); + for (i=0;i=0 && index=0 && indexlength) + arr->A[index]=x; + return 0; +} + +int Max (struct Array arr) +{ + int max=arr.A[0]; + int i; + for (i=1;imax) + max=arr.A[i]; + } + return max; +} +int Min (struct Array arr) +{ + int min=arr.A[0]; + int i; + for (i=1;i + +struct Array +{ + int A[20]; + int length; + int size; +}; +void Display (struct Array arr) +{ + int i; + for (i=0;isize]; // creating the required size of array in heap + for (i = arr->length - 1, j = 0; i >= 0; i--, j++) // keeping all the elements from array a to b in reverse order + B[j] = arr->A[i]; // coping element everytime + for (i = 0; i < arr->length; i++) + arr->A[i] = B[i]; // copying back elements to A +} + +void Reverse1(struct Array* arr) +{ + int i, j; + for (i = 0, j = arr->length - 1; i < j; i++, j--) // we will interchange 1st with the last element + Swap(&arr->A[i], &arr->A[j]); // swapping 1st with the last + +} + + +int main() + +{ + struct Array arr1={{2,3,4,56,66,69,98},7,20}; + // Call any one method to execute + Reverse(&arr1); // Shifting + Reverse1(&arr1); // 2nd method by swapping 1st with last i.e rotating + Display(arr1); + return 0; +} diff --git a/Arrays/13_IsSorted .cpp b/Arrays/13_IsSorted .cpp new file mode 100644 index 00000000..94e13501 --- /dev/null +++ b/Arrays/13_IsSorted .cpp @@ -0,0 +1,44 @@ +#include +using namespace std; + +struct Array +{ + int* A; + int size; + int length; +}; +void Display(struct Array* arr) +{ + int i; + cout << "the elements of the array is " << endl; + for (i = 0; i < arr->length; i++) + cout <A[i] << " "; +} + +int IsSorted(struct Array* arr) +{ + for (int i = 0; i < arr->length - 1; i++) + { + if (arr->A[i] > arr->A[i + 1]) // if 1st element is greater then 2nd element then it will k/as not sorted so return 0 + return 0; + } + + return 1; // if everything is ok and the element came successfully out of loop means it is sorted return 1 for thet +} +int main() +{ + struct Array arr; + cout << "Enter the size of Array " << endl; + cin >> arr.size; + arr.A = new int[arr.size]; + int no; + cout << "Enter the length of the array " << endl; + cin >> no; + arr.length = 0; + cout << "Enter the elements of the array " << endl; + for (int i = 0; i < no; i++) + cin >> arr.A[i]; + arr.length = no; + cout< +#include +//Merging 2 Arrays +struct Array +{ + int A[10]; + int size; + int length; +}; +void Display(struct Array arr) +{ + int i; + printf("\nElements are\n"); + for(i=0;ilength && jlength) + { + if(arr1->A[i]A[j]) + arr3->A[k++]=arr1->A[i++]; + else + arr3->A[k++]=arr2->A[j++]; + } + for(;ilength;i++) + arr3->A[k++]=arr1->A[i]; + for(;jlength;j++) + arr3->A[k++]=arr2->A[j]; + arr3->length=arr1->length+arr2->length; + arr3->size=10; + + return arr3; +} +int main() +{ + struct Array arr1={{2,9,21,28,35},10,5}; + struct Array arr2={{2,3,16,18,28},10,5}; + struct Array *arr3; +arr3=Merge(&arr1,&arr2); +Display(*arr3); + +return 0; +} + diff --git a/Arrays/14_Mergeing_2_Array.exe b/Arrays/14_Mergeing_2_Array.exe new file mode 100644 index 0000000000000000000000000000000000000000..441aa426c85f9b6856b4e63f6be5b222e222a7e1 GIT binary patch literal 41932 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 DZ(UG8 literal 0 HcmV?d00001 diff --git a/Arrays/15_InsertSort .c b/Arrays/15_InsertSort .c new file mode 100644 index 00000000..45d31613 --- /dev/null +++ b/Arrays/15_InsertSort .c @@ -0,0 +1,43 @@ +#include + +struct Array +{ + int A[20]; + int length; + int size; +}; +void Display (struct Array arr) +{ + int i; + for (i=0;ilength-1; + if (arr->length==arr->size) return ; + while (i>=0 && arr->A[i]>x) + { + arr->A[i+1]=arr->A[i]; + i--; + } + + + + arr->A[i+1]=x; + + arr->length++; + +} + + +int main() + +{ + struct Array arr={{2,3,5,10,15},5,20}; + InsertSort(&arr,1); + Display(arr); + return 0; +} diff --git a/Arrays/16_Set_Operation.c b/Arrays/16_Set_Operation.c new file mode 100644 index 00000000..fd1a7c53 --- /dev/null +++ b/Arrays/16_Set_Operation.c @@ -0,0 +1,114 @@ +#include +#include +#include +//Set Operations on Arrays +struct Array +{ + int A[10]; + int size; + int length; +}; +void Display(struct Array arr) +{ + int i; + printf("\nElements are\n"); + for(i=0;ilength && jlength) + { + if(arr1->A[i]A[j]) + arr3->A[k++]=arr1->A[i++]; + else if(arr2->A[j]A[i]) + arr3->A[k++]=arr2->A[j++]; + else + { + arr3->A[k++]=arr1->A[i++]; + j++; + } + } + for(;ilength;i++) + arr3->A[k++]=arr1->A[i]; + for(;jlength;j++) + arr3->A[k++]=arr2->A[j]; + + arr3->length=k; + arr3->size=10; + + return arr3; +} +struct Array* Intersection(struct Array *arr1,struct Array +*arr2) +{ + int i,j,k; + i=j=k=0; + + struct Array *arr3=(struct Array *)malloc(sizeof(struct +Array)); + + while(ilength && jlength) + { + if(arr1->A[i]A[j]) + i++; + else if(arr2->A[j]A[i]) + j++; + else if(arr1->A[i]==arr2->A[j]) + { + arr3->A[k++]=arr1->A[i++]; + j++; + } + } + + arr3->length=k; + arr3->size=10; + + return arr3; +} +struct Array* Difference(struct Array *arr1,struct Array +*arr2) +{ + int i,j,k; + i=j=k=0; + + struct Array *arr3=(struct Array *)malloc(sizeof(struct +Array)); + + while(ilength && jlength) + { + if(arr1->A[i]A[j]) + arr3->A[k++]=arr1->A[i++]; + else if(arr2->A[j]A[i]) + j++; + else + { + i++; + j++; + } + } + for(;ilength;i++) + arr3->A[k++]=arr1->A[i]; + + + arr3->length=k; + arr3->size=10; + + return arr3; +} +int main() +{ + struct Array arr1={{2,9,21,28,35},10,5}; + struct Array arr2={{2,3,9,18,28},10,5}; + struct Array *arr3; +arr3=Union(&arr1,&arr2); +Display(*arr3); + +return 0; +} diff --git a/Arrays/16_Set_Operation.exe b/Arrays/16_Set_Operation.exe new file mode 100644 index 0000000000000000000000000000000000000000..6538c53eed9997e537f1361b52e545494dddb6a3 GIT binary patch literal 42484 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 c8xMlvLv0EKdJofr +// Here namespace is having obj like cin and cout ; +using namespace std; +class Array // Creating class +// Class in c++ will have Datamember and member function +{ + private: + int *A; // Creating in heap so that i can dynamically create an array + int size; + int length; + + public: // Member function must be inside public + // Write an constructor + Array () // This is non parameter constructor + { + size=10; + A = new int[10]; // dynamically created array in heap + length=0; + + } + + // parametetrzied Constructor + + Array (int sz) + { + size=sz; + length=0; + A=new int [size]; + } + + +// We must have destructors to release resourses + ~Array() // Creating Destructor + { + delete []A; + } + + // Writting Function + void Display (); // There sud not be parameter cz this is part of Array function + void Insert (int index, int x); + int Delete (int index); + +}; + +void Array :: Display () +{ + for (int i=0; i=0 && index <=length ) + { + for (int i=length-1;i>index;i--) + A[i+1]=A[i]; + A[index]=x; + length++; + } + } + +int Array :: Delete (int index) +{ + int x=0; + if (index>=0 && index +using namespace std; +class Array +{ +private: + int *A; + int size; + int length; + void swap(int *x,int *y); + +public: + Array() + { + size=10; + length=0; + A=new int[size]; + } + Array(int sz) + { + size=sz; + length=0; + A=new int[size]; + } + ~Array() + { + delete []A; + } + void Display(); + void Append(int x); + void Insert(int index,int x); + int Delete(int index); + int LinearSearch(int key); + int BinarySearch(int key); + int Get(int index); + void Set(int index,int x); + int Max(); + int Min(); + int Sum(); + float Avg(); + void Reverse(); + void Reverse2(); + void InsertSort(int x); + int isSorted(); + void Rearrange(); + Array* Merge(Array arr2); + Array* Union(Array arr2); + Array* Diff(Array arr2); + Array* Inter(Array arr2); +}; +void Array::Display() +{ + int i; + cout<<"\nElements are\n"; + for(i=0;i=0 && index <=length) + { + for(i=length;i>index;i--) + A[i]=A[i-1]; + A[index]=x; + length++; + + } +} +int Array::Delete(int index) +{ + int x=0; + int i; + + if(index>=0 && index=0 && index=0 && index< length) + A[index]=x; +} +int Array::Max() +{ + int max=A[0]; + int i; + for(i=1;imax) + max=A[i]; + } + return max; +} +int Array::Min() +{ + int min=A[0]; + int i; + for(i=1;i=0;i--,j++) + B[j]=A[i]; + for(i=0;i=0 && A[i]>x) + { + A[i+1]= A[i]; + i--; + } + A[i+1]=x; + length++; + +} +int Array::isSorted() +{ + int i; + for(i=0;iA[i+1]) + return 0; + } + return 1; +} +void Array::Rearrange() +{ + int i,j; + i=0; + j= length-1; + + while(i=0)j--; + if(iA[k++]=A[i++]; + else + arr3->A[k++]=arr2.A[j++]; + } + for(;iA[k++]=A[i]; + for(;jA[k++]=arr2.A[j]; + arr3->length=length+arr2.length; + + return arr3; +} +Array* Array::Union(Array arr2) +{ + int i,j,k; + i=j=k=0; + + Array *arr3=new Array(length+arr2.length); + + while(iA[k++]=A[i++]; + else if(arr2.A[j]A[k++]=arr2.A[j++]; + else + { + arr3->A[k++]=A[i++]; + j++; + } + } + for(;iA[k++]=A[i]; + for(;jA[k++]=arr2.A[j]; + + arr3->length=k; + + return arr3; +} +Array* Array::Inter(Array arr2) +{ + int i,j,k; + i=j=k=0; + + Array *arr3=new Array(length+arr2.length); + + while(iA[k++]=A[i++]; + j++; + } + } + + arr3->length=k; + + return arr3; +} +Array* Array::Diff(Array arr2) +{ + int i,j,k; + i=j=k=0; + + Array *arr3=new Array(length+arr2.length); + + while(iA[k++]=A[i++]; + else if(arr2.A[j]A[k++]=A[i]; + + + arr3->length=k; + + return arr3; +} +int main() +{ + Array *arr1; + int ch,sz; + int x,index; + + cout<<"Enter Size of Array"; + scanf("%d",&sz); + arr1=new Array(sz); + + do + { + cout<<"\n\nMenu\n"; + cout<<"1. Insert\n"; + cout<<"2. Delete\n"; + cout<<"3. Search\n"; + cout<<"4. Sum\n"; + cout<<"5. Display\n"; + cout<<"6.Exit\n"; + + cout<<"enter you choice "; + cin>>ch; + + switch(ch) + { + case 1: cout<<"Enter an element and index "; + cin>>x>>index; + arr1->Insert(index,x); + break; + case 2: cout<<"Enter index "; + cin>>index; + x=arr1->Delete(index); + cout<<"Deleted Element is"<>x; + index=arr1->LinearSearch(x); + cout<<"Element index "<Sum(); + break; + case 5:arr1->Display(); + + } + + }while(ch<6); + return 0; +} diff --git a/Arrays/19_Single_Missing_Element_in_Sorted_Array.cpp b/Arrays/19_Single_Missing_Element_in_Sorted_Array.cpp new file mode 100644 index 00000000..fc2cfa80 --- /dev/null +++ b/Arrays/19_Single_Missing_Element_in_Sorted_Array.cpp @@ -0,0 +1,22 @@ +#include +using namespace std; +int main() +{ + int a[11] = { 6,7,8,9,10,12,13,14,15,16,17 }; + int n = sizeof(a) / sizeof(int); + int diff = a[0]; //initialising diff with fisrt element of the array + + //We will check the difference between the index element and array index + //Wherever the difference wiil not be equal to diff, an element is missing there + + for (int i = 0; i < n; i++) + { + if (a[i] - i != diff) //checking the difference betweeen the index element and array index if it is equal to diff or not + { + cout << "Missing element is: " << i + diff << endl; + diff++; //incrementing the diff value since from now on difference will be an updated value + } + } + cout << endl; + return 0; +} diff --git a/Arrays/20_Single_Missing_Value_in_a_sorted_array_M2.c b/Arrays/20_Single_Missing_Value_in_a_sorted_array_M2.c new file mode 100644 index 00000000..32c69d54 --- /dev/null +++ b/Arrays/20_Single_Missing_Value_in_a_sorted_array_M2.c @@ -0,0 +1,34 @@ +#include +struct Array +{ + int A[20]; + int length; + int size; +}; + +void Display (struct Array arr) +{ + int i; + for (i=0;i +using namespace std ; +int main () +{ + int A[11]= { 6,7,8,9,11,12,15,16,17,18,19 }; + int diff=A[0]; + int n= sizeof(A)/sizeof(int); + for (int i=0;i +using namespace std; +int main() +{ + int a[8] = { 1,2,3,5,6,8,12,14 }; + int n = sizeof(a) / sizeof(int); + int h[14] = { 0 }; //Hash table with size equal to the largest element present in the array a ie 14 + for (int i = 0; i < n; i++) //for loop to increment values at indices equal to the element in first array + h[a[i]]++; + for (int i = 1; i <= 14; i++) + { + if (h[i] == 0) //to check which indices are 0 so those elements are missing + cout << "Missing element is: " << i << endl; + } + cout << endl; + return 0; +} diff --git a/Arrays/23_Finding_Duplicate_in_Sorted_Array.cpp b/Arrays/23_Finding_Duplicate_in_Sorted_Array.cpp new file mode 100644 index 00000000..659c92c4 --- /dev/null +++ b/Arrays/23_Finding_Duplicate_in_Sorted_Array.cpp @@ -0,0 +1,20 @@ +#include +using namespace std; +int main () +{ + int A[10]={3,6,8,8,10,12,15,15,15,20}; + int lastduplicate=0; + int i,no=10; + + cout<<"Duplicate Elements are "< +using namespace std ; +int main () +{ + int i,j; + int A[13]={3,6,8,8,8,10,12,12,12,15,20,20,20}; + + for(i=0;i<13;i++) + { + if (A[i]==A[i+1]) + { + j=i+1; + while (A[j]==A[i]) + j++; + cout< +using namespace std; +int main () +{ + int i; + int A[15]={1,2,4,5,6,7,8,8,8,8,9,10,10,10}; + int H[15]={0}; // Creating A hash table of as all elements As zero + + for (i=0;i<15;i++) // ----------- n + { + H[A[i]]++; + } + for (i=0;i<15;i++) // ----------------n = n+n=2n + { + if (H[i]>1) + cout< +using namespace std; +int main() +{ + + int a[16] = {8,3,6,4,6,5,6,8,2,7,8,55,55,55,99,99}; + for(int i=0;i<15;i++) + { + int count = 1; + if(a[i]!=-1) + { + for(int j=i+1;j<16;j++) + { + if(a[j]==a[i]) + { + count++; + a[j]=-1; + } + } + if(count>1) + cout<<"Duplicate element is: "< +using namespace std; +int main () +{ + int A[10]={1,2,4,5,6,8,10,12,14,15}; + int n =sizeof(A)/sizeof(int); + int k=10 ;// sum of pair of element is 10 + int i,j; + i=0; + j=n-1; + while (i +#include + +struct array +{ + int *A; + int size; + int length; +}; + + +void Display(struct array arr); +void Append(struct array *arr,int x); +void Insert(struct array *arr,int index,int x); +void Delete(struct array *arr,int index); +void swap(int*p,int*q); +void LinearSearch(struct array *arr,int key); +void LinearSearchSwapToPrev(struct array *arr,int key); +void LinearSearchSwapToHead(struct array *arr,int key); +void BinSearch(struct array *arr,int key); +void RevBinSearch(struct array arr,int low,int high,int key); +void Get(struct array arr,int index); +void Set(struct array *arr,int index,int x); +void Max(struct array arr); +void Min(struct array arr); +int Sum(struct array arr); +float Avg(struct array arr); +void Rev1(struct array *arr); +void Rev2(struct array *arr); +void Display(struct array arr); +void lShift(struct array *arr); +void rShift(struct array *arr); +void lRot(struct array *arr); +void rRot(struct array *arr); +void InsertSort(struct array *arr,int x); +void IsSort(struct array arr); +void Arrange(struct array *arr); +struct array* Merge(struct array *arr,struct array *arr2); + + + +// All the functions are here->>>> + +//Swap Function +void swap(int*p,int*q) +{ + int temp; + temp=*p; + *p=*q; + *q=temp; +} + +//Display Function +void Display(struct array arr) +{ + int i; + printf("The elements in the array are: \n"); + for(i=0;ilengthsize) + { + arr->A[arr->length]=x; + arr->length++; + } + else + { + printf("The array has no empty space to append"); + } +} + +//Insert Function +void Insert(struct array *arr,int index,int x) +{ + int i; + if(arr->lengthsize) + { + if(index>=0 && index<=arr->length) + { + for(i=arr->length;i>index;i--) + { + arr->A[i]=arr->A[i-1]; + } + arr->A[index]=x; + arr->length++; + } + else + { + printf("You cannot insert the value due to the invalid index. \n"); + } + } + else + { + printf("The size is not sufficient to insert the element in the array.\n"); + } +} + +//Delete Function +void Delete(struct array *arr,int index) +{ + int i; + if(index>=0 && index<=arr->length) + { + for(i=index;ilength;i++) + { + arr->A[i]=arr->A[i+1]; + } + arr->length--; + } + else + { + printf("You can delete the element due to invalid \n"); + } +} + +//LinearSearch Normal Method Funtion +void LinearSearch(struct array *arr,int key) +{ + int i,x=0; + for(i=0;ilength;i++) + { + if(arr->A[i]==key) + { + printf("The element is found at location %d\n",i); + x=1; + break; + } + } + if(!x) + { + printf("The element is not present in the array\n"); + } +} + +//LinearSearch Move to previous index Function +void LinearSearchSwapToPrev(struct array *arr,int key) +{ + int i,x=0; + for(i=0;ilength;i++) + { + if(arr->A[i]==key) + { + swap(&arr->A[i],&arr->A[i-1]); + printf("The element is found at the location %d\n",i); + x=1; + break; + } + } + if(!x) + { + printf("The element is not present in the array\n"); + } +} + +//LinearSearch Move to Head/First index Function +void LinearSearchSwapToHead(struct array *arr,int key) +{ + int i,x=0; + for(i=0;ilength;i++) + { + if(arr->A[i]==key) + { + swap(&arr->A[i],&arr->A[0]); + printf("The element is found at the location %d\n",i); + x=1; + break; + } + } + if(!x) + { + printf("The element is not present in the array\n"); + } +} + +//Binary Search Normal method Function +void BinSearch(struct array *arr,int key) +{ + int low=0; + int high=arr->length-1; + int mid,x=0; + while(low<=high) + { + mid=(low+high)/2; + if(arr->A[mid]==key) + { + printf("The element is found at index %d",mid); + x=1; + break; + } + else if(keyA[mid]) + { + high=mid-1; + } + else if(key>arr->A[mid]) + { + low=mid+1; + } + } + if(x==0) + { + printf("The element is not found\n"); + } +} + +//Binary Search Recursion method Function +void RevBinSearch(struct array arr,int low,int high,int key) +{ + int mid,x=0; + if(low<=high) + { + mid=(low+high)/2; + if(arr.A[mid]==key) + { + printf("The element is found at location %d\n",mid); + x=1; + } + else if(keyarr.A[mid]) + { + RevBinSearch(arr,mid+1,high,key); + } + } + else + { + printf("The element is not found\n"); + } + +} + +//Get Function +void Get(struct array arr,int index) +{ + if(index>=0 && index=0 && indexlength) + { + arr->A[index]=x; + } + else + { + printf("The given index is not valid"); + } +} + +//Max Function +void Max(struct array arr) +{ + int i; + int max=arr.A[0]; + for(i=0;isize*sizeof(int)); + for(i=arr->length-1,j=0;i>=0,jsize;i--,j++) + { + B[j]=arr->A[i]; + } + for(i=0;isize;i++) + { + arr->A[i]=B[i]; + } +} + +//Reverse the array bby swapping each equidistant element +void Rev2(struct array *arr) +{ + int i,j; + for(i=0,j=arr->length-1;iA[i],&arr->A[j]); + } +} + +//Left Shift Function +void lShift(struct array *arr) +{ + int i; + for(i=0;ilength-1;i++) + { + arr->A[i]=arr->A[i+1]; + } + printf("\nThe elements in the array after left shift are: \n"); + for(i=0;ilength-1;i++) + { + printf("%d ",arr->A[i]); + } +} + +//Right Shift Function +void rShift(struct array *arr) +{ + int i; + for(i=arr->length-1;i>0;i--) + { + arr->A[i]=arr->A[i-1]; + } + printf("\nThe elements in the array after right shift are: \n"); + for(i=1;i<=arr->length-1;i++) + { + printf("%d ",arr->A[i]); + } +} + +//Left Rotation Function +void lRot(struct array *arr) +{ + int i,x; + x=arr->A[0]; + for(i=0;ilength-1;i++) + { + arr->A[i]=arr->A[i+1]; + } + arr->A[arr->length-1]=x; + printf("\nThe elements in the array after left rotation are: \n"); + for(i=0;i<=arr->length-1;i++) + { + printf("%d ",arr->A[i]); + } +} + +//Left Rotation Function +void rRot(struct array *arr) +{ + int i,x; + x=arr->A[arr->length-1]; + for(i=arr->length-1;i>0;i--) + { + arr->A[i]=arr->A[i-1]; + } + arr->A[0]=x; + printf("\nThe elements in the array after right rotation are: \n"); + for(i=0;i<=arr->length-1;i++) + { + printf("%d ",arr->A[i]); + } +} + +//Insert in sorted array Funtion +void InsertSort(struct array *arr,int x) +{ + int i; + if(arr->lengthsize) + { + for(i=arr->length-1;xA[i];i--) + { + arr->A[i+1]=arr->A[i]; + } + arr->A[i+1]=x; + arr->length++; + } + else + { + printf("The elements canot be inserted due to no empty spaces\n"); + } +} + +//Is sorted or not Function +void IsSort(struct array arr) +{ + int i,x=1; + for(i=0;iarr.A[i+1]) + { + x=0; + break; + } + } + if(x) + { + printf("The elements are in sorted order"); + } + else + { + printf("The elements are not in sorted order"); + } +} + +//-ve on left side and +ve on right side +void Arrange(struct array *arr) +{ + int i=0,j=arr->length-1; + while(arr->A[i]<0) + { + i++; + } + while(arr->A[j]>0) + { + j--; + } + if(iA[i],&arr->A[j]); + } +} + +struct array* Merge(struct array *arr,struct array *arr2) +{ + int i,j,k; + i=j=k=0; + struct array *arr3=(struct array *)malloc(sizeof(struct array)); + while(ilength && jlength) + { + if(arr->A[i]A[j]) + { + arr3->A[k]=arr->A[i]; + i++;k++; + } + else + { + arr3->A[k]=arr2->A[j]; + j++;k++; + } + } + for(;ilength;i++) + { + arr3->A[k]=arr->A[i]; + k++; + } + for(;jlength;j++) + { + arr3->A[k]=arr2->A[j]; + k++; + } + arr3->size=arr->size+arr2->size; + arr3->length=arr->length+arr2->length; + return arr3; +} + + + + + +//Main Function +int main() +{ + int i,ch,n,m,x,index; + struct array arr,arr2,*arr3; + printf("Enter the size of the array: \n"); + scanf("%d",&arr.size); + arr.A=(int*)malloc(arr.size*sizeof(int)); + arr.length=0; + printf("Enter the numner of element you want in the array: \n"); + scanf("%d",&n); + arr.length=n; + printf("Enter the elements in the array: \n"); + for(i=0;i Date: Tue, 4 Oct 2022 17:34:04 +0530 Subject: [PATCH 126/448] create solution.py here's a solution to the opened issue flattening of linked list. please add hacktoberfest tags. --- .../Flattening of a linked list/solution.py | 124 ++++++++++++++++++ 1 file changed, 124 insertions(+) create mode 100644 Python/Flattening of a linked list/solution.py diff --git a/Python/Flattening of a linked list/solution.py b/Python/Flattening of a linked list/solution.py new file mode 100644 index 00000000..21bab25a --- /dev/null +++ b/Python/Flattening of a linked list/solution.py @@ -0,0 +1,124 @@ +# Python3 program for flattening a Linked List + + +class Node(): + def __init__(self, data): + self.data = data + self.right = None + self.down = None + + +class LinkedList(): + def __init__(self): + + # head of list + self.head = None + + # Utility function to insert a node at beginning of the + # linked list + def push(self, head_ref, data): + + # 1 & 2: Allocate the Node & + # Put in the data + new_node = Node(data) + + # Make next of new Node as head + new_node.down = head_ref + + # 4. Move the head to point to new Node + head_ref = new_node + + # 5. return to link it back + return head_ref + + def printList(self): + + temp = self.head + while(temp != None): + print(temp.data, end=" ") + temp = temp.down + + print() + + # An utility function to merge two sorted linked lists + def merge(self, a, b): + # if first linked list is empty then second + # is the answer + if(a == None): + return b + + # if second linked list is empty then first + # is the result + if(b == None): + return a + + # compare the data members of the two linked lists + # and put the larger one in the result + result = None + + if (a.data < b.data): + result = a + result.down = self.merge(a.down, b) + else: + result = b + result.down = self.merge(a, b.down) + + result.right = None + return result + + def flatten(self, root): + + # Base Case + if(root == None or root.right == None): + return root + # recur for list on right + + root.right = self.flatten(root.right) + + # now merge + root = self.merge(root, root.right) + + # return the root + # it will be in turn merged with its left + return root + + +# Driver's code +if __name__ == '__main__': + L = LinkedList() + + ''' + Let us create the following linked list + 5 -> 10 -> 19 -> 28 + | | | | + V V V V + 7 20 22 35 + | | | + V V V + 8 50 40 + | | + V V + 30 45 + ''' + L.head = L.push(L.head, 30) + L.head = L.push(L.head, 8) + L.head = L.push(L.head, 7) + L.head = L.push(L.head, 5) + + L.head.right = L.push(L.head.right, 20) + L.head.right = L.push(L.head.right, 10) + + L.head.right.right = L.push(L.head.right.right, 50) + L.head.right.right = L.push(L.head.right.right, 22) + L.head.right.right = L.push(L.head.right.right, 19) + + L.head.right.right.right = L.push(L.head.right.right.right, 45) + L.head.right.right.right = L.push(L.head.right.right.right, 40) + L.head.right.right.right = L.push(L.head.right.right.right, 35) + L.head.right.right.right = L.push(L.head.right.right.right, 20) + + # Function call + L.head = L.flatten(L.head) + + L.printList() + From 27e5c2f3d3db314dfc8ed31ee873d80af669c5e0 Mon Sep 17 00:00:00 2001 From: Aishal Gupta Date: Tue, 4 Oct 2022 17:36:51 +0530 Subject: [PATCH 127/448] Delete 49a.cpp --- 49a.cpp | 28 ---------------------------- 1 file changed, 28 deletions(-) delete mode 100644 49a.cpp diff --git a/49a.cpp b/49a.cpp deleted file mode 100644 index 840d794c..00000000 --- a/49a.cpp +++ /dev/null @@ -1,28 +0,0 @@ -#include -using namespace std; -int main(){ - -string s; -getline(cin,s); - -int l=s.length(); -int f=0; -for (int i=l;i=0;i--){ -if (s[i]!=' ' || s[i]!='?'){ - if (s[i]=='A' || s[i]=='E' || s[i]=='I' || s[i]=='O' || s[i]=='U' || s[i]=='Y' || s[i]=='a' || s[i]=='e' || s[i]=='i' || s[i]=='o' || s[i]=='u' || s[i]=='y' ){ - f=1; - break; - - } - else - f=0;}} - - if (f==1){ - cout<<"YES"< Date: Tue, 4 Oct 2022 17:40:05 +0530 Subject: [PATCH 128/448] Create Heap Sort in C++ --- CPP/sorting/Heap Sort in C++ | 79 ++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 CPP/sorting/Heap Sort in C++ diff --git a/CPP/sorting/Heap Sort in C++ b/CPP/sorting/Heap Sort in C++ new file mode 100644 index 00000000..416e451f --- /dev/null +++ b/CPP/sorting/Heap Sort in C++ @@ -0,0 +1,79 @@ +// C++ program for implementation of Heap Sort + +#include +using namespace std; + +// To heapify a subtree rooted with node i +// which is an index in arr[]. +// n is size of heap +void heapify(int arr[], int N, int i) +{ + + // Initialize largest as root + int largest = i; + + // left = 2*i + 1 + int l = 2 * i + 1; + + // right = 2*i + 2 + int r = 2 * i + 2; + + // If left child is larger than root + if (l < N && arr[l] > arr[largest]) + largest = l; + + // If right child is larger than largest + // so far + if (r < N && arr[r] > arr[largest]) + largest = r; + + // If largest is not root + if (largest != i) { + swap(arr[i], arr[largest]); + + // Recursively heapify the affected + // sub-tree + heapify(arr, N, largest); + } +} + +// Main function to do heap sort +void heapSort(int arr[], int N) +{ + + // Build heap (rearrange array) + for (int i = N / 2 - 1; i >= 0; i--) + heapify(arr, N, i); + + // One by one extract an element + // from heap + for (int i = N - 1; i > 0; i--) { + + // Move current root to end + swap(arr[0], arr[i]); + + // call max heapify on the reduced heap + heapify(arr, i, 0); + } +} + +// A utility function to print array of size n +void printArray(int arr[], int N) +{ + for (int i = 0; i < N; ++i) + cout << arr[i] << " "; + cout << "\n"; +} + +// Driver's code +int main() +{ + int arr[] = { 12, 11, 13, 5, 6, 7 }; + int N = sizeof(arr) / sizeof(arr[0]); + + // Function call + heapSort(arr, N); + + cout << "Sorted array is \n"; + printArray(arr, N); +} From aa5b255923e284367b12a70e90188f6ec66c182b Mon Sep 17 00:00:00 2001 From: MR-DHRUV Date: Tue, 4 Oct 2022 17:54:54 +0530 Subject: [PATCH 129/448] Added algorithms to create, displey, insert, delete, search and count nodes in a linked list --- Linked List/Linked_list.cpp | 144 ++++++++++++++++++++++++++++++++++++ 1 file changed, 144 insertions(+) create mode 100644 Linked List/Linked_list.cpp diff --git a/Linked List/Linked_list.cpp b/Linked List/Linked_list.cpp new file mode 100644 index 00000000..d6b467e7 --- /dev/null +++ b/Linked List/Linked_list.cpp @@ -0,0 +1,144 @@ +#include +using namespace std; + +struct Node +{ + int data; + struct Node *next; + +} *first = NULL; +// initialised first as null + +void createList(int arr[], int n) +{ + struct Node *t; + struct Node *last; + + // setup a new node + first = new struct Node; + first->data = arr[0]; + first->next = NULL; + + // last is first as 1 element only + last = first; + + for (int i = 1; i < n; i++) + { + // setup a new node + t = new struct Node; + t->data = arr[i]; + t->next = NULL; + + // make current last point to new node + last->next = t; + + // update last + last = t; + } +}; + +void printList(struct Node *p) +{ + // while address of next block is not null + while (p != NULL) + { + cout << (p->data) << " "; + p = p->next; + } + + cout << endl; +} + +// time : O(n) +// space : O(1) +int countNodes(struct Node *p) +{ + // while address of next block is not null + int count = 0; + + while (p != NULL) + { + count++; + p = p->next; + } + + return count; +} + +void insert(struct Node *p, int index, int data) +{ + // new node in heap + struct Node *newNode; + newNode = new struct Node; + newNode->data = data; + + if (index == 0) + { + // linking + newNode->next = first; + first = newNode; + } + + else + { + for (int i = 0; i < index - 1; i++) + { + p = p->next; + } + + newNode->next = p->next; + p->next = newNode; + } + +} + +void deleteList(struct Node *p , int index) +{ + struct Node *prev; + + if(index == 0){ + + // pointing to 1st node + prev = first; + + // pointing to 2nd node + first = first->next; + + delete prev; + } + + else{ + + for (int i = 0; i < index-1; i++) + { + prev = p; + p = p->next; + } + + prev->next = p->next; + delete p; + + } +} + +struct Node *searchList(struct Node *p, int target) +{ + while (p != 0) + { + if (p->data == target) + { + // returns address of that node which have data == target + return p; + } + p = p->next; + } + + return NULL; +} + + + +int main() +{ + +} \ No newline at end of file From d538963bfd4da5fb47017c93fe086bdd22ad6cc0 Mon Sep 17 00:00:00 2001 From: jenna <66896414+jen-sjen@users.noreply.github.com> Date: Tue, 4 Oct 2022 18:08:33 +0530 Subject: [PATCH 130/448] Create minimum_path_sum.py --- Python/minimum_path_sum.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 Python/minimum_path_sum.py diff --git a/Python/minimum_path_sum.py b/Python/minimum_path_sum.py new file mode 100644 index 00000000..5064c5d6 --- /dev/null +++ b/Python/minimum_path_sum.py @@ -0,0 +1,17 @@ +//LEETCODE- 64. Minimum Path Sum + def minPathSum(self, grid: List[List[int]]) -> int: + nR = len(grid) + nC = len(grid[0]) + adj = [(1, 0), (0, 1)] + + @cache + def dfs(r, c): + if r == nR - 1 and c == nC - 1: + return grid[r][c] + paths = [] + for a, b in adj: + r2, c2 = r + a, c + b + if 0 <= r2 < nR and 0 <= c2 < nC: + paths.append(dfs(r2, c2)) + return grid[r][c] + min(paths) + return dfs(0, 0) From 2f8dcf1028a23e7a5284392f3bd08ed94e786565 Mon Sep 17 00:00:00 2001 From: Aishal Gupta Date: Tue, 4 Oct 2022 18:25:39 +0530 Subject: [PATCH 131/448] Codeforces-49A-C++ --- CPP/Problems/49a.cpp | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 CPP/Problems/49a.cpp diff --git a/CPP/Problems/49a.cpp b/CPP/Problems/49a.cpp new file mode 100644 index 00000000..840d794c --- /dev/null +++ b/CPP/Problems/49a.cpp @@ -0,0 +1,28 @@ +#include +using namespace std; +int main(){ + +string s; +getline(cin,s); + +int l=s.length(); +int f=0; +for (int i=l;i=0;i--){ +if (s[i]!=' ' || s[i]!='?'){ + if (s[i]=='A' || s[i]=='E' || s[i]=='I' || s[i]=='O' || s[i]=='U' || s[i]=='Y' || s[i]=='a' || s[i]=='e' || s[i]=='i' || s[i]=='o' || s[i]=='u' || s[i]=='y' ){ + f=1; + break; + + } + else + f=0;}} + + if (f==1){ + cout<<"YES"< Date: Tue, 4 Oct 2022 18:37:45 +0530 Subject: [PATCH 132/448] bfs program cpp --- CPP/graph_tree/bfs.cpp | 74 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 CPP/graph_tree/bfs.cpp diff --git a/CPP/graph_tree/bfs.cpp b/CPP/graph_tree/bfs.cpp new file mode 100644 index 00000000..ec625491 --- /dev/null +++ b/CPP/graph_tree/bfs.cpp @@ -0,0 +1,74 @@ +#include +#include +#include +using namespace std; +int n,m; +int dist[100]; +int parent[100]; +vector adjList[100]; +queue q; + +void bfs(int sour) +{ + for(int i=1;i<=n;i++) + { + if(n!=1) + { + parent[i]=0; + dist[i]=-1; + } + } + parent[sour]=0; + dist[sour]=0; + q.push(sour); + while(!q.empty()) + { + int x=q.front(); + q.pop(); + for(int j=0;j>n; + cout<<"Enter Edges_"; + cin>>m; + int x,y; + for(int i=1;i<=m;i++) + { + cin>>x; + cin>>y; + adjList[x].push_back(y); + } + + for(int i=1;i<=n;i++) + { + cout<"; + for(int j=0;j Date: Tue, 4 Oct 2022 18:53:11 +0530 Subject: [PATCH 136/448] Add files via upload --- BFS_AND_DFS.cpp | 95 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 BFS_AND_DFS.cpp diff --git a/BFS_AND_DFS.cpp b/BFS_AND_DFS.cpp new file mode 100644 index 00000000..00c53478 --- /dev/null +++ b/BFS_AND_DFS.cpp @@ -0,0 +1,95 @@ +#include +using namespace std; + +int v; //No. of Vertices + +void Add_edge(vector adj[], int a, int b) +{ + adj[a].push_back(b); +} + +/************************************* ALGORITHM FOR BREADTH FIRST SEARCH ******************************************************/ + +// Take the empty queue and bool type array (visit) initialise with FALSE. +// Push the starting node in the queue and set the value TRUE for this node in visited array. +// Pop out the front node of the queue and print the node. +// Push the adjacent node of pop node in queue which are not visited. Set the value TRUE in visited array of adding node. +// Repeat step 3 and 4 until the queue becomes empty. + +void bfs(int n, vectoradj[]) +{ + vector visit(v,false); + queue q; + q.push(n); + visit[n]=true; + while(!q.empty()) + { + n=q.front(); + cout< adj[]) +{ + vector visit(v,false); + stack s; + s.push(n); + visit[n]=true; + while(!s.empty()) + { + n=s.top(); + cout<>v; + vector adj[v]; + vector visit(v,false); + Add_edge(adj,0,1); + Add_edge(adj,0,2); + Add_edge(adj,1,2); + Add_edge(adj,2,0); + Add_edge(adj,2,3); + Add_edge(adj,3,3); + + int temp; + cout<<"Choose the vertex from you want to start traversing : "; + cin>>temp; + cout<<"\nBFS traversal is"<<" "; + bfs(temp,adj); + cout<<"\nDFS traversal is"<<" "; + dfs(temp,adj); + + return 0; +} \ No newline at end of file From 5911daffa45025dde066d2bf8c8ca6929b02934c Mon Sep 17 00:00:00 2001 From: harsh0050 <113931334+harsh0050@users.noreply.github.com> Date: Tue, 4 Oct 2022 18:55:23 +0530 Subject: [PATCH 137/448] Removed some unnecessary code. --- Hashtable/Addition-using-hashtable.java | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/Hashtable/Addition-using-hashtable.java b/Hashtable/Addition-using-hashtable.java index e6aef62d..e16ba4e6 100644 --- a/Hashtable/Addition-using-hashtable.java +++ b/Hashtable/Addition-using-hashtable.java @@ -4,14 +4,9 @@ class AddElementsToHashtable { public static void main(String args[]) { - // No need to mention the - // Generic type twice - Hashtable ht1 = new Hashtable<>(); - // Initialization of a Hashtable // using Generics - Hashtable ht2 - = new Hashtable(); + Hashtable ht1 = new Hashtable<>(), ht2 = new Hashtable<>(); // Inserting the Elements // using put() method From f08492e6e8e7717f614ec59e999079fd5931231d Mon Sep 17 00:00:00 2001 From: Ronica Singh Date: Tue, 4 Oct 2022 15:31:11 +0200 Subject: [PATCH 138/448] Added count-odd-numbers-in-an-interval-range-1523 --- .../count-odd-numbers-in-an-interval-range-1523.cs | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 CSharp/Programming Skills 1/count-odd-numbers-in-an-interval-range-1523.cs diff --git a/CSharp/Programming Skills 1/count-odd-numbers-in-an-interval-range-1523.cs b/CSharp/Programming Skills 1/count-odd-numbers-in-an-interval-range-1523.cs new file mode 100644 index 00000000..fbadc926 --- /dev/null +++ b/CSharp/Programming Skills 1/count-odd-numbers-in-an-interval-range-1523.cs @@ -0,0 +1,10 @@ +public class Solution { + public int CountOdds(int low, int high) { + int count = 0; + for (int i = low; i <= high; i++) + if (i % 2 == 1) + count++; + + return count; + } +} \ No newline at end of file From 91a2f260a258680e874ee4b759488b397077d467 Mon Sep 17 00:00:00 2001 From: Timileyin Daso <42693221+DasoTD@users.noreply.github.com> Date: Tue, 4 Oct 2022 14:31:56 +0100 Subject: [PATCH 139/448] Update anagram_checker.py create a check for it, when their length isn't same --- Python/anagram_checker.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Python/anagram_checker.py b/Python/anagram_checker.py index ebfb93e0..6d92f5a8 100644 --- a/Python/anagram_checker.py +++ b/Python/anagram_checker.py @@ -7,6 +7,8 @@ def anagram_checker(s1,s2): pos = 0 matches = True + if len(list1) != len(list2): + return False while pos < len(s1) and matches: if list1[pos] == list2[pos]: From 73344f509b1f114b138e5f81271c4f0bbc8bdf5b Mon Sep 17 00:00:00 2001 From: Raj <91658804+rajethanm5@users.noreply.github.com> Date: Tue, 4 Oct 2022 19:07:25 +0530 Subject: [PATCH 140/448] Create word_break.cpp --- Dynamic Programming/word_break.cpp | 37 ++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 Dynamic Programming/word_break.cpp diff --git a/Dynamic Programming/word_break.cpp b/Dynamic Programming/word_break.cpp new file mode 100644 index 00000000..95c00bb2 --- /dev/null +++ b/Dynamic Programming/word_break.cpp @@ -0,0 +1,37 @@ +#include +#include +#include +using namespace std; + +void wordBreak(vector const &dict, string word, string out) +{ + if (word.size() == 0) + { + cout << out << endl; + return; + } + + for (int i = 1; i <= word.size(); i++) + { + + string prefix = word.substr(0, i); + + + if (find(dict.begin(), dict.end(), prefix) != dict.end()) { + wordBreak(dict, word.substr(i), out + " " + prefix); + } + } +} + +int main() +{ + + vector dict = { "this", "th", "is", "famous", "Word", "break", + "b", "r", "e", "a", "k", "br", "bre", "brea", "ak", "problem" }; + + string word = "Wordbreakproblem"; + + wordBreak(dict, word, ""); + + return 0; +} From 18f8626fee4d0d5a8650e2655e4d0858fb9bc8d1 Mon Sep 17 00:00:00 2001 From: precisecharmer <89693336+precisecharmer@users.noreply.github.com> Date: Tue, 4 Oct 2022 19:40:50 +0530 Subject: [PATCH 141/448] Create collatz.cpp --- CPP/collatz.cpp | 83 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 CPP/collatz.cpp diff --git a/CPP/collatz.cpp b/CPP/collatz.cpp new file mode 100644 index 00000000..627803b3 --- /dev/null +++ b/CPP/collatz.cpp @@ -0,0 +1,83 @@ + +// This code is a implementation of Collatz Numbers. +// Problem statement is: https://projecteuler.net/problem=14 + +// Here we need to find any number which forms longest chain(collatz series) under one million. + +// One code if brute force which goes for every number and since longest chain will be arnd 525 time complexity will be: 106 * 500 (approx.) + +// Other is kind of Dp-ish approach which stores value of a chain and also update all the numbers appearing in the chain thus taking less time +// Solution is bit recursive and recursion ends where we find any value which is -1. +#include +using namespace std; +#define ll long long +const int inf = 1e9 + 7; + +ll int collatz(ll int curr, vector &vec, ll int lv) +{ + if (curr <= lv && vec[curr] != -1) + { + // when we find any number in chain which has a value more than -1, its time to stop + return vec[curr]; + } + // collatz basic rule: n even -> (n / 2), n odd - > 3n +1 + + ll int next = (3 * curr) + 1; + + if (curr % 2 == 0) + { + next = curr / 2; + } + // prev number in range = 1 + next number in range + // (8 -> 4 -> 2 -> 1) here (answer for 8 is 4) and (answer for 4 is 3) + int nextv = 1 + collatz(next, vec, lv); + // if number lies in range(0 - vector.size()) then update it , other ignore it + if (curr <= lv) + { + vec[curr] = nextv; + } + return nextv; +} + +void solve() +{ + int x = 1000000; + vector vec(x + 1, -1); + vec[0] = vec[1] = 1; + for (int i = 1; i < x; i++) + { + vec[i + 1] = collatz(i + 1, vec, x - 1); + } + ll int maxm = -1, ans = -1; + for (int i = 0; i < vec.size(); i++) + { + if (vec[i] >= maxm) + { + maxm = vec[i]; + ans = i; + } + maxm = max(maxm, vec[i]); + } + cout << ans << endl; + return; +} + +int main() +{ + + ios_base::sync_with_stdio(false); + cin.tie(NULL); + cout.tie(NULL); + cin.exceptions(cin.failbit); + + clock_t start = clock(); + + solve(); + + clock_t end = clock(); + double elapsed = double(end - start) / CLOCKS_PER_SEC; + + printf("Time measured: %.3f seconds.\n", elapsed); + + return 0; +} From 8331ff9404411983f5077821647e2e30fa3cf8d7 Mon Sep 17 00:00:00 2001 From: Sanskar Goyal <71179380+Phoenix-14@users.noreply.github.com> Date: Tue, 4 Oct 2022 19:54:38 +0530 Subject: [PATCH 142/448] Create Fast Exponentiation.cpp --- CPP/recursion/Fast Exponentiation.cpp | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 CPP/recursion/Fast Exponentiation.cpp diff --git a/CPP/recursion/Fast Exponentiation.cpp b/CPP/recursion/Fast Exponentiation.cpp new file mode 100644 index 00000000..4499b8fb --- /dev/null +++ b/CPP/recursion/Fast Exponentiation.cpp @@ -0,0 +1,24 @@ +// program to find nth power of a number using optimized recursion (fast exponentiation) +#include +using namespace std; + +int fastExponent(int a, int b) { + // base case + if (b == 1) { + return a; + } + int tempResult = fastExponent(a, b/2); + // recursive relation + if ((b & 1) == 0) { + return (tempResult * tempResult); + } + else { + return (a * (tempResult * tempResult)); + } +} + +int main () { + int base = 3, power = 11; + cout< Date: Tue, 4 Oct 2022 19:57:16 +0530 Subject: [PATCH 143/448] Create README.md --- Java/Recursion/README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Java/Recursion/README.md diff --git a/Java/Recursion/README.md b/Java/Recursion/README.md new file mode 100644 index 00000000..3eb89e02 --- /dev/null +++ b/Java/Recursion/README.md @@ -0,0 +1 @@ +This Repository contains some basic recursion problems From 6d7c3496744e927c7dc0ac9fe8da18c0beaae480 Mon Sep 17 00:00:00 2001 From: Alok Khansali <75980074+TheCodeAlpha26@users.noreply.github.com> Date: Tue, 4 Oct 2022 19:57:59 +0530 Subject: [PATCH 144/448] Add files via upload --- Java/Recursion/Binary_of_a_number.java | 20 ++++++ Java/Recursion/Checking_the_palindrome.java | 25 +++++++ Java/Recursion/FactorialN.java | 33 ++++++++++ Java/Recursion/Fibonacci.java | 36 ++++++++++ Java/Recursion/N_to_1.java | 21 ++++++ Java/Recursion/Permutation.java | 58 +++++++++++++++++ Java/Recursion/Repeat_Pattern.java | 43 ++++++++++++ Java/Recursion/Rope_cutting.java | 65 +++++++++++++++++++ ...llest_power_of_x_less_than_equal_to_N.java | 18 +++++ Java/Recursion/Subset_Sum.java | 24 +++++++ Java/Recursion/Subset_gen.java | 24 +++++++ Java/Recursion/Sum_Of_Digits.java | 18 +++++ Java/Recursion/Sum_of_first_N.java | 21 ++++++ Java/Recursion/Tower_of_Hanoi.java | 44 +++++++++++++ Java/Recursion/joshephus.java | 37 +++++++++++ Java/Recursion/one_to_N.java | 28 ++++++++ 16 files changed, 515 insertions(+) create mode 100644 Java/Recursion/Binary_of_a_number.java create mode 100644 Java/Recursion/Checking_the_palindrome.java create mode 100644 Java/Recursion/FactorialN.java create mode 100644 Java/Recursion/Fibonacci.java create mode 100644 Java/Recursion/N_to_1.java create mode 100644 Java/Recursion/Permutation.java create mode 100644 Java/Recursion/Repeat_Pattern.java create mode 100644 Java/Recursion/Rope_cutting.java create mode 100644 Java/Recursion/Smallest_power_of_x_less_than_equal_to_N.java create mode 100644 Java/Recursion/Subset_Sum.java create mode 100644 Java/Recursion/Subset_gen.java create mode 100644 Java/Recursion/Sum_Of_Digits.java create mode 100644 Java/Recursion/Sum_of_first_N.java create mode 100644 Java/Recursion/Tower_of_Hanoi.java create mode 100644 Java/Recursion/joshephus.java create mode 100644 Java/Recursion/one_to_N.java diff --git a/Java/Recursion/Binary_of_a_number.java b/Java/Recursion/Binary_of_a_number.java new file mode 100644 index 00000000..1a1d3620 --- /dev/null +++ b/Java/Recursion/Binary_of_a_number.java @@ -0,0 +1,20 @@ +import java.util.*; +class Binary_of_a_number +{ + static void Binary(int n) + { + if (n == 0) + return; + Binary(n / 2); + System.out.print(n % 2 + " "); + } + public static void main(String args[]) + { + Scanner I = new Scanner(System.in); + System.out.println("Enter A Number"); + int n = I.nextInt(); + System.out.println("Binary Representation of the number : "); + Binary(n); + I.close(); + } +} \ No newline at end of file diff --git a/Java/Recursion/Checking_the_palindrome.java b/Java/Recursion/Checking_the_palindrome.java new file mode 100644 index 00000000..6df12136 --- /dev/null +++ b/Java/Recursion/Checking_the_palindrome.java @@ -0,0 +1,25 @@ +import java.util.*; + +class Checking_the_palindrome +{ + static boolean palin(String s, int l, int i) + { + if (i == l / 2) + return true; + boolean x = (s.charAt(i) == s.charAt(l - 1 - i)); // Boolean data can be used as 0 and 1 + return (x && palin(s, l, i + 1)); // In java booleans can be multiplied using relational operators only + } + + public static void main(String args[]) + { + Scanner I = new Scanner(System.in); + System.out.println("Enter a String you want to check"); + String s = I.nextLine(); + System.out.print("The String is PalinDrome? "); + if (palin(s, s.length(), 0)) + System.out.print("YES"); + else + System.out.print("NO"); + I.close(); + } +} diff --git a/Java/Recursion/FactorialN.java b/Java/Recursion/FactorialN.java new file mode 100644 index 00000000..daa9a6c3 --- /dev/null +++ b/Java/Recursion/FactorialN.java @@ -0,0 +1,33 @@ +import java.util.*; +class FactorialN +{ + public static int f; //Global variable + static void fct(int n) //Tail recursive version + { + if (n <= 1) + return; + f *= n; + fct(n-1); //All Set and done + } + /* + static int fct(int n) //Head recursive version + { + if (n <= 1) + return 1; + return (n * fct(n-1)); + // this n, makes the function here head recursive, as the function + // will have to return to its parent to do the multiplication, + // hence tail elimination cant be used + } + */ + public static void main(String args[]) + { + Scanner I = new Scanner(System.in); + System.out.println("Enter A Number"); + int n = I.nextInt(); + f = 1; + fct(n); + System.out.println("Your factorial is: " + f); + I.close(); + } +} \ No newline at end of file diff --git a/Java/Recursion/Fibonacci.java b/Java/Recursion/Fibonacci.java new file mode 100644 index 00000000..09ae1ff7 --- /dev/null +++ b/Java/Recursion/Fibonacci.java @@ -0,0 +1,36 @@ +import java.util.*; +class Fibonacci // if asked for a term always use bennet's formula, open purple register +{ + static void nth_fibo(int b, int c, int n) //better than f(n-1) + f(n-2), coz here a lot + { //overlapping subproblems occur + /* + if(n < 0) + return 0; + if(n < 2) + return n; + return(fibo(n-1) + fibo(n-2)); //tradional 2^n solution + */ + if (n == 2) //if u say 0 is the first term, else take n == 1 + { + System.out.println(c); + return; + } + //Uncomment to print the series + //System.out.print(c+b + " "); + nth_fibo(c, c + b, n - 1); //To print use System.out.println(c+b), above this statement + } + + public static void main(String args[]) { + Scanner I = new Scanner(System.in); + System.out.println("Enter the number n, to get the nth fibonacci number"); + int n = I.nextInt(); + if (n < 3) + System.out.println(n - 1); + else + { + System.out.println("0 1 "); + nth_fibo(0, 1, n); + } + I.close(); + } +} \ No newline at end of file diff --git a/Java/Recursion/N_to_1.java b/Java/Recursion/N_to_1.java new file mode 100644 index 00000000..93ba8a2d --- /dev/null +++ b/Java/Recursion/N_to_1.java @@ -0,0 +1,21 @@ +import java.util.*; +class N_to_1 //tail Recursive +{ + static void rec(int N) + { + //A label called Start is added here, + //This is called Tail Call Elimination + if(N == 0) + return; + System.out.print(N + " "); + rec(N-1); //Modern Compiler change it to [ n -> n-1, goto start] + } //This makes the execution faster + public static void main(String args[]) + { + Scanner I = new Scanner(System.in); + System.out.println("Enter the value of N"); + int N = I.nextInt(); + rec(N); + I.close(); + } +} \ No newline at end of file diff --git a/Java/Recursion/Permutation.java b/Java/Recursion/Permutation.java new file mode 100644 index 00000000..88342e0e --- /dev/null +++ b/Java/Recursion/Permutation.java @@ -0,0 +1,58 @@ +import java.util.*; +class Permutation { + static String swap(String mystring, int i, int j) // function to swap the characters in the string + { + char ch[] = mystring.toCharArray(); + char tempo = ch[i]; + ch[i] = ch[j]; + ch[j] = tempo; + return String.valueOf(ch); + } + static void permutation(String s, int index) // To permuatate the string + { + if (index == s.length() - 1) // if the index equals the length, print the string + System.out.println(s); + for (int j = index; j < s.length(); j++) { + s = swap(s, j, index); // Swap the character to manipulate the string + permutation(s, index + 1); // Send it to get the permutation + s = swap(s, j, index); // Swap back to get the original string + } + } + public static void main(String args[]) { + Scanner I = new Scanner(System.in); + System.out.println("ENTER A STRING"); + String s = I.nextLine(); + System.out.println("Given Below are all the permutations of the string"); + permutation(s, 0); + I.close(); + } +} +// Time Complexity : N * N! +/* +//Cpp function to get the shit done, lexographically and unique elements +class Solution +{ + public: + set ans; + void permutate(string s, int in) + { + if(in == s.size()-1) + { + ans.insert(s); + return; + } + for(int j = in; j < s.size();j++) + { + swap(s[j],s[in]); + permutate(s, in + 1); + swap(s[j],s[in]); + } + } + vectorfind_permutation(string S) + { + permutate(S,0); + vector res(ans.begin(), ans.end()); + return res; + } +}; +*/ \ No newline at end of file diff --git a/Java/Recursion/Repeat_Pattern.java b/Java/Recursion/Repeat_Pattern.java new file mode 100644 index 00000000..b8601848 --- /dev/null +++ b/Java/Recursion/Repeat_Pattern.java @@ -0,0 +1,43 @@ +import java.util.*; +class Repeat_Pattern +{ + static void pattern(int n) { + + if (n == 0) + return; + pattern(n - 1); + System.out.println(n); + pattern(n - 1); + } + + public static void main(String args[]) { + Scanner I = new Scanner(System.in); + System.out.println("Enter A Number\n"); + int n = I.nextInt(); + pattern(n); + I.close(); + } +} +/* + +Input + 4 + +Output +1 //Nothing before 1 so nothing afterwards +2 //Everything printed before is printed afterwards +1 +3 //Everything printed before is printed afterwards +1 +2 +1 +4 //Everything printed before is printed afterwards +1 +2 +1 +3 +1 +2 +1 + +*/ \ No newline at end of file diff --git a/Java/Recursion/Rope_cutting.java b/Java/Recursion/Rope_cutting.java new file mode 100644 index 00000000..8d3b48a3 --- /dev/null +++ b/Java/Recursion/Rope_cutting.java @@ -0,0 +1,65 @@ +import java.util.*; +class Rope_cutting +{ + static int get_max(int n, int a, int b, int c) + { + if(n < 1) + return n; + /* + // first drafts are bad at times + int x = -1 , y = -1, z = -1; + x = get_max(n-a,a,b,c); + y = get_max(n-b,a,b,c); + z = get_max(n-c,a,b,c); + x = (x > -1) ? x+1 : -1; + y = (y > -1) ? y+1 : -1; + z = (z > -1) ? z+1 : -1; + return (Math.max(x, Math.max(y,z))); + */ + int ans = Math.max(get_max(n-a,a,b,c),Math.max(get_max(n-b,a,b,c),get_max(n-c,a,b,c))); //Concise version of the above code + if(ans > -1) + return ans + 1; + return -1; + } + public static void main(String args[]) + { + Scanner I = new Scanner(System.in); + int n = I.nextInt(),a = I.nextInt(),b = I.nextInt(),c = I.nextInt(); + int ans = get_max(n,a,b,c); + System.out.println("Answer : " + ans); + I.close(); + } +} +//TIME COMPLEXITY = 3^N, WHERE N = LENGTH OF THE ROD + + + + +/* +//DP Solution for the same + #include //Given that a way to cut the ribbon exists therefore {a*x + b*y +c*z = n} + //Task is to maximise x+y+z + using namespace std; + int main() + { + ios_base::sync_with_stdio(false); + cin.tie(NULL); + cout.tie(NULL); + int n,a,b,c,x=-1,y=-1,z=-1; + cin >> n >> a >> b >> c; + int dp[n+1] = {}; + dp[0] = 0; + for(int i = 1;i<=n;i++,x = -1,y=-1,z=-1) + { + x = ((i >= a) ? dp[i-a] : -1); + y = ((i >= b) ? dp[i-b] : -1); + z = ((i >= c) ? dp[i-c] : -1); + if(x+y+z == -3) + dp[i] = -1; + else + dp[i] = max({x,y,z}) + 1; + } + cout << dp[n]; + return 0; + } +*/ \ No newline at end of file diff --git a/Java/Recursion/Smallest_power_of_x_less_than_equal_to_N.java b/Java/Recursion/Smallest_power_of_x_less_than_equal_to_N.java new file mode 100644 index 00000000..5a970013 --- /dev/null +++ b/Java/Recursion/Smallest_power_of_x_less_than_equal_to_N.java @@ -0,0 +1,18 @@ +import java.util.*; +public class Smallest_power_of_x_less_than_equal_to_N // O(floor(Logx(N))) +{ + static int power(int N, int x) + { + if (N < x) + return 0; + return 1 + power(N / x, x); + } + public static void main(String args[]) + { + Scanner I = new Scanner(System.in); + System.out.println("Enter the Number N\nAnd the base X for which\nYou want to know smallest power P\nLess than or equal to N\n X^P <= N"); + int N = I.nextInt(), x = I.nextInt(); + System.out.println(power(N, x)); + I.close(); + } +} diff --git a/Java/Recursion/Subset_Sum.java b/Java/Recursion/Subset_Sum.java new file mode 100644 index 00000000..6ab62f9b --- /dev/null +++ b/Java/Recursion/Subset_Sum.java @@ -0,0 +1,24 @@ +import java.util.*; +class Subset_Sum +{ + static int subset(int arr[],int s, int i, int n) + { + if(i == n) + return ((s == 0) ? 1 : 0); + return subset(arr, s - arr[i], i+1, n) + subset(arr, s ,i+1, n); + } + public static void main(String args[]) + { + Scanner I = new Scanner(System.in); + System.out.println("Enter the number of elements you want in the array"); + int N = I.nextInt(); + System.out.println("Enter the elements of the array"); + int a[] = new int[N]; + for(int i = 0; i < N; i++) + a[i] = I.nextInt(); + System.out.println("Enter the value of sum, you want to check in the array"); + int sum = I.nextInt(); + System.out.println("You have " + subset(a,sum,0,N) + " subsets in the array that can yield the given sum"); + I.close(); + } +} diff --git a/Java/Recursion/Subset_gen.java b/Java/Recursion/Subset_gen.java new file mode 100644 index 00000000..d0a65308 --- /dev/null +++ b/Java/Recursion/Subset_gen.java @@ -0,0 +1,24 @@ +import java.util.*; +class Subset_gen // Same as generating all the subsequence of a string +{ // Produces 2^N outputs + static void subset(String s, int i, int n, String a) // Same thing you have to follow that at a time, u can either choose a character or leave it + { + if (i == n) + { + System.out.println(a); + return; + } + subset(s, i + 1, n, a + s.charAt(i)); + subset(s, i + 1, n, a); + } + + public static void main(String args[]) + { + Scanner I = new Scanner(System.in); + System.out.println("ENTER A STRING"); + String s = I.nextLine(); // Considering all characters are distinct + System.out.println(); + subset(s, 0, s.length(), ""); + I.close(); + } +} \ No newline at end of file diff --git a/Java/Recursion/Sum_Of_Digits.java b/Java/Recursion/Sum_Of_Digits.java new file mode 100644 index 00000000..e08ac238 --- /dev/null +++ b/Java/Recursion/Sum_Of_Digits.java @@ -0,0 +1,18 @@ +import java.util.*; //Getting the sum of digits + +class Sum_of_Digits { + static int rec_sum(int n) + { + if (n == 0) + return 0; + return n % 10 + rec_sum(n / 10); //for product of digits chnge '+' with '*' + } + + public static void main(String args[]) { + Scanner I = new Scanner(System.in); + System.out.println("Enter A Number"); + int n = I.nextInt(); + System.out.println("Your Sum Of Digits is: " + rec_sum(n)); + I.close(); + } +} \ No newline at end of file diff --git a/Java/Recursion/Sum_of_first_N.java b/Java/Recursion/Sum_of_first_N.java new file mode 100644 index 00000000..3c4b2522 --- /dev/null +++ b/Java/Recursion/Sum_of_first_N.java @@ -0,0 +1,21 @@ +import java.util.*; +class Sum_of_first_N // Sum of first N natural numbers +{ + public static int sum; // Global variable + static void summation(int n) //n+1 system calls + { + if (n <= 0) + return; + sum += n; + summation(n - 1); + } + public static void main(String args[]) + { + Scanner I = new Scanner(System.in); + System.out.println("Enter the Number N"); + int n = I.nextInt(); + summation(n); + System.out.println("The sum of first N number is : " + sum); + I.close(); + } +} \ No newline at end of file diff --git a/Java/Recursion/Tower_of_Hanoi.java b/Java/Recursion/Tower_of_Hanoi.java new file mode 100644 index 00000000..870a2857 --- /dev/null +++ b/Java/Recursion/Tower_of_Hanoi.java @@ -0,0 +1,44 @@ +/* + * A set up where there are 3 towers and discs of different sizes are to be transported from tower 1 to tower 3 + * Rules are Simple, solution isnt + * Rule 1: Only one disc moves at a time, + * Rule 2: Only the top most disc in a tower can be moved + * Rule 3: No larger disc can be placed on top of a smaller disc + */ +import java.util.*; + +class Tower_of_Hanoi { + // public static long step = 0; Global variable to get the number of steps, if + // you dont know the formula + + static void TOH(int n, char a, char b, char c) // TOH(n-1, source, using, destination); + { + /* + * The idea here is to get the (N - 1) discs [For the current value of N], from + * Tower A to Tower B using the Tower C + * Then Taking the Nth disc from Tower A to Tower C, the largest disc only moves + * once + * Then again getting the (N - 1) discs [For the current value of N], from Tower + * B to Tower C using the Tower A + */ + if (n == 0) + return; + // keeps switching B and C + TOH(n - 1, a, c, b); // The idea here is to get the n-1 discs from Tower A to tower B, using tower C + // step++; + System.out.println(a + " " + c); // Then send the Nth disc to tower C + TOH(n - 1, b, a, c); // Then again send the n-1 discs from tower B to Tower C using Tower A + } + + public static void main(String args[]) { + Scanner I = new Scanner(System.in); + //System.out.println("Enter the number of discs you want in the tower"); + int n = I.nextInt(); + System.out.println((long) (Math.pow(2, n) - 1)); + TOH(n, '1', '2', '3'); + //System.out.println("It took: " + (long) (Math.pow(2, n) - 1) + " Steps to do the task"); // Replace step with + // formula if you dont + // remember it + I.close(); + } +} diff --git a/Java/Recursion/joshephus.java b/Java/Recursion/joshephus.java new file mode 100644 index 00000000..8d96f2dc --- /dev/null +++ b/Java/Recursion/joshephus.java @@ -0,0 +1,37 @@ +import java.util.*; +class joshephus +{ + static int Jos(int n, int k) + { + if(n == 1) + return 1; + return (Jos(n - 1,k) + k-1) % n + 1; + } + public static void main(String args[]) + { + Scanner I = new Scanner(System.in); + int n = I.nextInt(), k = I.nextInt(); + System.out.println(Jos(n,k)); + I.close(); + } +} +/*when starting pos is 0 +import java.util.*; +class joshephus +{ + static int Jos(int n, int k) + { + if(n == 1) + return 0; + return (Jos(n - 1,k) + k) % n; + } + public static void main(String args[]) + { + Scanner I = new Scanner(System.in); + int n = I.nextInt(), k = I.nextInt(); + System.out.println(Jos(n,k)); + I.close(); + } +} + + */ \ No newline at end of file diff --git a/Java/Recursion/one_to_N.java b/Java/Recursion/one_to_N.java new file mode 100644 index 00000000..42d3e3be --- /dev/null +++ b/Java/Recursion/one_to_N.java @@ -0,0 +1,28 @@ +import java.util.*; +class one_to_N //Head Recursion +{ + static void rec(int N) //No other variable needed + { + if(N == 0) + return; + rec(N-1); + System.out.print(N + " "); + } + /* //Tail Recursion alternative + static void rec(int N, int i) //No other variable needed + { + if(i == N) + return; + System.out.print(N + " "); + rec(N,i+1); + } //Will be called using rec(N,0); + */ + public static void main(String args[]) + { + Scanner I = new Scanner(System.in); + System.out.println("Enter the value of N"); + int N = I.nextInt(); + rec(N); + I.close(); + } +} From 7db6aa83ff6095edcebbec7cd800a532f26fcace Mon Sep 17 00:00:00 2001 From: Sanskar Goyal <71179380+Phoenix-14@users.noreply.github.com> Date: Tue, 4 Oct 2022 19:58:46 +0530 Subject: [PATCH 145/448] Create pivotArray.cpp --- CPP/recursion/pivotArray.cpp | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 CPP/recursion/pivotArray.cpp diff --git a/CPP/recursion/pivotArray.cpp b/CPP/recursion/pivotArray.cpp new file mode 100644 index 00000000..c9848c6d --- /dev/null +++ b/CPP/recursion/pivotArray.cpp @@ -0,0 +1,24 @@ +// program to print pivot index of a rotated sorted array +#include +using namespace std; + +int pivotIndex (int arr[], int lo, int hi) { + // base case + if (lo == hi) { + return lo; + } + int mid = lo + (hi - lo)/2; + // recursive relation + if (arr[mid] >= arr[0]) { // LINE-1 + return pivotIndex(arr, mid+1, hi); + } + else { // LINE-2 + return pivotIndex(arr, lo, mid); + } +} + +int main() { + int array[5] = {8,10,17,1,3}; + cout<<"Pivot index is: "< Date: Tue, 4 Oct 2022 20:04:50 +0530 Subject: [PATCH 146/448] Create Question15.java Added Pattern Questions in Java --- Java/Pattern-Questions/Question15.java | 31 ++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 Java/Pattern-Questions/Question15.java diff --git a/Java/Pattern-Questions/Question15.java b/Java/Pattern-Questions/Question15.java new file mode 100644 index 00000000..73aa0c43 --- /dev/null +++ b/Java/Pattern-Questions/Question15.java @@ -0,0 +1,31 @@ +import java.io.IOException; +import java.io.*; +public class Codechef3 { + public static void main(String[] args) throws IOException{ + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + int n = Integer.parseInt(br.readLine()); + for (int row = 0; row < n; row++) { + for (int spaces = n; spaces > row; spaces--) { + System.out.print(" "); + } + if(row%2!=0){ + for (int i = 0; i <= row; i++) { + if (i%2!=0 || i != 1) { + if(i == 0 || i == row){ + System.out.print("* "); + } + else{ + System.out.print(" "); + } + } + } + } + else{ + for (int i = 0; i <= row; i++) { + System.out.print("* "); + } + } + System.out.println(); + } + } + } From c34d4f73837f419a04fe3f61b76e62657c15dd78 Mon Sep 17 00:00:00 2001 From: Tamanna Sharma Date: Tue, 4 Oct 2022 20:11:24 +0530 Subject: [PATCH 147/448] added leetcode-solution folder in this folder i've added a binary search folder that consists of some awesome question, check that out and lemme know --- .../Binary-search/ArrangingCoins.java | 41 ++++++ .../Binary-search/CountNegGrid.java | 21 +++ .../Binary-search/FirstLastPos.java | 47 +++++++ .../Binary-search/FirstbadVersion.java | 43 ++++++ Leetcode-solutions/Binary-search/HIndex.java | 24 ++++ .../IntersectionOfTwoArrays.java | 52 ++++++++ .../Binary-search/KClosestElement.java | 35 +++++ .../Binary-search/KoKoEatingBanana.java | 42 ++++++ .../KthSmallestMultiplicationTable.java | 34 +++++ .../Binary-search/LongestIncrSubSeq.java | 43 ++++++ .../Binary-search/MaxSubArraySum.java | 27 ++++ .../MedianOfTwoSortedArrays.java | 37 ++++++ .../Binary-search/MinInRotatated2.java | 34 +++++ .../Binary-search/MinInRotatedArray.java | 22 +++ .../Binary-search/MinSizeSubArrSum.java | 41 ++++++ .../Binary-search/PeakElement.java | 22 +++ .../Binary-search/PeakIndex.java | 22 +++ .../Binary-search/RotatedBS.java | 35 +++++ .../Binary-search/RotatedBSDuplicates.java | 44 ++++++ .../Binary-search/SearchInsertPosition.java | 46 +++++++ .../Binary-search/ShipCapacity.java | 44 ++++++ .../Binary-search/SingleElement.java | 36 +++++ .../Binary-search/SmallestLetter.java | 46 +++++++ .../Binary-search/SplitArray.java | 43 ++++++ Leetcode-solutions/Binary-search/Sqrt.java | 41 ++++++ .../Binary-search/ValidPerfectSquare.java | 25 ++++ .../Binary-search/condition-2-mai-return | 125 ++++++++++++++++++ .../Binary-search/kthSmallestInMatrix.java | 44 ++++++ 28 files changed, 1116 insertions(+) create mode 100644 Leetcode-solutions/Binary-search/ArrangingCoins.java create mode 100644 Leetcode-solutions/Binary-search/CountNegGrid.java create mode 100644 Leetcode-solutions/Binary-search/FirstLastPos.java create mode 100644 Leetcode-solutions/Binary-search/FirstbadVersion.java create mode 100644 Leetcode-solutions/Binary-search/HIndex.java create mode 100644 Leetcode-solutions/Binary-search/IntersectionOfTwoArrays.java create mode 100644 Leetcode-solutions/Binary-search/KClosestElement.java create mode 100644 Leetcode-solutions/Binary-search/KoKoEatingBanana.java create mode 100644 Leetcode-solutions/Binary-search/KthSmallestMultiplicationTable.java create mode 100644 Leetcode-solutions/Binary-search/LongestIncrSubSeq.java create mode 100644 Leetcode-solutions/Binary-search/MaxSubArraySum.java create mode 100644 Leetcode-solutions/Binary-search/MedianOfTwoSortedArrays.java create mode 100644 Leetcode-solutions/Binary-search/MinInRotatated2.java create mode 100644 Leetcode-solutions/Binary-search/MinInRotatedArray.java create mode 100644 Leetcode-solutions/Binary-search/MinSizeSubArrSum.java create mode 100644 Leetcode-solutions/Binary-search/PeakElement.java create mode 100644 Leetcode-solutions/Binary-search/PeakIndex.java create mode 100644 Leetcode-solutions/Binary-search/RotatedBS.java create mode 100644 Leetcode-solutions/Binary-search/RotatedBSDuplicates.java create mode 100644 Leetcode-solutions/Binary-search/SearchInsertPosition.java create mode 100644 Leetcode-solutions/Binary-search/ShipCapacity.java create mode 100644 Leetcode-solutions/Binary-search/SingleElement.java create mode 100644 Leetcode-solutions/Binary-search/SmallestLetter.java create mode 100644 Leetcode-solutions/Binary-search/SplitArray.java create mode 100644 Leetcode-solutions/Binary-search/Sqrt.java create mode 100644 Leetcode-solutions/Binary-search/ValidPerfectSquare.java create mode 100644 Leetcode-solutions/Binary-search/condition-2-mai-return create mode 100644 Leetcode-solutions/Binary-search/kthSmallestInMatrix.java diff --git a/Leetcode-solutions/Binary-search/ArrangingCoins.java b/Leetcode-solutions/Binary-search/ArrangingCoins.java new file mode 100644 index 00000000..7a934578 --- /dev/null +++ b/Leetcode-solutions/Binary-search/ArrangingCoins.java @@ -0,0 +1,41 @@ +public class ArrangingCoins { + public static void main(String[] args) { + int n = 1; + System.out.println(arrangeCoins2(n)); + } + + static int arrangeCoins(int n) { + long s = 1; + long e = n; + + while(s <= e){ + long m = s + (e-s)/2; + long coinsNeeded = (m * (m+1)) /2; + + if(coinsNeeded <= n){ + s = m+1; + } else{ + e= m-1; + } + } + return (int)e; + } + + static int arrangeCoins2(int n){ + long s = 1; + long e = n; + + while(s < e){ + long m = s + (e-s)/2; + long coinsNeeded = (m * (m+1)) /2; + + if(coinsNeeded <= n){ + s = m+1; + } else{ + e = m; + } + } + return (s * (s+1)) /2 <= n ? (int)s : (int)s-1; + } + +} diff --git a/Leetcode-solutions/Binary-search/CountNegGrid.java b/Leetcode-solutions/Binary-search/CountNegGrid.java new file mode 100644 index 00000000..b691fd1d --- /dev/null +++ b/Leetcode-solutions/Binary-search/CountNegGrid.java @@ -0,0 +1,21 @@ +public class CountNegGrid { + public static void main(String[] args) { + + } + + static int countNegatives(int[][] grid) { + int s = 0; + int e = grid[0].length-1; + int count = 0; + + while(s < grid.length && e >= 0){ + if(grid[s][e] < 0){ + count += grid.length - s; + e--; + } else{ + s++; + } + } + return count; + } +} diff --git a/Leetcode-solutions/Binary-search/FirstLastPos.java b/Leetcode-solutions/Binary-search/FirstLastPos.java new file mode 100644 index 00000000..baa4418e --- /dev/null +++ b/Leetcode-solutions/Binary-search/FirstLastPos.java @@ -0,0 +1,47 @@ +import java.util.Arrays; + +public class FirstLastPos { + public static void main(String[] args) { + int[] nums = {5,7,7,8,8,10}; + int target = 8; + int[] ans = firstLastPosition(nums, target); + System.out.println( Arrays.toString(ans) ); + } + + static int[] firstLastPosition(int[] nums, int target){ + int[] ans = {-1, -1}; + + ans[0] = serach(nums, target, true); + if(ans[0] == -1){ + return ans; + } + ans[1] = serach(nums, target, false); + return ans; + } + + static int serach(int[] nums, int target, boolean findingFirst){ + int s = 0; + int e = nums.length-1; + int ans = -1; + + while(s <= e){ + int m = s + (e-s)/2; + + if(nums[m] == target){ + ans = m; + + if( findingFirst ){ + e = m-1; + } else{ + s = m+1; + } + } else if(nums[m] < target){ + s = m+1; + } else{ + e = m-1; + } + } + + return ans; + } +} diff --git a/Leetcode-solutions/Binary-search/FirstbadVersion.java b/Leetcode-solutions/Binary-search/FirstbadVersion.java new file mode 100644 index 00000000..ed154ee7 --- /dev/null +++ b/Leetcode-solutions/Binary-search/FirstbadVersion.java @@ -0,0 +1,43 @@ +public class FirstbadVersion { + public static void main(String[] args) { + int n = 1; + System.out.println( firstBadVersion2(n)); + } + + static int firstBadVersion(int n) { + int s = 1; + int e = n; + + while(s <= e){ + int m = s + (e-s)/2; + + if( isBadVersion(m) ){ + e = m-1; + } else{ + s = m+1; + } + } + + return s; + } + + static int firstBadVersion2(int n){ + int s = 1; + int e = n; + + while(s < e){ + int m = s + (e-s)/2; + + if(isBadVersion(m)){ + e = m; + } else{ + s = m+1; + } + } + return isBadVersion(s) ? s : s+1; + } + + static boolean isBadVersion(int n){ + return 1 == n; + } +} diff --git a/Leetcode-solutions/Binary-search/HIndex.java b/Leetcode-solutions/Binary-search/HIndex.java new file mode 100644 index 00000000..a87ae708 --- /dev/null +++ b/Leetcode-solutions/Binary-search/HIndex.java @@ -0,0 +1,24 @@ +public class HIndex { + public static void main(String[] args) { + int[] citations = {1,2,100}; + System.out.println(hIndex(citations)); + } + + static int hIndex(int[] citations) { + int s = 0; + int e = citations.length-1; + + while(s <= e){ + int m = s + (e-s)/2; + + if(citations[m] >= (citations.length - m) ){ + e = m-1; + } + else{ + s = m+1; + } + } + return citations.length - s; + } + +} diff --git a/Leetcode-solutions/Binary-search/IntersectionOfTwoArrays.java b/Leetcode-solutions/Binary-search/IntersectionOfTwoArrays.java new file mode 100644 index 00000000..b8dbc220 --- /dev/null +++ b/Leetcode-solutions/Binary-search/IntersectionOfTwoArrays.java @@ -0,0 +1,52 @@ +import java.util.ArrayList; +import java.util.Arrays; + +public class IntersectionOfTwoArrays { + public static void main(String[] args) { + + } + + static int[] intersection(int[] nums1, int[] nums2) { + if(nums1.length > nums2.length){ + return intersection(nums2, nums1); + } + ArrayList list = new ArrayList<>(); + Arrays.sort(nums1); + + for(int num : nums2){ + + if(bS(nums1, num)){ + if(!list.contains(num)){ + list.add(num); + } + } + } + + int[] ans = new int[list.size()]; + + for(int i = 0 ; i < list.size() ; i++){ + ans[i] = list.get(i); + } + return ans; + } + + static boolean bS(int[] arr, int target){ + int s = 0; + int e = arr.length-1; + + while(s <= e){ + int m = s + (e-s)/2; + + if(arr[m] == target){ + return true; + } + if(arr[m] < target){ + s = m+1; + } else{ + e = m-1; + } + } + return false; + } + +} diff --git a/Leetcode-solutions/Binary-search/KClosestElement.java b/Leetcode-solutions/Binary-search/KClosestElement.java new file mode 100644 index 00000000..a1cfb3da --- /dev/null +++ b/Leetcode-solutions/Binary-search/KClosestElement.java @@ -0,0 +1,35 @@ +import java.util.ArrayList; +import java.util.List; + +public class KClosestElement { + public static void main(String[] args) { + int[] arr = {1,1,2,2,2,2,2,3,3}; + System.out.println( findClosestElements(arr, 3, 3) ); + } + + static List findClosestElements(int[] arr, int k, int x) { + int s = 0; + int e = arr.length-k; + + while(s < e){ + int m = s + (e-s)/2; + + int indexJustAfterWindow = m+k; + while(indexJustAfterWindow <= e && arr[m] == arr[indexJustAfterWindow] ){ + indexJustAfterWindow++; + } + + if( Math.abs( arr[m] - x ) > Math.abs( x - arr[indexJustAfterWindow] ) ){ + s = m+1; + } else{ + e = m; + } + } + + List list = new ArrayList<>(); + for(int i = s; i < s +k ; i++){ + list.add( arr[i] ); + } + return list; + } +} diff --git a/Leetcode-solutions/Binary-search/KoKoEatingBanana.java b/Leetcode-solutions/Binary-search/KoKoEatingBanana.java new file mode 100644 index 00000000..69eb353d --- /dev/null +++ b/Leetcode-solutions/Binary-search/KoKoEatingBanana.java @@ -0,0 +1,42 @@ +public class KoKoEatingBanana { + public static void main(String[] args) { + int[] piles = {3,6,7,11}; + System.out.println(minEatingSpeed(piles, 8)); + } + + static int minEatingSpeed(int[] piles, int h) { + int s = 1; + int e = piles[0]; + for(int pile : piles){ + e = Math.max(e, pile); + } + + while(s < e){ + int m = s + (e-s)/2; + + if( canEatAllWithSpeed(piles, m, h) ){ + e = m; + } else{ + s = m+1; + } + } + return s; + } + + static boolean canEatAllWithSpeed(int[] piles, int allowedBananas, int h) { + int hoursNeeded = 0; + + for(int pile : piles){ + + // dekh agr mne allow kre h 4 banana in 1 hour or is pile main 10 h to 4 + 4 kha paegi or do bchange to 3 ghnte ab ek cheez dekh simple ye nh kr skti 10 /4 to vo seedha mtlb dedega ki 10 main kitne proper 4 ke piece bnenge baat smjh soch thoda thik h or fir ek check lga liyo ki agr modulo krke 0 nhi aaara to mtlb kya h iska ki abhi kuch bche h allowed se km mtlb 4 se km h to bss hour main 1 plus krde bss ab bss shant dimaag se soch aa jaega smjh or agr allowed to 4 h pr piles h 3 to 3 /4 0 aaega or aage bss ek plus ho jaega and that is right!! + hoursNeeded += pile/allowedBananas; + if(pile % allowedBananas != 0){ + hoursNeeded++; + } + } + + return hoursNeeded <= h; + } + + +} diff --git a/Leetcode-solutions/Binary-search/KthSmallestMultiplicationTable.java b/Leetcode-solutions/Binary-search/KthSmallestMultiplicationTable.java new file mode 100644 index 00000000..e6d850f6 --- /dev/null +++ b/Leetcode-solutions/Binary-search/KthSmallestMultiplicationTable.java @@ -0,0 +1,34 @@ +public class KthSmallestMultiplicationTable { + public static void main(String[] args) { + int m = 3; + int n = 3; + int k = 5; + System.out.println(findKthNumber(m, n, k)); + } + + static int findKthNumber(int m, int n, int k) { + int s = 1; + int e = m * n; + + while(s < e){ + int mid = s + (e-s)/2; + + if( isPotentialK(mid, m, n, k) ){ + e = mid; + } else{ + s = mid + 1; + } + } + return s; // or e as they both are pointing to the same element + } + + static boolean isPotentialK(int potential, int m, int n, int k) { + int count = 0; + for(int i = 1; i <= m ; i++){ + count += Math.min( (potential / i) , n ); //sun ye isliye kyunki ye hr row simply table h 1 se m tk ka, ab mujhe nikalna h hr row mai se 5 ya kisi num se kitne chhote to ye simploe nikl jaega, kse aise ki maan tujhe nikalna h ki 5 se chhote kitne num h 2 ke table mai to nikaal ki 5 2 ke table mai kahan aata h ya uska floor nikaal to ab 5 nhi aata to floor ya fr agr decial mai aaega na 5/2 = 2.5 to point to ht hi jaega int mai to 2 or haan yhi to h 2 ke table mai 5 se chhote 2 num h thike to ab ye potential/i waali baat to smjh aa gyi pr ye min kyu n se, isliye kyunki soch 1 ke table mai 5 se chhote ya baraabar kitne h 5/1 = 5 pr que mai given table to 3 tk jaari hna to mai ye thodi likh skti ki is row mai jisme 3 elements h usme 5 se chhote 5 elements h ab smjh gyi to kya hoga ki agr jada honge to fr wo min 3 ko lega or agr km honge to fr to whi h ans. huh!!! + } + return count >= k; + } + + +} diff --git a/Leetcode-solutions/Binary-search/LongestIncrSubSeq.java b/Leetcode-solutions/Binary-search/LongestIncrSubSeq.java new file mode 100644 index 00000000..9e1cf543 --- /dev/null +++ b/Leetcode-solutions/Binary-search/LongestIncrSubSeq.java @@ -0,0 +1,43 @@ +import java.util.ArrayList; + +public class LongestIncrSubSeq { + public static void main(String[] args) { + int[] nums = {1,1,1,1,1,1}; + System.out.println(lengthOfLIS(nums)); + } + + static int lengthOfLIS(int[] nums) { + ArrayList list = new ArrayList<>(); + list.add(nums[0]); + + for(int i = 1 ; i < nums.length ; i++){ + + if( list.get( list.size() -1 ) < nums[i] ){ + list.add(nums[i]); + } else{ + int index = ceil(list, nums[i]); + list.set(index, nums[i]); + } + + } + + return list.size(); + } + + static int ceil(ArrayList list, int target){ + int s = 0; + int e = list.size() -1; + + while(s <= e){ + int m = s + (e-s)/2; + + if(list.get(m) >= target){ + e = m-1; + } else{ + s = m+1; + } + } + return s; + } + +} diff --git a/Leetcode-solutions/Binary-search/MaxSubArraySum.java b/Leetcode-solutions/Binary-search/MaxSubArraySum.java new file mode 100644 index 00000000..e5f40d51 --- /dev/null +++ b/Leetcode-solutions/Binary-search/MaxSubArraySum.java @@ -0,0 +1,27 @@ +public class MaxSubArraySum { + public static void main(String[] args) { + int[] nums = {-2,1,-3,4,-1,2,1,-5,4}; + System.out.println(maxSubArray(nums)); + } + + static int maxSubArray(int[] nums) { + //kadane's algorithm + int max = nums[0]; + int curr = 0; + + for (int num : nums) { + + curr += num; + + if(max < curr){ + max = curr; + } + + if(curr < 0){ + curr = 0; + } + } + + return max; + } +} diff --git a/Leetcode-solutions/Binary-search/MedianOfTwoSortedArrays.java b/Leetcode-solutions/Binary-search/MedianOfTwoSortedArrays.java new file mode 100644 index 00000000..9e8b38dc --- /dev/null +++ b/Leetcode-solutions/Binary-search/MedianOfTwoSortedArrays.java @@ -0,0 +1,37 @@ +public class MedianOfTwoSortedArrays { + public static void main(String[] args) { + + } + + static double findMedianSortedArrays(int[] nums1, int[] nums2) { + if(nums2.length < nums1.length){ + return findMedianSortedArrays(nums2, nums1); + } + + int s = 0; + int e = nums1.length; + + while(s <= e){ + int cut1 = s + (e-s)/2; + int cut2 = (nums1.length + nums2.length) /2 - cut1; + + int l1 = cut1 <= 0 ? Integer.MIN_VALUE : nums1[cut1 - 1]; + int l2 = cut2 <= 0 ? Integer.MIN_VALUE : nums2[cut2 - 1]; + + int r1 = cut1 >= nums1.length ? Integer.MAX_VALUE : nums1[cut1]; + int r2 = cut2 >= nums2.length ? Integer.MAX_VALUE : nums2[cut2]; + + if( l1 > r2 ){ + e = cut1 - 1; + } else if( l2 > r1 ){ + s = cut1 + 1; + } else{ + return (nums1.length + nums2.length) % 2 == 0 ? + (float) ( Math.max(l1, l2) + Math.min(r1, r2) ) / 2 : + Math.min(r1, r2); + } + + } + return -1; + } +} diff --git a/Leetcode-solutions/Binary-search/MinInRotatated2.java b/Leetcode-solutions/Binary-search/MinInRotatated2.java new file mode 100644 index 00000000..60160c2c --- /dev/null +++ b/Leetcode-solutions/Binary-search/MinInRotatated2.java @@ -0,0 +1,34 @@ +public class MinInRotatated2 { + public static void main(String[] args) { + int[] nums = {2,2,0,1}; + System.out.println(findMin(nums)); + } + + static int findMin(int[] nums) { + int s = 0 ; + int e = nums.length-1; + + while (s < e) { + + while(s < e && nums[s] == nums[s+1]){ + s++; + } + while(s < e && nums[e] == nums[e-1]){ + e--; + } + + if(s == e){ + return nums[s]; + } + + int m = s + (e-s) /2; + if(nums[e] > nums[m]){ + e = m; + } else{ + s = m+1; + } + + } + return nums[s]; + } +} diff --git a/Leetcode-solutions/Binary-search/MinInRotatedArray.java b/Leetcode-solutions/Binary-search/MinInRotatedArray.java new file mode 100644 index 00000000..1ca78b9f --- /dev/null +++ b/Leetcode-solutions/Binary-search/MinInRotatedArray.java @@ -0,0 +1,22 @@ +public class MinInRotatedArray { + public static void main(String[] args) { + int[] nums = {3,4,5,1,2}; + System.out.println(findMin(nums)); + } + + static int findMin(int[] nums) { + int s = 0; + int e = nums.length-1; + + while(s < e){ + int m = s + (e-s)/2; + + if( nums[m] < nums[e]){ + e = m; + } else{ + s = m+1; + } + } + return nums[s]; + } +} diff --git a/Leetcode-solutions/Binary-search/MinSizeSubArrSum.java b/Leetcode-solutions/Binary-search/MinSizeSubArrSum.java new file mode 100644 index 00000000..17338bfb --- /dev/null +++ b/Leetcode-solutions/Binary-search/MinSizeSubArrSum.java @@ -0,0 +1,41 @@ +public class MinSizeSubArrSum { + public static void main(String[] args) { + int[] nums = {2,3,1,2,4,3}; + int target = 77; + System.out.println(minSubArrLength(target, nums)); + } + + static int minSubArrLength(int target, int[] nums){ + int s = 1; + int e = nums.length; + + while(s < e){ + int m = s + (e-s)/2; + + if( condition(nums, m, target) ){ + e = m; + } else{ + s = m+1; + } + } + + return condition(nums, s, target) ? s : 0; + } + + static boolean condition(int[] nums, int m, int target) { + for(int i = 0 ; i <= nums.length - m ; i++){ + + int sum = 0; + for(int j = i ; j-i < m ; j++){ + sum += nums[j]; + } + + if(sum >= target){ + return true; + } + } + return false; + } + + +} diff --git a/Leetcode-solutions/Binary-search/PeakElement.java b/Leetcode-solutions/Binary-search/PeakElement.java new file mode 100644 index 00000000..6710c31d --- /dev/null +++ b/Leetcode-solutions/Binary-search/PeakElement.java @@ -0,0 +1,22 @@ +public class PeakElement { + public static void main(String[] args) { + int[] nums = {1,2,3,1}; + System.out.println(findPeakElement(nums)); + } + + static int findPeakElement(int[] nums) { + int s = 0; + int e = nums.length-1; + + while(s < e){ + int m = s + (e-s)/2; + + if(nums[m] > nums[m+1]){ + e = m; + } else{ + s = m+1; + } + } + return s; + } +} diff --git a/Leetcode-solutions/Binary-search/PeakIndex.java b/Leetcode-solutions/Binary-search/PeakIndex.java new file mode 100644 index 00000000..6a97298b --- /dev/null +++ b/Leetcode-solutions/Binary-search/PeakIndex.java @@ -0,0 +1,22 @@ +public class PeakIndex { + public static void main(String[] args) { + int[] arr = {3,4,5,1}; + System.out.println(peakIndexInMountainArray(arr)); + } + + static int peakIndexInMountainArray(int[] arr) { + int s = 0; + int e = arr.length-1; + + while (s < e){ + int m = s + (e-s)/2; + + if(arr[m] > arr[m+1]){ + e = m; + } else{ + s = m+1; + } + } + return s; + } +} diff --git a/Leetcode-solutions/Binary-search/RotatedBS.java b/Leetcode-solutions/Binary-search/RotatedBS.java new file mode 100644 index 00000000..3a40bcb8 --- /dev/null +++ b/Leetcode-solutions/Binary-search/RotatedBS.java @@ -0,0 +1,35 @@ +public class RotatedBS { + public static void main(String[] args) { + int[] nums = {4,5,6,7,0,1,2}; + int target = 0; + System.out.println(search(nums, target)); + } + + static int search(int[] nums, int target) { + int s = 0; + int e = nums.length-1; + + while(s <= e){ + int m = s + (e-s)/2; + + if(nums[m] == target){ + return m; + } + + if(nums[m] >= nums[s]){ + if(target < nums[m] && target >= nums[s]){ + e = m-1; + } else{ + s = m+1; + } + } else{ + if(target > nums[m] && target <= nums[e]){ + s = m+1; + } else{ + e = m-1; + } + } + } + return -1; + } +} diff --git a/Leetcode-solutions/Binary-search/RotatedBSDuplicates.java b/Leetcode-solutions/Binary-search/RotatedBSDuplicates.java new file mode 100644 index 00000000..5d5bc9b5 --- /dev/null +++ b/Leetcode-solutions/Binary-search/RotatedBSDuplicates.java @@ -0,0 +1,44 @@ +public class RotatedBSDuplicates { + public static void main(String[] args) { + int[] nums = {4,5,6,7,0,1,2}; + int target = 0; + System.out.println(search(nums, target)); + } + + static boolean search(int[] nums, int target) { + int s = 0; + int e = nums.length-1; + + while(s <= e){ + + while(s < e && nums[s] == nums[s+1]){ + s++; + } + while (s < e && nums[e] == nums[e-1]){ + e--; + } + //after this the array will not have any duplicates + + int m = s + (e-s)/2; + + if(nums[m] == target){ + return true; + } + + if(nums[m] >= nums[s]){ + if(target < nums[m] && target >= nums[s]){ + e = m-1; + } else{ + s = m+1; + } + } else{ + if(target > nums[m] && target <= nums[e]){ + s = m+1; + } else{ + e = m-1; + } + } + } + return false; + } +} diff --git a/Leetcode-solutions/Binary-search/SearchInsertPosition.java b/Leetcode-solutions/Binary-search/SearchInsertPosition.java new file mode 100644 index 00000000..2375bff9 --- /dev/null +++ b/Leetcode-solutions/Binary-search/SearchInsertPosition.java @@ -0,0 +1,46 @@ +public class SearchInsertPosition { + public static void main(String[] args) { + int[] arr = {-9, -6, -1, 5, 11, 13, 16, 20}; + int target = 10; + System.out.println( binarySearch2(arr, target) ); + } + + static int binarySearch1(int[] arr, int target) { //or the name can be ceil the smallest number >= target (if target is present it will be the smallest num which is >= itself and if it's not present then it would be where ? the place where the smallest number after it is present this is nothing but ceiling + int s = 0; + int e = arr.length-1; + + while(s <= e){ + int m = s + (e-s)/2; + + if(arr[m] <= target) { + s = m+1; + } else{ + e = m -1; + } + } + return s; //s will be always point to the smallest x and e will always be point to the greatest x + //for ex in this case we are finding the SMALLEST number that is >= to the target + } + + static int binarySearch2(int[] arr, int target) { + int s = 0; + int e = arr.length-1; + + while (s < e){ + int m = s + (e-s)/2; + + if( isGreaterEqual(arr[m], target) ) { + e = m; + } else{ + s = m+1; + } + } + return isGreaterEqual(arr[s], target) ? s : s + 1; //in the end s and e will point to the same value that is our answer and here the condition will break we can return s or e anything but s jada lgta kyunki s se smallest + //ye check ye h ki maanlo ek aisa num jo arr ke max se bhi bda ho jse 98 to iska ceil kya higa ya fir agr ye hota to kahan hita jb ye run hoga tb last mai s or e ek ko hi point krega or vo higa last index kyunki humne search space hi ye bnaya hua h to isliye ye return krne se pehle check ki ye bhi h ya nhi, agr h to thik nhi to s +1 hi h ans + } + + static boolean isGreaterEqual(int num, int target) { + return num >= target; + } + +} diff --git a/Leetcode-solutions/Binary-search/ShipCapacity.java b/Leetcode-solutions/Binary-search/ShipCapacity.java new file mode 100644 index 00000000..01359a67 --- /dev/null +++ b/Leetcode-solutions/Binary-search/ShipCapacity.java @@ -0,0 +1,44 @@ +public class ShipCapacity { + public static void main(String[] args) { + int[] weights = {1,2,3,4,5,6,7,8,9,10}; + System.out.println( shipWithinDays(weights, 5)); + } + + static int shipWithinDays(int[] weights, int days) { + int s = weights[0]; + int e = 0; + + for(int weight: weights){ + s = Math.max(s, weight); + e += weight; + } + + while (s < e) { + + int m = s + (e-s)/2; + + if( canShipWithMinWeight(weights, m, days) ){ + e = m; + } else{ + s = m+1; + } + } + return s; + } + + static boolean canShipWithMinWeight(int[] weights, int allowedWeight, int days) { + int daysNeeded = 1; + int sum = 0; + + for(int weight : weights){ + if(sum + weight <= allowedWeight){ + sum += weight; + } else{ + sum = weight; + daysNeeded++; + } + } + return daysNeeded <= days; + } + +} diff --git a/Leetcode-solutions/Binary-search/SingleElement.java b/Leetcode-solutions/Binary-search/SingleElement.java new file mode 100644 index 00000000..1e02b3b2 --- /dev/null +++ b/Leetcode-solutions/Binary-search/SingleElement.java @@ -0,0 +1,36 @@ +public class SingleElement { + public static void main(String[] args) { + int[] nums = {3,3,7,7,10,11,11}; + System.out.println(singleNonDuplicate(nums)); + } + + static int singleNonDuplicate(int[] nums) { + int s = 0; + int e = nums.length-1; + + while(s < e){ + int m = s + (e-s)/2; + + if( (m < e) && (nums[m] == nums[m +1]) ){ + + if( (m -s) % 2 == 0 ){ + s = m +2; + } else{ + e = m-1; + } + + } else if( (s < m) && (nums[m] == nums[m-1]) ){ + + if( (e-m) % 2 == 0 ){ + e = m-2; + } else{ + s = m+1; + } + + } else{ + return nums[m]; + } + } + return nums[s]; //or e + } +} diff --git a/Leetcode-solutions/Binary-search/SmallestLetter.java b/Leetcode-solutions/Binary-search/SmallestLetter.java new file mode 100644 index 00000000..4f5cc2a6 --- /dev/null +++ b/Leetcode-solutions/Binary-search/SmallestLetter.java @@ -0,0 +1,46 @@ +public class SmallestLetter { + public static void main(String[] args) { + char[] letters = {'c', 'f', 'j'}; + char target = 'c'; + System.out.println(nextGreatestLetter2(letters, target)); + } + + static char nextGreatestLetter(char[] letters, char target) { + int s = 0; + int e = letters.length-1; + + while(s <= e){ + int m = s + (e-s)/2; + + if(target < letters[m]){ + e = m-1; + } else { + s = m+1; + } + } + return letters[ s % letters.length ]; //or put a condition above like if target > letters[letters.length-1] then return 0 and here just return s + } + + static char nextGreatestLetter2(char[] letters, char target){ + if(target >= letters[letters.length-1]){ + return letters[0]; + } + + int s = 0; + int e = letters.length-1; + + while(s < e){ + int m = s + (e-s)/2; + + if(target < letters[m]){ + e = m-1; + } else{ + s = m+1; + } + } + return letters[s] > target ? letters[s] : letters[s+1]; + } + + + +} diff --git a/Leetcode-solutions/Binary-search/SplitArray.java b/Leetcode-solutions/Binary-search/SplitArray.java new file mode 100644 index 00000000..8e3fe742 --- /dev/null +++ b/Leetcode-solutions/Binary-search/SplitArray.java @@ -0,0 +1,43 @@ +public class SplitArray { + public static void main(String[] args) { + int[] nums = {7,2,5,10,8}; + int m = 2; + System.out.println(splitArray(nums, m)); + } + + static int splitArray(int[] nums, int m) { + int s = nums[0]; + int e = 0; + + for(int num : nums){ + s = num > s ? num : s; + e += num; + } + + while(s < e){ + int mid = s + (e-s)/2; + + if( isPotentialLargestSum(mid, nums, m) ){ + e = mid; + } else{ + s = mid + 1; + } + } + return s; //e is also ok as they both are pointing to the same element ie ans + } + + static boolean isPotentialLargestSum(int estimatedLargest, int[] nums, int piecesAsked) { + int pieces = 1; + int sum = 0; + + for(int num : nums){ + if(sum + num > estimatedLargest){ + sum = 0; + pieces++; + } + sum += num; + } + + return pieces <= piecesAsked; + } +} diff --git a/Leetcode-solutions/Binary-search/Sqrt.java b/Leetcode-solutions/Binary-search/Sqrt.java new file mode 100644 index 00000000..47f60607 --- /dev/null +++ b/Leetcode-solutions/Binary-search/Sqrt.java @@ -0,0 +1,41 @@ +public class Sqrt { + public static void main(String[] args) { + int n = 8; + System.out.println(sqrt2(n)); + } + + static int sqrt(int n){ + long s = 1; + long e = n; + + while(s <= e){ + long m = s + (e-s)/2; + + if(m * m <= n){ + s = m +1; + } else{ + e = m -1; + } + } + return (int)e; //e will always point to the greatest value satisfying the condition in this s <= e wala case doosre tarike se abhi dekhte h + } + + static int sqrt2(int n){ + long s = 1; + long e = n; + + while(s < e){ + long m = s + (e-s)/2; + + if(m * m <= n){ + s = m+1; + } else{ + e = m; + } + } + return s*s <= n ? (int)s: (int)s-1; + //idhr s-1 hoti h vo max value jo staisfy kregi condition ko lekin maano 1 ka sqrt to s or e dono hi 1 ko point krenge to is case mai loop run hi nhi hoga to kya krna h ki s-1 se pehle s ko dekhna h or agr ye satisfy krta h to yu hi bta s bda ya s-1 ? s hi na to bss use ho return nhi to simple s-1. + } + + +} diff --git a/Leetcode-solutions/Binary-search/ValidPerfectSquare.java b/Leetcode-solutions/Binary-search/ValidPerfectSquare.java new file mode 100644 index 00000000..1ca765f2 --- /dev/null +++ b/Leetcode-solutions/Binary-search/ValidPerfectSquare.java @@ -0,0 +1,25 @@ +public class ValidPerfectSquare { + public static void main(String[] args) { + int num = 1; + System.out.println(isPerfectSquare(num)); + } + + static boolean isPerfectSquare(int num) { + long s = 1; + long e = (num/2) +1; + + while(s <= e){ + long m = s + (e-s)/2; + + if(m*m == num){ + return true; + } + if(m *m < num){ + s = m + 1; + } else{ + e = m-1; + } + } + return false; + } +} diff --git a/Leetcode-solutions/Binary-search/condition-2-mai-return b/Leetcode-solutions/Binary-search/condition-2-mai-return new file mode 100644 index 00000000..910b6986 --- /dev/null +++ b/Leetcode-solutions/Binary-search/condition-2-mai-return @@ -0,0 +1,125 @@ + 1. while(s < e).. (isme s=m+1 hi hoga e = m hi hoga) wale mai condition met krne ka mtlb h ki ok this can be my ans but ho skta h aage + isse bhi bde h or agr aage condition met kr gyi to obviously wo max hoga to condition met krne pr + s=m+1 ab agr tum socho ki kyu bhai m+1 kyu m kyu nhi kyunki ye ho skta hna ans, pr dekho BS mai end + mai do elements bch jate h or s hi m hota h or agr whi ans bhi hua to condition met krne pr agr humne + s = m kiya to wo usi ko assign hota rhega or it will result in infinite loop so s = m+1 krna h + + ab jb s= m+1 krre h to jb last condition jahan bhi met kri hogi vo konsa index hoga s-1 firse pdho + smjh aa jaega to isliye max humesha s-1 pr hoga + + pr ek cheez h jse maano neeche btaya hua h sqrt mai agr n 1 hua to, use pdhlena smjh aa jaega pr + bta du to return krna h is tarike se ki + + agr s satisfy krra h to s nhi to s-1 or agr s krra hoga to common sense se btao s bda ki s-1 ? + s hi na or hume krna kya h max return krna h to isliye s return krdo nhi to s-1; + + while(s < e){ + m = s + (e-s)/2; + + if( condition(m) ){ + s = m +1; + } else{ + e = m; + } + } + return condition(s) ? s : s-1; + + or min chahiye to + + while(s < e){ + m = s + (e-s)/2; + + if( condition(m) ){ + e = m; + } else{ + s = m+1; + } + } + return condition(s) ? s : s+1; + //ye cheez agge smjhayi h dursi dikkat krke or search insert position mai bhi h whan dekhlo + + + 2. while(s <= e).. (isme humesha s = m+1 or e = m-1 hi hoga) wale case mai kya hoga pehle mai kya tha + ki last mai s or e ek pr hi point krenge pr isme aisa nhi h ye apna traditional wala h isme simple poora + ka poora array traverse krenge or end mai simple hoga ki s point krega smallest pe or e krega biggest pe + kyu kyunki isme condition met krne pe max chaiye to hum kya krre h whi upr wali cheez or isme to sochne ka + kuch h nhi hume simple s = m+1 or e = m-1 krna h to end mai usme to kya hota tha do elemnt bchte the or jse + hi s or e ek pr point krte the hum break kr dete the pr isme last mai ek bchega or hum use bhi compare krenge + or fir agr whan pr met kri or hum max dhoond re h to kya krenge s = m+1 or yhi pr kya hoga ki meri baat + dhyaan se suno end mai isme ek element bchega or usko bhi compare kiya jaega abhi mai max ka bta rhi hu + agr condition met kri to kya h iska mtlb ki ye h humara ans or kya hoga ki s = m+1 ho jaega kyunki hum + or dekhne ki koshish krenge fir condition break ho jaegi kyunki s bda ho jaega e se or dhyaan se dekho + e kahan point krra h max element that is satisfying our condition or agr ye ans nhi tha to kon hoga + khud socho kya hua hoga do elemnts bche hinge pehle wala hi m bna hoga ab wo tha to humne kya kiya s=m+1 + ki dekhte h agge ho to or agr ab hum wahan h or wo nhi h to kya hoga max dhond re h or condition met + nhi kri to simple e = m-1 or is time m s or e k pr hi h ok, to ab kya hoga ki e = m-1 kyunki ye met + nhi krra last wala krra tha to jb e =m-1 hoga to wo whin pohoch jaega jo ans tha or loop bhi break ho + jaega kyunki s bda ho jaega or try to analyze e hi point krega max ko or s krega min ko isse yaad krlo + s se smallest or baaki bcha biggest to wo e hi hoga bss bss + + while(s <= e ){ + m = s + (e-s)/2; + + if( condition() ){ + s = m+1; + } else{ + e = m-1; + } + } + return e; simple! + + or min ya smallest x nikalna h is traditional method se to bss + + while(s <= e){ + m = s + (e-s)/2; + + if( condition() ){ + e = m-1; //ok this is can be our ans but we're finding smallest one or isse bhi chhote khan + peeche na or peeche kse jaenge e = m-1 + } else{ + s= m+1; + } + } + return s; simple! + + + +dekho jb aisa hna ki yhi find krna or agr ye nhi h to -1 return krna h to bss simple wala jo + h apna binary search vo hi lga do + +or achha binary search ye pta hna sorted arrays ke alava range main itna mst kaam krta h ya fir + kuch aisa hota hna ki jse ship capacity jsa question wahan bhi range nikalo or bs + +ab jo humara purana wala tarika hna wo bhi kr kisi mai lg jata h or end main kya hota h ki s point krega + smallest x pe or e humesha point krega greatest x pr + +pehle wale case main jo purana wala hi h usme koi dikkat nhi aati but second wale mai h thodi si dekhte h + vo + +dusre mai simple hota h ki in the end both s and e will point to the same element and that will be the +smallest x and the greatest x will be s-1 why beacuse when given condition met in the ques in which we're +finding max we just do s= m+1. + +dikkat aati h kyunki hum s < e tk chec krte h to jb hume max chahiye hota h to humara ans humesha +kahan hota h s-1 kyu kyunki condition met hone pr hum hi to krte h s= m+1 to to max num that is +satisfying our condition will be what s-1 but lets consider a ex if in sqrt que what we're doing +finding the max num satisfying our condition pr maano n ho 1 to s to hota hi 1 h or e bhi 1 ho +jaega to is 1 < 1 no so the loop will not run or hum s-1 kse return kr skte h fir to isliye pehle check +kro s se ki kya s satisfy krra h agr krra h to vo to bda hi h s-1 se or mujhe chahiye kya max to just +return it pr agr wo satisf nhi krra to return s-1; + +or dursi dikkat aati h jb hum min find krte h tb kya hota h ki agr satisfy krta to hum e = m krte +h nhi to s = m+1 ab isme koi dikkat wse to nhi aati pr maano jse insert position ya fir ceiling of a +number thik h to isme kya krna hota h smallest num >= target pr maano arr ka max elememt hi target se +chhota ho to? end mai s or e dono last element pr hi point krenge kyu kyunki is ques mai hum kya krre +h smallest nikal re h to condition met pr kya krte h e=m +or nhi hoti to krte h s= m+1 to bss jb koi element h hi nhi bda ya barabar target ke to sirf s = m+1 hi +hota rhega or end mai wo dono last elemnt pe aa jaenge wse to mostly ho jata h pr idhr ye bhi nhi h ans +to isliye return krne se pehle dekhlo ki ye jo s bhi h wo bhi h ki nhi agr wo nhi h to ya to +ques mai given hota h ki agr nhi h to -1 return kro, nhi to s +1 kyunki is case mai agr target max element se +bda h or ye sorted h to max kahan hoga last index pe or target usse bhi bda h to vo kahan hoga usse aage +or s se aage kya h s+1 + + + +baaki bss practice kro everything is just a pattern! \ No newline at end of file diff --git a/Leetcode-solutions/Binary-search/kthSmallestInMatrix.java b/Leetcode-solutions/Binary-search/kthSmallestInMatrix.java new file mode 100644 index 00000000..8b6e3cf2 --- /dev/null +++ b/Leetcode-solutions/Binary-search/kthSmallestInMatrix.java @@ -0,0 +1,44 @@ +public class kthSmallestInMatrix { + public static void main(String[] args) { + int[][] matrix = { + {1,5,9}, + {10,11,13}, + {12,13,15}, + }; + int k = 8; + System.out.println(kthSmallest(matrix, k)); + } + + static int kthSmallest(int[][] matrix, int k) { + int s = matrix[0][0]; + int e = matrix[ matrix.length-1 ][ matrix[0].length-1 ]; //wow + + while(s < e){ + int m = s + (e-s)/2; + + if( isPotentialK(matrix, m, k) ){ + e = m; + } else { + s = m+1; + } + } + return s; //or e as they are pointing to the same elm + } + + static boolean isPotentialK(int[][] matrix, int m, int k) { + int count = 0; + + int r = 0; + int c = matrix[0].length-1; + + while(r < matrix.length && c >= 0){ + if(matrix[r][c] <= m){ + count += c+1; + r++; + } else{ + c--; + } + } + return count >= k; + } +} From 41276ce47998112707745ed3fae28c1fdcaa675d Mon Sep 17 00:00:00 2001 From: nikita Date: Tue, 4 Oct 2022 21:17:29 +0530 Subject: [PATCH 148/448] Added Leetcode-42 --- .../Leetcode-42-Trapping-Rain-Water.cpp | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 CPP/Problems/Leetcode-42-Trapping-Rain-Water.cpp diff --git a/CPP/Problems/Leetcode-42-Trapping-Rain-Water.cpp b/CPP/Problems/Leetcode-42-Trapping-Rain-Water.cpp new file mode 100644 index 00000000..c923c88b --- /dev/null +++ b/CPP/Problems/Leetcode-42-Trapping-Rain-Water.cpp @@ -0,0 +1,30 @@ +class Solution { +public: + int trap(vector& height) { + int n=height.size(); + vectorml(n,-1),mr(n,-1); + for(int i=n-2;i>=0;i--) + { + int x=max(mr[i+1],height[i+1]); + if(x>height[i]) + mr[i]=x; + } + for(int i=1;iheight[i]) + ml[i]=x; + } + + int ans=0; + for(int i=0;i Date: Tue, 4 Oct 2022 21:31:56 +0530 Subject: [PATCH 149/448] Create Pick max sum from both side.cpp --- .../Pick max sum from both side.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 Sliding Window/Pick max sum from both side.cpp diff --git a/Sliding Window/Pick max sum from both side.cpp b/Sliding Window/Pick max sum from both side.cpp new file mode 100644 index 00000000..6a712695 --- /dev/null +++ b/Sliding Window/Pick max sum from both side.cpp @@ -0,0 +1,19 @@ +int Solution::solve(vector &A, int B) { + +int n=A.size(); +int maxsum=0; +int j=n-1; +for(int i=n-B;i Date: Tue, 4 Oct 2022 21:41:33 +0530 Subject: [PATCH 150/448] Add files via upload --- .../Longest Increasing Subsequences.cpp | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 Dynamic Programming/Longest Increasing Subsequences.cpp diff --git a/Dynamic Programming/Longest Increasing Subsequences.cpp b/Dynamic Programming/Longest Increasing Subsequences.cpp new file mode 100644 index 00000000..6ae23346 --- /dev/null +++ b/Dynamic Programming/Longest Increasing Subsequences.cpp @@ -0,0 +1,53 @@ +class Solution { +public: + int solvetab(vector &nums) + { + vector> dp(nums.size()+3,vector(nums.size()+3,0)); + for(int curr= nums.size()-1;curr>=0;curr--) + { + for(int prev=curr-1;prev>=-1;prev--) + { + + int inc=0; + //include + if(prev==-1||nums[curr]>nums[prev]) + { + inc= 1+dp[curr+1][curr+1]; + } + int excl=dp[curr+1][prev+1]; + dp[curr][prev+1]=max(inc,excl); + + } + } + return dp[0][0]; + } + int solve(vector &nums,int i,int prev,vector> &dp) + { + //base condition + if(i>=nums.size()) + { + return 0; + } + if(dp[i][prev+1]!=-1) + { + return dp[i][prev+1]; + } + //exclude + int excl=solve(nums,i+1,prev,dp); + int inc=0; + //include + if(prev==-1||nums[i]>nums[prev]) + { + inc= 1+solve(nums,i+1,i,dp); + } + + return dp[i][prev+1]=max(inc,excl); + + } + int lengthOfLIS(vector& nums) { + // vector> dp(nums.size()+3,vector(nums.size()+3,-1)); + // return solve(nums,0,-1,dp); + return solvetab(nums); + + } +}; \ No newline at end of file From 5be8010ba9235ce4b16d8a461758ab5f24a65691 Mon Sep 17 00:00:00 2001 From: Dipendra Raghav <90553063+Dipendra-Raghav@users.noreply.github.com> Date: Tue, 4 Oct 2022 21:44:07 +0530 Subject: [PATCH 151/448] Russain Doll --- Dynamic Programming/Russian Doll.cpp | 53 ++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 Dynamic Programming/Russian Doll.cpp diff --git a/Dynamic Programming/Russian Doll.cpp b/Dynamic Programming/Russian Doll.cpp new file mode 100644 index 00000000..6ae23346 --- /dev/null +++ b/Dynamic Programming/Russian Doll.cpp @@ -0,0 +1,53 @@ +class Solution { +public: + int solvetab(vector &nums) + { + vector> dp(nums.size()+3,vector(nums.size()+3,0)); + for(int curr= nums.size()-1;curr>=0;curr--) + { + for(int prev=curr-1;prev>=-1;prev--) + { + + int inc=0; + //include + if(prev==-1||nums[curr]>nums[prev]) + { + inc= 1+dp[curr+1][curr+1]; + } + int excl=dp[curr+1][prev+1]; + dp[curr][prev+1]=max(inc,excl); + + } + } + return dp[0][0]; + } + int solve(vector &nums,int i,int prev,vector> &dp) + { + //base condition + if(i>=nums.size()) + { + return 0; + } + if(dp[i][prev+1]!=-1) + { + return dp[i][prev+1]; + } + //exclude + int excl=solve(nums,i+1,prev,dp); + int inc=0; + //include + if(prev==-1||nums[i]>nums[prev]) + { + inc= 1+solve(nums,i+1,i,dp); + } + + return dp[i][prev+1]=max(inc,excl); + + } + int lengthOfLIS(vector& nums) { + // vector> dp(nums.size()+3,vector(nums.size()+3,-1)); + // return solve(nums,0,-1,dp); + return solvetab(nums); + + } +}; \ No newline at end of file From 44e44af159770115d822bd160c8e3bb3399c66cf Mon Sep 17 00:00:00 2001 From: Gantavya Malviya <39916680+gantavyamalviya@users.noreply.github.com> Date: Tue, 4 Oct 2022 21:52:07 +0530 Subject: [PATCH 152/448] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ea8443ae..2f41a3e5 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ Steps to contribute in this repository - +
- + Gantavya
Gantavya Malviya From 95af46fd03ae47390bc04f5181a719a9bd0a7e8b Mon Sep 17 00:00:00 2001 From: Usama Jamil Date: Tue, 4 Oct 2022 21:28:28 +0500 Subject: [PATCH 153/448] Create Implementing Red Black Tree --- CPP/sorting/Implementing Red Black Tree | 426 ++++++++++++++++++++++++ 1 file changed, 426 insertions(+) create mode 100644 CPP/sorting/Implementing Red Black Tree diff --git a/CPP/sorting/Implementing Red Black Tree b/CPP/sorting/Implementing Red Black Tree new file mode 100644 index 00000000..abdd8e2a --- /dev/null +++ b/CPP/sorting/Implementing Red Black Tree @@ -0,0 +1,426 @@ +// Implementing Red-Black Tree in C++ + +#include +using namespace std; + +struct Node { + int data; + Node *parent; + Node *left; + Node *right; + int color; +}; + +typedef Node *NodePtr; + +class RedBlackTree { + private: + NodePtr root; + NodePtr TNULL; + + void initializeNULLNode(NodePtr node, NodePtr parent) { + node->data = 0; + node->parent = parent; + node->left = nullptr; + node->right = nullptr; + node->color = 0; + } + + // Preorder + void preOrderHelper(NodePtr node) { + if (node != TNULL) { + cout << node->data << " "; + preOrderHelper(node->left); + preOrderHelper(node->right); + } + } + + // Inorder + void inOrderHelper(NodePtr node) { + if (node != TNULL) { + inOrderHelper(node->left); + cout << node->data << " "; + inOrderHelper(node->right); + } + } + + // Post order + void postOrderHelper(NodePtr node) { + if (node != TNULL) { + postOrderHelper(node->left); + postOrderHelper(node->right); + cout << node->data << " "; + } + } + + NodePtr searchTreeHelper(NodePtr node, int key) { + if (node == TNULL || key == node->data) { + return node; + } + + if (key < node->data) { + return searchTreeHelper(node->left, key); + } + return searchTreeHelper(node->right, key); + } + + // For balancing the tree after deletion + void deleteFix(NodePtr x) { + NodePtr s; + while (x != root && x->color == 0) { + if (x == x->parent->left) { + s = x->parent->right; + if (s->color == 1) { + s->color = 0; + x->parent->color = 1; + leftRotate(x->parent); + s = x->parent->right; + } + + if (s->left->color == 0 && s->right->color == 0) { + s->color = 1; + x = x->parent; + } else { + if (s->right->color == 0) { + s->left->color = 0; + s->color = 1; + rightRotate(s); + s = x->parent->right; + } + + s->color = x->parent->color; + x->parent->color = 0; + s->right->color = 0; + leftRotate(x->parent); + x = root; + } + } else { + s = x->parent->left; + if (s->color == 1) { + s->color = 0; + x->parent->color = 1; + rightRotate(x->parent); + s = x->parent->left; + } + + if (s->right->color == 0 && s->right->color == 0) { + s->color = 1; + x = x->parent; + } else { + if (s->left->color == 0) { + s->right->color = 0; + s->color = 1; + leftRotate(s); + s = x->parent->left; + } + + s->color = x->parent->color; + x->parent->color = 0; + s->left->color = 0; + rightRotate(x->parent); + x = root; + } + } + } + x->color = 0; + } + + void rbTransplant(NodePtr u, NodePtr v) { + if (u->parent == nullptr) { + root = v; + } else if (u == u->parent->left) { + u->parent->left = v; + } else { + u->parent->right = v; + } + v->parent = u->parent; + } + + void deleteNodeHelper(NodePtr node, int key) { + NodePtr z = TNULL; + NodePtr x, y; + while (node != TNULL) { + if (node->data == key) { + z = node; + } + + if (node->data <= key) { + node = node->right; + } else { + node = node->left; + } + } + + if (z == TNULL) { + cout << "Key not found in the tree" << endl; + return; + } + + y = z; + int y_original_color = y->color; + if (z->left == TNULL) { + x = z->right; + rbTransplant(z, z->right); + } else if (z->right == TNULL) { + x = z->left; + rbTransplant(z, z->left); + } else { + y = minimum(z->right); + y_original_color = y->color; + x = y->right; + if (y->parent == z) { + x->parent = y; + } else { + rbTransplant(y, y->right); + y->right = z->right; + y->right->parent = y; + } + + rbTransplant(z, y); + y->left = z->left; + y->left->parent = y; + y->color = z->color; + } + delete z; + if (y_original_color == 0) { + deleteFix(x); + } + } + + // For balancing the tree after insertion + void insertFix(NodePtr k) { + NodePtr u; + while (k->parent->color == 1) { + if (k->parent == k->parent->parent->right) { + u = k->parent->parent->left; + if (u->color == 1) { + u->color = 0; + k->parent->color = 0; + k->parent->parent->color = 1; + k = k->parent->parent; + } else { + if (k == k->parent->left) { + k = k->parent; + rightRotate(k); + } + k->parent->color = 0; + k->parent->parent->color = 1; + leftRotate(k->parent->parent); + } + } else { + u = k->parent->parent->right; + + if (u->color == 1) { + u->color = 0; + k->parent->color = 0; + k->parent->parent->color = 1; + k = k->parent->parent; + } else { + if (k == k->parent->right) { + k = k->parent; + leftRotate(k); + } + k->parent->color = 0; + k->parent->parent->color = 1; + rightRotate(k->parent->parent); + } + } + if (k == root) { + break; + } + } + root->color = 0; + } + + void printHelper(NodePtr root, string indent, bool last) { + if (root != TNULL) { + cout << indent; + if (last) { + cout << "R----"; + indent += " "; + } else { + cout << "L----"; + indent += "| "; + } + + string sColor = root->color ? "RED" : "BLACK"; + cout << root->data << "(" << sColor << ")" << endl; + printHelper(root->left, indent, false); + printHelper(root->right, indent, true); + } + } + + public: + RedBlackTree() { + TNULL = new Node; + TNULL->color = 0; + TNULL->left = nullptr; + TNULL->right = nullptr; + root = TNULL; + } + + void preorder() { + preOrderHelper(this->root); + } + + void inorder() { + inOrderHelper(this->root); + } + + void postorder() { + postOrderHelper(this->root); + } + + NodePtr searchTree(int k) { + return searchTreeHelper(this->root, k); + } + + NodePtr minimum(NodePtr node) { + while (node->left != TNULL) { + node = node->left; + } + return node; + } + + NodePtr maximum(NodePtr node) { + while (node->right != TNULL) { + node = node->right; + } + return node; + } + + NodePtr successor(NodePtr x) { + if (x->right != TNULL) { + return minimum(x->right); + } + + NodePtr y = x->parent; + while (y != TNULL && x == y->right) { + x = y; + y = y->parent; + } + return y; + } + + NodePtr predecessor(NodePtr x) { + if (x->left != TNULL) { + return maximum(x->left); + } + + NodePtr y = x->parent; + while (y != TNULL && x == y->left) { + x = y; + y = y->parent; + } + + return y; + } + + void leftRotate(NodePtr x) { + NodePtr y = x->right; + x->right = y->left; + if (y->left != TNULL) { + y->left->parent = x; + } + y->parent = x->parent; + if (x->parent == nullptr) { + this->root = y; + } else if (x == x->parent->left) { + x->parent->left = y; + } else { + x->parent->right = y; + } + y->left = x; + x->parent = y; + } + + void rightRotate(NodePtr x) { + NodePtr y = x->left; + x->left = y->right; + if (y->right != TNULL) { + y->right->parent = x; + } + y->parent = x->parent; + if (x->parent == nullptr) { + this->root = y; + } else if (x == x->parent->right) { + x->parent->right = y; + } else { + x->parent->left = y; + } + y->right = x; + x->parent = y; + } + + // Inserting a node + void insert(int key) { + NodePtr node = new Node; + node->parent = nullptr; + node->data = key; + node->left = TNULL; + node->right = TNULL; + node->color = 1; + + NodePtr y = nullptr; + NodePtr x = this->root; + + while (x != TNULL) { + y = x; + if (node->data < x->data) { + x = x->left; + } else { + x = x->right; + } + } + + node->parent = y; + if (y == nullptr) { + root = node; + } else if (node->data < y->data) { + y->left = node; + } else { + y->right = node; + } + + if (node->parent == nullptr) { + node->color = 0; + return; + } + + if (node->parent->parent == nullptr) { + return; + } + + insertFix(node); + } + + NodePtr getRoot() { + return this->root; + } + + void deleteNode(int data) { + deleteNodeHelper(this->root, data); + } + + void printTree() { + if (root) { + printHelper(this->root, "", true); + } + } +}; + +int main() { + RedBlackTree bst; + bst.insert(55); + bst.insert(40); + bst.insert(65); + bst.insert(60); + bst.insert(75); + bst.insert(57); + + bst.printTree(); + cout << endl + << "After deleting" << endl; + bst.deleteNode(40); + bst.printTree(); +} From f9dff1cfe1488e1b063b5a61011c7ba81f83017b Mon Sep 17 00:00:00 2001 From: Abhimanyu Chauhan Date: Tue, 4 Oct 2022 22:08:39 +0530 Subject: [PATCH 154/448] Print Various subset with given target value. --- CPP/recursion/Subset with given Target | 40 ++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 CPP/recursion/Subset with given Target diff --git a/CPP/recursion/Subset with given Target b/CPP/recursion/Subset with given Target new file mode 100644 index 00000000..bde6d257 --- /dev/null +++ b/CPP/recursion/Subset with given Target @@ -0,0 +1,40 @@ +#include +#include +using namespace std; + +void solve(int i , int arr[],int sum,int target ,vectorans,int n) +{ + if(i>=n) + { + if(sum==target) + { + for(auto it : ans) + { + cout<ans; + +solve(0,arr,0,target ,ans,n); +} From fd2be350abfa4a6932a46d6116f4021f88bc3b74 Mon Sep 17 00:00:00 2001 From: siddharth jain <47204985+siddharth3108@users.noreply.github.com> Date: Tue, 4 Oct 2022 22:20:27 +0530 Subject: [PATCH 155/448] Create Recursivebubblesort.java --- .../Recursivebubblesort.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 Java/SortingTechniques/Recursivebubblesort.java diff --git a/Java/SortingTechniques/Recursivebubblesort.java b/Java/SortingTechniques/Recursivebubblesort.java new file mode 100644 index 00000000..99a03f6c --- /dev/null +++ b/Java/SortingTechniques/Recursivebubblesort.java @@ -0,0 +1,20 @@ +import java.util.Arrays; +public class Demo{ + static void bubble_sort(int my_arr[], int len_arr){ + if (len_arr == 1) + return; + for (int i=0; i my_arr[i+1]){ + int temp = my_arr[i]; + my_arr[i] = my_arr[i+1]; + my_arr[i+1] = temp; + } + bubble_sort(my_arr, len_arr-1); + } + public static void main(String[] args){ + int my_arr[] = {45, 67, 89, 31, 63, 0, 21, 12}; + bubble_sort(my_arr, my_arr.length); + System.out.println("The array after implementing bubble sort is "); + System.out.println(Arrays.toString(my_arr)); + } +} From 61d930a9670f1e4945993bdd37f785e08a8851c9 Mon Sep 17 00:00:00 2001 From: Ayush Date: Tue, 4 Oct 2022 22:23:26 +0530 Subject: [PATCH 156/448] Minimum Time Taken To Make the Rope Colorful. --- Java/MinimumTimeToColorRope.java | 40 ++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 Java/MinimumTimeToColorRope.java diff --git a/Java/MinimumTimeToColorRope.java b/Java/MinimumTimeToColorRope.java new file mode 100644 index 00000000..6bd7ffb0 --- /dev/null +++ b/Java/MinimumTimeToColorRope.java @@ -0,0 +1,40 @@ +/* + * + * Minimum Time to make the Rope Colorful. + * Leetcode Question - 1578. + * + * In this code I have used the Greedy Approach To solve this question. + */ + + +public class MinimumTimeToColorRope { + public static void main(String[] args) { + int time[] = {1,2,3,4,5}; //Time in Seconds + String colors = "abaac"; //Colors Sequence + System.out.println(minCost(colors, time)); //Total Time Taken to make the rope colorfull + } + public static int minCost(String colors, int[] neededTime) { + int sec = 0; + char c = ' '; + int cp = 0; + for(int i=0;i Date: Tue, 4 Oct 2022 22:23:31 +0530 Subject: [PATCH 157/448] zig Zag conversion.py --- ZigZag Conversion | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 ZigZag Conversion diff --git a/ZigZag Conversion b/ZigZag Conversion new file mode 100644 index 00000000..5a222052 --- /dev/null +++ b/ZigZag Conversion @@ -0,0 +1,13 @@ +class Solution: + def convert(self, s: str, numRows: int) -> str: + if numRows==1:return s + + res="" + for r in range(numRows): + increment=2*(numRows-1) + for i in range(r,len(s),increment): + res+=s[i] + if(r>0 and r Date: Tue, 4 Oct 2022 22:35:16 +0530 Subject: [PATCH 158/448] Create buy and sell stock 1 --- Dynamic Programming/buy and sell stock 1 | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 Dynamic Programming/buy and sell stock 1 diff --git a/Dynamic Programming/buy and sell stock 1 b/Dynamic Programming/buy and sell stock 1 new file mode 100644 index 00000000..d886b303 --- /dev/null +++ b/Dynamic Programming/buy and sell stock 1 @@ -0,0 +1,17 @@ +// link : https://leetcode.com/problems/best-time-to-buy-and-sell-stock/ + + + +//space optimised +int maxProfit(vector& prices) { + int ma=0; + int ans=0; + int mi=prices[0]; + int n=prices.size(); + for(int i=1;i Date: Tue, 4 Oct 2022 22:38:18 +0530 Subject: [PATCH 159/448] Create Wildcard matching leetcode solution --- CPP/Wildcard matching leetcode solution | 61 +++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 CPP/Wildcard matching leetcode solution diff --git a/CPP/Wildcard matching leetcode solution b/CPP/Wildcard matching leetcode solution new file mode 100644 index 00000000..9345be18 --- /dev/null +++ b/CPP/Wildcard matching leetcode solution @@ -0,0 +1,61 @@ + + +//link: https://leetcode.com/problems/wildcard-matching/description/ + + +bool solve(int i, int j, string s1, string s2,vector>& dp){ + //base case + if(i<0 && j<0) return true; + if(i>=0 && j<0) return false; + if(i<0 && j>=0){ + for(int k =j;k>=0;k--){ + if(s2[k]!='*') return false; + } + return true; + } + + if(dp[i][j]!=-1) return dp[i][j]; + if(s1[i] == s2[j] || s2[j] == '?'){ + return dp[i][j] = solve(i-1,j-1,s1,s2,dp); + } + + if(s2[j] == '*' ){ + return dp[i][j] = solve(i,j-1,s1,s2,dp) | solve(i-1,j,s1,s2,dp); + } + + return dp[i][j] = false; + } + bool isMatch(string s, string p) { + int n = s.length(); + int m = p.length(); + vector> dp(n+1,vector(m+1,-1)); + dp[0][0] = true; + for(int i=0;i<=n;i++){ + dp[i][0] = false; + } + for(int i=0;i<=m;i++){ + bool is = true; + for(int j=0;j Date: Tue, 4 Oct 2022 22:38:48 +0530 Subject: [PATCH 160/448] Create NextPermutation.cpp --- Next Permutation.cpp | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 Next Permutation.cpp diff --git a/Next Permutation.cpp b/Next Permutation.cpp new file mode 100644 index 00000000..a7a38af9 --- /dev/null +++ b/Next Permutation.cpp @@ -0,0 +1,6 @@ +class Solution { +public: + void nextPermutation(vector& nums) { + next_permutation(nums.begin(),nums.end()); + } +}; From ca7bcea2d9267f24aa4dbea4d19eb0d8c1736305 Mon Sep 17 00:00:00 2001 From: Aman5989 <95266619+Aman5989@users.noreply.github.com> Date: Tue, 4 Oct 2022 22:40:47 +0530 Subject: [PATCH 161/448] create design-hashset.java --- Hashtable/design-hashset.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 Hashtable/design-hashset.java diff --git a/Hashtable/design-hashset.java b/Hashtable/design-hashset.java new file mode 100644 index 00000000..8ae1fd1f --- /dev/null +++ b/Hashtable/design-hashset.java @@ -0,0 +1,17 @@ +int size = (int)Math.pow(10, 6)+1; + boolean[] flag; + public MyHashSet() { + flag = new boolean[size]; + } + + public void add(int key) { + flag[key]=true; + } + + public void remove(int key) { + flag[key]=false; + } + + public boolean contains(int key) { + return flag[key]; + } From 62fcfa84b2e48a5f1b1ae02f07dc6b648eb84257 Mon Sep 17 00:00:00 2001 From: Ayush Kumar Shukla <68881799+Ayush-k-Shukla@users.noreply.github.com> Date: Tue, 4 Oct 2022 22:43:31 +0530 Subject: [PATCH 162/448] Create Edit distance leetcode --- CPP/Edit distance leetcode | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 CPP/Edit distance leetcode diff --git a/CPP/Edit distance leetcode b/CPP/Edit distance leetcode new file mode 100644 index 00000000..e7967d56 --- /dev/null +++ b/CPP/Edit distance leetcode @@ -0,0 +1,22 @@ +//link: https://leetcode.com/problems/edit-distance/description/ + +int solve(int i, int j, string s1, string s2,vector>& dp){ + //base case + if(j<0) return i+1; + if(i<0) return j+1; + + if(dp[i][j]!=-1) return dp[i][j]; + if(s1[i] == s2[j]){ + return dp[i][j] = solve(i-1,j-1,s1,s2,dp); + } + int del = solve(i-1,j,s1,s2,dp); + int rp = solve(i-1,j-1,s1,s2,dp); + int ins = solve(i,j-1,s1,s2,dp); + return dp[i][j] =1+ min({del,rp,ins}); + } + int minDistance(string word1, string word2) { + int n = word1.length(); + int m = word2.length(); + vector> dp(n+1,vector(m+1,-1)); + return solve(n-1,m-1,word1,word2,dp); + } From 62f1c9b93eb253ec0c614736df318784957368f2 Mon Sep 17 00:00:00 2001 From: Aman5989 <95266619+Aman5989@users.noreply.github.com> Date: Tue, 4 Oct 2022 22:44:00 +0530 Subject: [PATCH 163/448] create design-hashmap.cpp --- Hashtable/design-hashmap.cpp | 37 ++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 Hashtable/design-hashmap.cpp diff --git a/Hashtable/design-hashmap.cpp b/Hashtable/design-hashmap.cpp new file mode 100644 index 00000000..5f761d71 --- /dev/null +++ b/Hashtable/design-hashmap.cpp @@ -0,0 +1,37 @@ +class MyHashMap { +public: + MyHashMap() { + + } + vector> bucket[100]; //bucket is an array whose each element is a vector of pair + + void put(int key, int value) { + int index = key%100; + for(int i=0 ; i Date: Tue, 4 Oct 2022 22:45:04 +0530 Subject: [PATCH 164/448] Create Shortest commont supersequence --- CPP/Shortest commont supersequence | 43 ++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 CPP/Shortest commont supersequence diff --git a/CPP/Shortest commont supersequence b/CPP/Shortest commont supersequence new file mode 100644 index 00000000..fafea811 --- /dev/null +++ b/CPP/Shortest commont supersequence @@ -0,0 +1,43 @@ +//link: https://leetcode.com/problems/shortest-common-supersequence/description/ + + + +string shortestCommonSupersequence(string str1, string str2) { + int n = str1.length(); + int m = str2.length(); + vector> dp(n+1,vector(m+1,0)); + for(int i = 1; i <= n ; i++ ){ + for(int j = 1 ;j <= m ; j++){ + if( str1[i-1] == str2[j-1]){ + dp[i][j] = 1+ dp[i-1][j-1]; + } + else{ + dp[i][j] = max(dp[i-1][j],dp[i][j-1]); + } + } + } + string lcs=""; + int i =n, j=m; + while(i>=1 && j>=1){ + if(str1[i-1] == str2[j-1]){ + lcs.push_back(str1[i-1]); + i--,j--; + } + else if( dp[i-1][j] > dp[i][j-1]){ + lcs.push_back(str1[i-1]); + i--; + } + else { + lcs.push_back(str2[j-1]); + j--; + } + } + while(i>0){ lcs.push_back(str1[i-1]); i--;} + while(j>0){ lcs.push_back(str2[j-1]); j--;} + reverse(lcs.begin(),lcs.end()); + cout< Date: Tue, 4 Oct 2022 22:46:39 +0530 Subject: [PATCH 165/448] Create Kosaraju Algorithm.cpp --- CPP/graph_tree/Kosaraju Algorithm.cpp | 83 +++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 CPP/graph_tree/Kosaraju Algorithm.cpp diff --git a/CPP/graph_tree/Kosaraju Algorithm.cpp b/CPP/graph_tree/Kosaraju Algorithm.cpp new file mode 100644 index 00000000..187ee192 --- /dev/null +++ b/CPP/graph_tree/Kosaraju Algorithm.cpp @@ -0,0 +1,83 @@ +// Kosaraju Algorithm - By Sameer Aggrawal + +// Similar to topological sort function (dfs) +void dfs(int node,vector adj[],vector &visited,stack &stk) +{ + visited[node] = true; + + for(auto child: adj[node]) + { + if(!visited[child]) + { + dfs(child,adj,visited,stk); + } + } + + stk.push(node); +} + +void dfsRec(int node,vector g[],vector &visited) +{ + visited[node]=true; + + for(auto child: g[node]) + { + if(!visited[child]) + { + dfsRec(child,g,visited); + } + } + + return; +} + +//Function to find number of strongly connected components in the graph. +int kosaraju(int V, vector adj[]) +{ + int i,j; + + stack stk; + + vector result; + vector visited(V,false); + + for(i=0;i g[V]; + + for(i=0;i Date: Tue, 4 Oct 2022 22:48:56 +0530 Subject: [PATCH 166/448] create find-substring-with-given-hash-value.cpp --- .../Find-Substring-With-Given-Hash-Value.cpp | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 Hashtable/Find-Substring-With-Given-Hash-Value.cpp diff --git a/Hashtable/Find-Substring-With-Given-Hash-Value.cpp b/Hashtable/Find-Substring-With-Given-Hash-Value.cpp new file mode 100644 index 00000000..7247ca27 --- /dev/null +++ b/Hashtable/Find-Substring-With-Given-Hash-Value.cpp @@ -0,0 +1,21 @@ +class Solution { +public: + string subStrHash(string s, int p, int mod, int k, int target) { + long h = 0, N = s.size(), pp = 1; // `pp` = p^k + vector hash(N); + string r(rbegin(s), rend(s)); + for (int i = 0; i < N; ++i) { + if (i < k) pp = pp * p % mod; + h = (h * p + (r[i] - 'a' + 1)) % mod; // push r[i] into the window + if (i - k >= 0) { // pop r[i-k] out of the window + h = (h - (r[i - k] - 'a' + 1) * pp % mod + mod) % mod; + } + if (i >= k - 1) hash[i] = h; + } + reverse(begin(hash), end(hash)); + for (int i = 0; i < N; ++i) { + if (hash[i] == target) return s.substr(i, k); // hash[i] is the hash of `s[i .. (i+k-1)]` + } + return ""; + } +}; From dfef25e3953754a269e44ce71b87d4ecbe1a4adc Mon Sep 17 00:00:00 2001 From: sameer-19 <63365261+sameer-19@users.noreply.github.com> Date: Tue, 4 Oct 2022 22:49:54 +0530 Subject: [PATCH 167/448] Create Floyd Warshall.cpp --- CPP/graph_tree/Floyd Warshall.cpp | 41 +++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 CPP/graph_tree/Floyd Warshall.cpp diff --git a/CPP/graph_tree/Floyd Warshall.cpp b/CPP/graph_tree/Floyd Warshall.cpp new file mode 100644 index 00000000..6139f81f --- /dev/null +++ b/CPP/graph_tree/Floyd Warshall.cpp @@ -0,0 +1,41 @@ +// Function of floyd Warshall algorithm + +void floydWarshall(vector> &distance) // distance is the adjacency matrix of nodes 0 to n-1 + { + int n=distance.size(),i,j,k; + + for(k=0;k Date: Tue, 4 Oct 2022 22:54:29 +0530 Subject: [PATCH 168/448] Create infix-to-postfix.md Solved the issue (#451 ) --- Java/Stack/infix-to-postfix.md | 64 ++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 Java/Stack/infix-to-postfix.md diff --git a/Java/Stack/infix-to-postfix.md b/Java/Stack/infix-to-postfix.md new file mode 100644 index 00000000..a8c75739 --- /dev/null +++ b/Java/Stack/infix-to-postfix.md @@ -0,0 +1,64 @@ +# Infix Notation + +Infix is the day to day notation that we use of format A + B type. The general form can be classified as (a op b) where a and b are operands(variables) and op is Operator. + +# Postfix Notation + +Postfix is notation that compiler uses/converts to while reading left to right and is of format AB+ type. The general form can be classified as (ab op) where a and b are operands(variables) and op is Operator. + +## Code + +``` +import java.util.Stack; + +public class InfixtoPostfix { + public static void main(String[] args) { + String exp = "a+b*(c^d-e)^(f+g*h)-i"; + System.out.println(infixToPostfix(exp)); + } + public static int Precidense(char ch) { + switch (ch){ + case '+': + case '-': + return 1; + + case '*': + case '/': + return 2; + + case '^': + return 3; + } + return -1; + } + + public static String infixToPostfix(String exp) { + String result = ""; + Stack stack = new Stack<>(); + + for (char c:exp.toCharArray()) { + if (Character.isLetterOrDigit(c)) + result += c; + else if (c == '(') + stack.push(c); + else if (c == ')') { + while (!stack.isEmpty() && stack.peek() != '(') + result += stack.pop(); + stack.pop(); + } + else {// an operator is encountered + while (!stack.isEmpty() && Precidense(c) <= Precidense(stack.peek())) + result += stack.pop(); + stack.push(c); + } + + } + while (!stack.isEmpty()){ + if(stack.peek() == '(') + return "Invalid Expression"; + result += stack.pop(); + } + return result; + } +} +``` From 9a2ce9321d8e00879848e508801e393bdd92542b Mon Sep 17 00:00:00 2001 From: ParasSharma Date: Tue, 4 Oct 2022 22:55:37 +0530 Subject: [PATCH 169/448] 121 Leetcode Solution --- 121 Leetcode/121 leetcode.py | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 121 Leetcode/121 leetcode.py diff --git a/121 Leetcode/121 leetcode.py b/121 Leetcode/121 leetcode.py new file mode 100644 index 00000000..ea6114e9 --- /dev/null +++ b/121 Leetcode/121 leetcode.py @@ -0,0 +1,10 @@ +class Solution: + def maxProfit(self, prices: List[int]) -> int: + maxProfit = 0 + currentMax = 0 + + for i in reversed(prices): + currentMax = max(currentMax, i) + profit = currentMax - i + maxProfit = max(profit, maxProfit) + return maxProfit \ No newline at end of file From f667e84685beac45c7d4b9292ae8d22ab1cae635 Mon Sep 17 00:00:00 2001 From: Pratik Agrawal <99110383+PratikAgrawal02@users.noreply.github.com> Date: Tue, 4 Oct 2022 22:55:50 +0530 Subject: [PATCH 170/448] =?UTF-8?q?Create=20Brian=5FKernighan=E2=80=99s=5F?= =?UTF-8?q?algorithm.cpp?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...rian_Kernighan\342\200\231s_algorithm.cpp" | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 "CPP/Brian_Kernighan\342\200\231s_algorithm.cpp" diff --git "a/CPP/Brian_Kernighan\342\200\231s_algorithm.cpp" "b/CPP/Brian_Kernighan\342\200\231s_algorithm.cpp" new file mode 100644 index 00000000..75efa15f --- /dev/null +++ "b/CPP/Brian_Kernighan\342\200\231s_algorithm.cpp" @@ -0,0 +1,38 @@ +//BY PRATIK AGRAWAL +//https://github.com/PratikAgrawal02/ + +//Given an integer, count its set bits. + +// We can use Brian Kernighan’s algorithm to improve the above naive algorithm’s performance. The idea is to only consider the set bits of an integer by turning off its rightmost set bit (after counting it), so the next iteration of the loop considers the next rightmost bit. +// The expression n & (n-1) can be used to turn off the rightmost set bit of a number n. This works as the expression n-1 flips all the bits after the rightmost set bit of n, including the rightmost set bit itself. Therefore, n & (n-1) results in the last bit flipped of n. +// For example, consider number 52, which is 00110100 in binary, and has a total 3 bits set. + +#include +#include +using namespace std; + +// Function to count the total number of set bits in `n` +int countSetBits(int n) +{ + // `count` stores the total bits set in `n` + int count = 0; + + while (n) + { + n = n & (n - 1); // clear the least significant bit set + count++; + } + + return count; +} + +int main() +{ + int n = -1; + + cout << n << " in binary is " << bitset<32>(n) << endl; + cout << "The total number of set bits in " << n << " is " + << countSetBits(n) << endl; + + return 0; +} From 343ee395facc6cf76bcc1bb3b5e7ee9f36c21bba Mon Sep 17 00:00:00 2001 From: Harsh Bhatt <59651884+HarshBhatt123@users.noreply.github.com> Date: Tue, 4 Oct 2022 22:56:03 +0530 Subject: [PATCH 171/448] Tree Level order traversal --- Trees/binary-tree-level-order-traversal.cpp | 64 +++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 Trees/binary-tree-level-order-traversal.cpp diff --git a/Trees/binary-tree-level-order-traversal.cpp b/Trees/binary-tree-level-order-traversal.cpp new file mode 100644 index 00000000..018e4d78 --- /dev/null +++ b/Trees/binary-tree-level-order-traversal.cpp @@ -0,0 +1,64 @@ +#include + +using namespace std; + +/** + * Question Link:- https://leetcode.com/problems/binary-tree-level-order-traversal/ + * Definition for a binary tree node. + * struct TreeNode { + * int val; + * TreeNode *left; + * TreeNode *right; + * TreeNode() : val(0), left(nullptr), right(nullptr) {} + * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} + * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} + * }; + */ + +struct TreeNode { + int val; + TreeNode *left; + TreeNode *right; + TreeNode() : val(0), left(nullptr), right(nullptr) {} + TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} + TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} + }; + +class Solution { +public: + vector> levelOrder(TreeNode* root) { + if(!root) return {}; + + vector> v; + + queue q; + q.push(root); + + + + while(!q.empty()){ + int siz = q.size(); + + vector level; + + for(int i=0;ival); + q.push(node->left); + q.push(node->right); + } + + } + if(!level.empty()){ + v.push_back(level); + } + + } + + + return v; + } +}; \ No newline at end of file From d15af1c5aa3140609e50ba9ecf74853b62489e8b Mon Sep 17 00:00:00 2001 From: Aman5989 <95266619+Aman5989@users.noreply.github.com> Date: Tue, 4 Oct 2022 22:58:00 +0530 Subject: [PATCH 172/448] Binary String Has at Most One Segment of Ones.cpp **Check if Binary String Has at Most One Segment of Ones.** here's the solution of it please add hacktoberfest tags. --- ...Binary String Has at Most One Segment of Ones.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 Hashtable/Check if Binary String Has at Most One Segment of Ones.cpp diff --git a/Hashtable/Check if Binary String Has at Most One Segment of Ones.cpp b/Hashtable/Check if Binary String Has at Most One Segment of Ones.cpp new file mode 100644 index 00000000..4c564bf6 --- /dev/null +++ b/Hashtable/Check if Binary String Has at Most One Segment of Ones.cpp @@ -0,0 +1,12 @@ +class Solution { +public: + bool checkOnesSegment(string s) { + bool changed = false; + for (int i = 1; i < s.length(); i++) { + if (s[i] == s[i-1]) continue; + if (changed) return false; + changed = true; + } + return true; + } +}; From 3f072823b8f1f687b1dbb7c071b84bbf1caa5e1a Mon Sep 17 00:00:00 2001 From: Aman5989 <95266619+Aman5989@users.noreply.github.com> Date: Tue, 4 Oct 2022 23:02:40 +0530 Subject: [PATCH 173/448] create Sorting-using-trivial-hash-function.py Complexity: This sort function can have complexity O(max_element). So performance depends on that set of data provided. Limitations: Can only sort array elements of limited range (typically from -10^6 to +10^6) Auxiliary space in worst cases is O(max_element) + O(min_element) --- .../Sorting-using-trivial-hash-function.py | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 Hashtable/Sorting-using-trivial-hash-function.py diff --git a/Hashtable/Sorting-using-trivial-hash-function.py b/Hashtable/Sorting-using-trivial-hash-function.py new file mode 100644 index 00000000..f81a768d --- /dev/null +++ b/Hashtable/Sorting-using-trivial-hash-function.py @@ -0,0 +1,46 @@ +# Python3 program to sort an array +# using hash function + + +def sortUsingHash(a, n): + + # find the maximum element + Max = max(a) + + # create a hash function upto + # the max size + Hash = [0] * (Max + 1) + + # traverse through all the elements + # and keep a count + for i in range(0, n): + Hash[a[i]] += 1 + + # Traverse upto all elements and check + # if it is present or not. If it is + # present, then print the element the + # number of times it's present. Once we + # have printed n times, that means we + # have printed n elements so break out + # of the loop + for i in range(0, Max + 1): + + # if present + if Hash[i] != 0: + + # print the element that number + # of times it's present + for j in range(0, Hash[i]): + print(i, end=" ") + + +# Driver Code +if __name__ == "__main__": + + a = [9, 4, 3, 2, 5, 2, 1, 0, 4, + 3, 5, 10, 15, 12, 18, 20, 19] + n = len(a) + + sortUsingHash(a, n) + +#This code is given by Aman. From 7a23c53f5a200df0d01da78a8cec0a40674e359e Mon Sep 17 00:00:00 2001 From: Rahul Kumar Date: Tue, 4 Oct 2022 23:08:32 +0530 Subject: [PATCH 174/448] Substring with Concatenation leetcode cpp --- ...string with Concatenation of All Words.cpp | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 CPP/arrays/leetcode-problems/Substring with Concatenation of All Words.cpp diff --git a/CPP/arrays/leetcode-problems/Substring with Concatenation of All Words.cpp b/CPP/arrays/leetcode-problems/Substring with Concatenation of All Words.cpp new file mode 100644 index 00000000..9ebc58c8 --- /dev/null +++ b/CPP/arrays/leetcode-problems/Substring with Concatenation of All Words.cpp @@ -0,0 +1,42 @@ +//Substring with Concatenation of All Words +class Solution { +public: + vector findSubstring(string s, vector& words) { + vectorans; + int n=words.size(); + int m=words[0].size(); + int total=n*m; + if(s.size()mp; + + for(int j=0;j Date: Tue, 4 Oct 2022 23:13:25 +0530 Subject: [PATCH 175/448] Added bucket sort in Python --- Python/Sorting-Techniques/bucket_sort.py | 32 ++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 Python/Sorting-Techniques/bucket_sort.py diff --git a/Python/Sorting-Techniques/bucket_sort.py b/Python/Sorting-Techniques/bucket_sort.py new file mode 100644 index 00000000..589aa7fe --- /dev/null +++ b/Python/Sorting-Techniques/bucket_sort.py @@ -0,0 +1,32 @@ + +# Bucket Sort in Python + + +def bucketSort(array): + bucket = [] + + # Create empty buckets + for i in range(len(array)): + bucket.append([]) + + # Insert elements into their respective buckets + for j in array: + index_b = int(10 * j) + bucket[index_b].append(j) + + # Sort the elements of each bucket + for i in range(len(array)): + bucket[i] = sorted(bucket[i]) + + # Get the sorted elements + k = 0 + for i in range(len(array)): + for j in range(len(bucket[i])): + array[k] = bucket[i][j] + k += 1 + return array + + +array = [.42, .32, .33, .52, .37, .47, .51] +print("Sorted Array in descending order is") +print(bucketSort(array)) From 3e56f713f1e08dd067549846eb2aad043316c90a Mon Sep 17 00:00:00 2001 From: Aman5989 <95266619+Aman5989@users.noreply.github.com> Date: Tue, 4 Oct 2022 23:15:18 +0530 Subject: [PATCH 176/448] create Smallest-subarray-with-k-distinct-number.py --- ...allest-subarray-with-k-distinct-numbers.py | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 Hashtable/Smallest-subarray-with-k-distinct-numbers.py diff --git a/Hashtable/Smallest-subarray-with-k-distinct-numbers.py b/Hashtable/Smallest-subarray-with-k-distinct-numbers.py new file mode 100644 index 00000000..a2b3b97b --- /dev/null +++ b/Hashtable/Smallest-subarray-with-k-distinct-numbers.py @@ -0,0 +1,49 @@ +# Python 3 program to find minimum range +# that contains exactly k distinct numbers. + +# Prints the minimum range that contains +# exactly k distinct numbers. +def minRange(arr, n, k): + + l = 0 + r = n + + # Consider every element as + # starting point. + for i in range(n): + + # Find the smallest window starting + # with arr[i] and containing exactly + # k distinct elements. + s = [] + for j in range(i, n) : + s.append(arr[j]) + if (len(s) == k): + if ((j - i) < (r - l)) : + r = j + l = i + + break + + # There are less than k distinct + # elements now, so no need to continue. + if (j == n): + break + + # If there was no window with k distinct + # elements (k is greater than total + # distinct elements) + if (l == 0 and r == n): + print("Invalid k") + else: + print(l, r) + +# Driver code +if __name__ == "__main__": + + arr = [ 1, 2, 3, 4, 5 ] + n = len(arr) + k = 3 + minRange(arr, n, k) + + From 4983f1bbd6302e913fe9987ad3ad745aa6b24cbf Mon Sep 17 00:00:00 2001 From: rohansrivastava5491 <33935946+rohansrivastava5491@users.noreply.github.com> Date: Tue, 4 Oct 2022 23:17:21 +0530 Subject: [PATCH 177/448] Added depth first search in python --- .../Depth_first_search.py | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 Python/Searching-Algorithms/Depth_first_search.py diff --git a/Python/Searching-Algorithms/Depth_first_search.py b/Python/Searching-Algorithms/Depth_first_search.py new file mode 100644 index 00000000..0e8b712d --- /dev/null +++ b/Python/Searching-Algorithms/Depth_first_search.py @@ -0,0 +1,22 @@ +# Using a Python dictionary to act as an adjacency list +graph = { + '5' : ['3','7'], + '3' : ['2', '4'], + '7' : ['8'], + '2' : [], + '4' : ['8'], + '8' : [] +} + +visited = set() # Set to keep track of visited nodes of graph. + +def dfs(visited, graph, node): #function for dfs + if node not in visited: + print (node) + visited.add(node) + for neighbour in graph[node]: + dfs(visited, graph, neighbour) + +# Driver Code +print("Following is the Depth-First Search") +dfs(visited, graph, '5') From 995303e011d12c0232bc75f9bcce30cb3558bd77 Mon Sep 17 00:00:00 2001 From: Kashish Ahuja Date: Tue, 4 Oct 2022 23:17:44 +0530 Subject: [PATCH 178/448] Added leetcode_206 --- .../SOME LEET CODE QUESTIONS/leetcode_206.cpp | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 CPP/LINKED LIST/SOME LEET CODE QUESTIONS/leetcode_206.cpp diff --git a/CPP/LINKED LIST/SOME LEET CODE QUESTIONS/leetcode_206.cpp b/CPP/LINKED LIST/SOME LEET CODE QUESTIONS/leetcode_206.cpp new file mode 100644 index 00000000..8942979f --- /dev/null +++ b/CPP/LINKED LIST/SOME LEET CODE QUESTIONS/leetcode_206.cpp @@ -0,0 +1,25 @@ +/** + * Definition for singly-linked list. + * struct ListNode { + * int val; + * ListNode *next; + * ListNode() : val(0), next(nullptr) {} + * ListNode(int x) : val(x), next(nullptr) {} + * ListNode(int x, ListNode *next) : val(x), next(next) {} + * }; + */ +class Solution { +public: + ListNode* reverseList(ListNode* head) { + ListNode* dummy=NULL; + ListNode* next; + while(head != NULL) { + next=head->next; + head->next=dummy; + dummy=head; + head=next; + } + + return dummy; + } +}; \ No newline at end of file From 31809dd4dd1bba738d06da60a15613e56bb502d2 Mon Sep 17 00:00:00 2001 From: Umang Devanshu <81811004+devumang096@users.noreply.github.com> Date: Tue, 4 Oct 2022 23:18:32 +0530 Subject: [PATCH 179/448] Hashcode --- Java/HashCodeDemo.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 Java/HashCodeDemo.java diff --git a/Java/HashCodeDemo.java b/Java/HashCodeDemo.java new file mode 100644 index 00000000..487feaae --- /dev/null +++ b/Java/HashCodeDemo.java @@ -0,0 +1,12 @@ +public class HashCodeDemo { + public static void main(String args[]){ + String text ="Ganga"; + String text1 ="GangaRiver"; + Integer e = text.hashCode(); + System.out.println(text1.hashCode()); + String str = text1.substring(0,5); + System.out.println(str); + Integer f = text1.hashCode(); + System.out.println(e.equals(f)); + } +} From d78e6555857b4ea3867624389965aeedb4a5e4ce Mon Sep 17 00:00:00 2001 From: Umang Devanshu <81811004+devumang096@users.noreply.github.com> Date: Tue, 4 Oct 2022 23:21:46 +0530 Subject: [PATCH 180/448] Classes And Object --- CPP/class of book.cpp | 68 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 CPP/class of book.cpp diff --git a/CPP/class of book.cpp b/CPP/class of book.cpp new file mode 100644 index 00000000..2e2a6acd --- /dev/null +++ b/CPP/class of book.cpp @@ -0,0 +1,68 @@ +#include +using namespace std; + +class book { + int pages; + int ISSN; + public: + //Special member function => Constructor + //No parameter constructor => Default Constructor + book() { + pages = 103; + ISSN = 4; + } + + //Parameterised Constructor + book(int page, int issn) { + pages = page; + ISSN = issn; + } + + void display() { + cout<<"pages: "< +using namespace std; + +class book { + int pages; + int ISBN; + public: + //Default constructor + book() { + pages = 350; + ISBN = 1234; + } + + //Parameterised constructor + book(int Pages, int isbn) { + pages = Pages; + ISBN = isbn; + } + + void display() { + cout<<"Pages : "< Date: Tue, 4 Oct 2022 23:21:54 +0530 Subject: [PATCH 181/448] create clone-a-Binary-tree-with-random-pointer.cpp The idea is to store a mapping from given tree nodes to clone tree nodes in the hashtable. **please add hacktoberfest tags** --- ...one-a-Binary-Tree-with-Random-Pointers.cpp | 119 ++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100644 Hashtable/Clone-a-Binary-Tree-with-Random-Pointers.cpp diff --git a/Hashtable/Clone-a-Binary-Tree-with-Random-Pointers.cpp b/Hashtable/Clone-a-Binary-Tree-with-Random-Pointers.cpp new file mode 100644 index 00000000..c458a901 --- /dev/null +++ b/Hashtable/Clone-a-Binary-Tree-with-Random-Pointers.cpp @@ -0,0 +1,119 @@ +// A hashmap based C++ program to clone a binary +// tree with random pointers +#include +#include +using namespace std; + +/* A binary tree node has data, pointer to left child, + a pointer to right child and a pointer to + random node*/ +struct Node +{ + int key; + struct Node* left, *right, *random; +}; + +/* Helper function that allocates a new Node with the +given data and NULL left, right and random pointers. */ +Node* newNode(int key) +{ + Node* temp = new Node; + temp->key = key; + temp->random = temp->right = temp->left = NULL; + return (temp); +} + +/* Given a binary tree, print its Nodes in inorder*/ +void printInorder(Node* node) +{ + if (node == NULL) + return; + + /* First recur on left subtree */ + printInorder(node->left); + + /* then print data of Node and its random */ + cout << "[" << node->key << " "; + if (node->random == NULL) + cout << "NULL], "; + else + cout << node->random->key << "], "; + + /* now recur on right subtree */ + printInorder(node->right); +} + +/* This function creates clone by copying key +and left and right pointers. This function also +stores mapping from given tree node to clone. */ +Node* copyLeftRightNode(Node* treeNode, unordered_map &mymap) +{ + if (treeNode == NULL) + return NULL; + Node* cloneNode = newNode(treeNode->key); + mymap[treeNode] = cloneNode; + cloneNode->left = copyLeftRightNode(treeNode->left, mymap); + cloneNode->right = copyLeftRightNode(treeNode->right, mymap); + return cloneNode; +} + +// This function copies random node by using the hashmap built by +// copyLeftRightNode() +void copyRandom(Node* treeNode, Node* cloneNode, unordered_map &mymap) +{ + if (cloneNode == NULL) + return; + cloneNode->random = mymap[treeNode->random]; + copyRandom(treeNode->left, cloneNode->left, mymap); + copyRandom(treeNode->right, cloneNode->right, mymap); +} + +// This function makes the clone of given tree. It mainly uses +// copyLeftRightNode() and copyRandom() +Node* cloneTree(Node* tree) +{ + if (tree == NULL) + return NULL; + unordered_map mymap; + Node* newTree = copyLeftRightNode(tree, mymap); + copyRandom(tree, newTree, mymap); + return newTree; +} + +/* Driver program to test above functions*/ +int main() +{ + //Test No 1 + Node *tree = newNode(1); + tree->left = newNode(2); + tree->right = newNode(3); + tree->left->left = newNode(4); + tree->left->right = newNode(5); + tree->random = tree->left->right; + tree->left->left->random = tree; + tree->left->right->random = tree->right; + + // Test No 2 + // tree = NULL; + + // Test No 3 + // tree = newNode(1); + + // Test No 4 + /* tree = newNode(1); + tree->left = newNode(2); + tree->right = newNode(3); + tree->random = tree->right; + tree->left->random = tree; + */ + + cout << "Inorder traversal of original binary tree is: \n"; + printInorder(tree); + + Node *clone = cloneTree(tree); + + cout << "\n\nInorder traversal of cloned binary tree is: \n"; + printInorder(clone); + + return 0; +} From 325473f5ae91c992116774c20235c0e2d08b4387 Mon Sep 17 00:00:00 2001 From: Hiya Shivnani <91622932+69poisonivy69@users.noreply.github.com> Date: Tue, 4 Oct 2022 23:22:28 +0530 Subject: [PATCH 182/448] created searching_2D_matrix.cpp --- .../Binary-search/searching_2D_matrix.cpp | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 Leetcode-solutions/Binary-search/searching_2D_matrix.cpp diff --git a/Leetcode-solutions/Binary-search/searching_2D_matrix.cpp b/Leetcode-solutions/Binary-search/searching_2D_matrix.cpp new file mode 100644 index 00000000..564423d4 --- /dev/null +++ b/Leetcode-solutions/Binary-search/searching_2D_matrix.cpp @@ -0,0 +1,26 @@ +class Solution { + public: + bool searchMatrix(vector>& matrix, int target) { + if (matrix.empty()) + return false; + + const int m = matrix.size(); + const int n = matrix[0].size(); + int l = 0; + int r = m * n; + + while (l < r) { + const int mid = (l + r) / 2; + const int i = mid / n; + const int j = mid % n; + if (matrix[i][j] == target) + return true; + if (matrix[i][j] < target) + l = mid + 1; + else + r = mid; + } + + return false; + } +}; From 7fbc6458f8b73c12c862b8ac2ab9eb2daa584ec8 Mon Sep 17 00:00:00 2001 From: rai-m47 <115033416+rai-m47@users.noreply.github.com> Date: Tue, 4 Oct 2022 23:22:41 +0530 Subject: [PATCH 183/448] Added code for String subset using Bit Magic. --- .../SubSetWithBitwise.java | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 Java/FiveBitManipulation/SubSetWithBitwise.java diff --git a/Java/FiveBitManipulation/SubSetWithBitwise.java b/Java/FiveBitManipulation/SubSetWithBitwise.java new file mode 100644 index 00000000..a458112b --- /dev/null +++ b/Java/FiveBitManipulation/SubSetWithBitwise.java @@ -0,0 +1,25 @@ +import java.util.*; + +public class SubSetWithBitwise { + public static void main(String[] args) { + Scanner sc = new Scanner(System.in); + String s=sc.next(); + int i,k,n,n1; + int l=s.length(); + n=(int)Math.pow(2.0,l); + System.out.print(" "); + for(i=0;i>k)&1) == 1) + System.out.print(s.charAt(k)); + k++; + n1/=2; + } + System.out.println(); + } + } +} From b95cae83aa7e065cd4a766335989035a2ec7b0fa Mon Sep 17 00:00:00 2001 From: Rahul Kumar Date: Tue, 4 Oct 2022 23:25:15 +0530 Subject: [PATCH 184/448] Added Leetcode problem 33 Search in Rotated Sorted Array --- .../Search in Rotated Sorted Array.cpp | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 CPP/Leetcode/33. Search in Rotated Sorted Array/Search in Rotated Sorted Array.cpp diff --git a/CPP/Leetcode/33. Search in Rotated Sorted Array/Search in Rotated Sorted Array.cpp b/CPP/Leetcode/33. Search in Rotated Sorted Array/Search in Rotated Sorted Array.cpp new file mode 100644 index 00000000..8aa3ba37 --- /dev/null +++ b/CPP/Leetcode/33. Search in Rotated Sorted Array/Search in Rotated Sorted Array.cpp @@ -0,0 +1,53 @@ +class Solution { +public: + int binarysearch(vector nums, int target, int low, int high) + { + while(low<=high) + { + int mid=low+(high-low)/2; + if(nums[mid]==target) return mid; + else if(nums[mid]>target) high=mid-1; + else low=mid+1; + } + return -1; + } + int pivotindex(vector nums) + { + int n=nums.size(); + int low=0,high=n-1; + while(low<=high) + { + int mid=low+(high-low)/2; + int prev=mid-1; + int next=mid+1; + if(mid==0){ + prev=(mid+n-1)%n; + } + if(mid==n-1){ + next=(mid+1)%n; + } + if(nums[mid]<=nums[next] && nums[mid]<=nums[prev]) return mid; + else if(nums[mid]>=nums[0]) low=mid+1; + else if(nums[mid]<=nums[n-1]) high=mid-1; + } + return -1; + } + + int search(vector& nums, int target) { + + int n=nums.size(); + if(nums[0]=0) return a; + else if(b>=0) return b; + return -1; + } +}; \ No newline at end of file From cdfa3850ec23d1d669af4272fb093245fd382b31 Mon Sep 17 00:00:00 2001 From: Rahul Kumar Date: Tue, 4 Oct 2022 23:26:32 +0530 Subject: [PATCH 185/448] Added question (README.md) --- .../README.md | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 CPP/Leetcode/33. Search in Rotated Sorted Array/README.md diff --git a/CPP/Leetcode/33. Search in Rotated Sorted Array/README.md b/CPP/Leetcode/33. Search in Rotated Sorted Array/README.md new file mode 100644 index 00000000..ee9e012f --- /dev/null +++ b/CPP/Leetcode/33. Search in Rotated Sorted Array/README.md @@ -0,0 +1,39 @@ +# 33. Search in Rotated Sorted Array + +There is an integer array nums sorted in ascending order (with distinct values). + +Prior to being passed to your function, nums is possibly rotated at an unknown pivot index k (1 <= k < nums.length) such that the resulting array is [nums[k], nums[k+1], ..., nums[n-1], nums[0], nums[1], ..., nums[k-1]] (0-indexed). For example, [0,1,2,4,5,6,7] might be rotated at pivot index 3 and become [4,5,6,7,0,1,2]. + +Given the array nums after the possible rotation and an integer target, return the index of target if it is in nums, or -1 if it is not in nums. + +You must write an algorithm with O(log n) runtime complexity. + + + +Example 1: +``` +Input: nums = [4,5,6,7,0,1,2], target = 0 + +Output: 4 +``` + +Example 2: + +``` +Input: nums = [4,5,6,7,0,1,2], target = 3 +Output: -1 +``` + +Example 3: +``` +Input: nums = [1], target = 0 +Output: -1 + ``` + +Constraints: + +- 1 <= nums.length <= 5000 +- -104 <= nums[i] <= 104 +- All values of nums are unique. +- nums is an ascending array that is possibly rotated. +- -104 <= target <= 104 From 53aac74cba391555277723a8ae36731204e4e93f Mon Sep 17 00:00:00 2001 From: Aman5989 <95266619+Aman5989@users.noreply.github.com> Date: Tue, 4 Oct 2022 23:26:48 +0530 Subject: [PATCH 186/448] Create palindrome-substring-queries.cpp **please add hacktoberfest tags** --- Hashtable/Palindrome-Substring-Queries.cpp | 173 +++++++++++++++++++++ 1 file changed, 173 insertions(+) create mode 100644 Hashtable/Palindrome-Substring-Queries.cpp diff --git a/Hashtable/Palindrome-Substring-Queries.cpp b/Hashtable/Palindrome-Substring-Queries.cpp new file mode 100644 index 00000000..49465ca6 --- /dev/null +++ b/Hashtable/Palindrome-Substring-Queries.cpp @@ -0,0 +1,173 @@ +/* A C++ program to answer queries to check whether +the substrings are palindrome or not efficiently */ +#include +using namespace std; + +#define p 101 +#define MOD 1000000007 + +// Structure to represent a query. A query consists +// of (L, R) and we have to answer whether the substring +// from index-L to R is a palindrome or not +struct Query { + int L, R; +}; + +// A function to check if a string str is palindrome +// in the range L to R +bool isPalindrome(string str, int L, int R) +{ + // Keep comparing characters while they are same + while (R > L) + if (str[L++] != str[R--]) + return (false); + return (true); +} + +// A Function to find pow (base, exponent) % MOD +// in log (exponent) time +unsigned long long int modPow( + unsigned long long int base, + unsigned long long int exponent) +{ + if (exponent == 0) + return 1; + if (exponent == 1) + return base; + + unsigned long long int temp = modPow(base, exponent / 2); + + if (exponent % 2 == 0) + return (temp % MOD * temp % MOD) % MOD; + else + return (((temp % MOD * temp % MOD) % MOD) + * base % MOD) + % MOD; +} + +// A Function to calculate Modulo Multiplicative Inverse of 'n' +unsigned long long int findMMI(unsigned long long int n) +{ + return modPow(n, MOD - 2); +} + +// A Function to calculate the prefix hash +void computePrefixHash( + string str, int n, + unsigned long long int prefix[], + unsigned long long int power[]) +{ + prefix[0] = 0; + prefix[1] = str[0]; + + for (int i = 2; i <= n; i++) + prefix[i] = (prefix[i - 1] % MOD + + (str[i - 1] % MOD + * power[i - 1] % MOD) + % MOD) + % MOD; + + return; +} + +// A Function to calculate the suffix hash +// Suffix hash is nothing but the prefix hash of +// the reversed string +void computeSuffixHash( + string str, int n, + unsigned long long int suffix[], + unsigned long long int power[]) +{ + suffix[0] = 0; + suffix[1] = str[n - 1]; + + for (int i = n - 2, j = 2; i >= 0 && j <= n; i--, j++) + suffix[j] = (suffix[j - 1] % MOD + + (str[i] % MOD + * power[j - 1] % MOD) + % MOD) + % MOD; + return; +} + +// A Function to answer the Queries +void queryResults(string str, Query q[], int m, int n, + unsigned long long int prefix[], + unsigned long long int suffix[], + unsigned long long int power[]) +{ + for (int i = 0; i <= m - 1; i++) { + int L = q[i].L; + int R = q[i].R; + + // Hash Value of Substring [L, R] + unsigned long long hash_LR + = ((prefix[R + 1] - prefix[L] + MOD) % MOD + * findMMI(power[L]) % MOD) + % MOD; + + // Reverse Hash Value of Substring [L, R] + unsigned long long reverse_hash_LR + = ((suffix[n - L] - suffix[n - R - 1] + MOD) % MOD + * findMMI(power[n - R - 1]) % MOD) + % MOD; + + // If both are equal then + // the substring is a palindrome + if (hash_LR == reverse_hash_LR) { + if (isPalindrome(str, L, R) == true) + printf("The Substring [%d %d] is a " + "palindrome\n", + L, R); + else + printf("The Substring [%d %d] is not a " + "palindrome\n", + L, R); + } + + else + printf("The Substring [%d %d] is not a " + "palindrome\n", + L, R); + } + + return; +} + +// A Dynamic Programming Based Approach to compute the +// powers of 101 +void computePowers(unsigned long long int power[], int n) +{ + // 101^0 = 1 + power[0] = 1; + + for (int i = 1; i <= n; i++) + power[i] = (power[i - 1] % MOD * p % MOD) % MOD; + + return; +} + +/* Driver program to test above function */ +int main() +{ + string str = "abaaabaaaba"; + int n = str.length(); + + // A Table to store the powers of 101 + unsigned long long int power[n + 1]; + + computePowers(power, n); + + // Arrays to hold prefix and suffix hash values + unsigned long long int prefix[n + 1], suffix[n + 1]; + + // Compute Prefix Hash and Suffix Hash Arrays + computePrefixHash(str, n, prefix, power); + computeSuffixHash(str, n, suffix, power); + + Query q[] = { { 0, 10 }, { 5, 8 }, { 2, 5 }, { 5, 9 } }; + int m = sizeof(q) / sizeof(q[0]); + + queryResults(str, q, m, n, prefix, suffix, power); + return (0); +} From f36e21c31c07680fe4c5e29b2285e09bec2f8871 Mon Sep 17 00:00:00 2001 From: Akshay Gidwani <49589314+akshaygidwani404@users.noreply.github.com> Date: Tue, 4 Oct 2022 23:28:38 +0530 Subject: [PATCH 187/448] Matrix Transpose in C++ Created folder for matrix problems and added code for transpose of a given matrix in C++ --- Matrix/MatrixTranspose.cpp | 42 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 Matrix/MatrixTranspose.cpp diff --git a/Matrix/MatrixTranspose.cpp b/Matrix/MatrixTranspose.cpp new file mode 100644 index 00000000..c8953c0b --- /dev/null +++ b/Matrix/MatrixTranspose.cpp @@ -0,0 +1,42 @@ +#include +using namespace std; + +int main() { + int a[10][10], transpose[10][10], row, column, i, j; + + cout << "Enter rows and columns of matrix: "; + cin >> row >> column; + + cout << "\nEnter elements of matrix: " << endl; + + for (int i = 0; i < row; ++i) { + for (int j = 0; j < column; ++j) { + cout << "Enter element a" << i + 1 << j + 1 << ": "; + cin >> a[i][j]; + } + } + + cout << "\nEntered Matrix: " << endl; + for (int i = 0; i < row; ++i) { + for (int j = 0; j < column; ++j) { + cout << " " << a[i][j]; + if (j == column - 1) + cout << endl << endl; + } + } + + for (int i = 0; i < row; ++i) + for (int j = 0; j < column; ++j) { + transpose[j][i] = a[i][j]; + } + + cout << "\nTranspose of Matrix: " << endl; + for (int i = 0; i < column; ++i) + for (int j = 0; j < row; ++j) { + cout << " " << transpose[i][j]; + if (j == row - 1) + cout << endl << endl; + } + + return 0; +} From 3b58226b839a1ba9eb6e57702b89af0358188fa4 Mon Sep 17 00:00:00 2001 From: SwetaDas16 <95847009+SwetaDas16@users.noreply.github.com> Date: Tue, 4 Oct 2022 23:28:59 +0530 Subject: [PATCH 188/448] Create lazy_queries_segment_tree.cpp --- .../lazy_queries_segment_tree.cpp | 166 ++++++++++++++++++ 1 file changed, 166 insertions(+) create mode 100644 CPP/Segment Tree/lazy_queries_segment_tree.cpp diff --git a/CPP/Segment Tree/lazy_queries_segment_tree.cpp b/CPP/Segment Tree/lazy_queries_segment_tree.cpp new file mode 100644 index 00000000..62d40077 --- /dev/null +++ b/CPP/Segment Tree/lazy_queries_segment_tree.cpp @@ -0,0 +1,166 @@ +#include + +using namespace std; +typedef long long int ll; +typedef long double ld; +typedef pair < ll, ll > iii; +const ll mod = 1e9 + 7; + +ll n, q; +struct node { + ll x; + ll ad; + ll lazy; + node() { + x = 0; + ad = 0; + lazy = 0; + } +}; +vector < ll > v; +vector < node > g; + +inline node merge(node a, node b) { + node temp; + temp.x = a.x + b.x; + temp.ad = 0; + temp.lazy = 0; + return (temp); +} + +inline void build(ll index, ll l, ll r) { + if (l == r) { + g[index].ad = 0; + g[index].lazy = 0; + g[index].x = v[l]; + return; + } + + ll mid; + mid = (l + r) / 2; + build(2 * index, l, mid); + build(2 * index + 1, mid + 1, r); + g[index] = merge(g[2 * index], g[2 * index + 1]); + +} + +inline void push(ll index, ll l, ll r) { + if (g[index].lazy > 0) { + g[index].x = (r + 1 - l) * g[index].lazy; + g[2 * index].lazy = g[index].lazy; + g[2 * index + 1].lazy = g[index].lazy; + g[2 * index].ad = 0; + g[2 * index + 1].ad = 0; + g[index].lazy = 0; + + } + + if (g[index].ad > 0) { + g[index].x = g[index].x + (r + 1 - l) * g[index].ad; + g[2 * index].ad += g[index].ad; + g[2 * index + 1].ad += g[index].ad; + //g[2*index].lazy=0; + //g[2*index+1].lazy=0; + g[index].ad = 0; + } + + return; +} + +inline ll findsum(ll index, ll l, ll r, ll lq, ll rq) { + push(index, l, r); + if (l > rq || r < lq) + return 0; + + if (l >= lq && r <= rq) + return (g[index].x); + + ll mid; + mid = (l + r) / 2; + + return (findsum(2 * index, l, mid, lq, rq) + findsum(2 * index + 1, mid + 1, r, lq, rq)); + +} + +inline void update2(ll index, ll l, ll r, ll lq, ll rq, ll x) { + push(index, l, r); + + if (l > rq || r < lq) + return; + + if (l >= lq && r <= rq) { + g[index].lazy = x; + push(index, l, r); + return; + } + + ll mid; + mid = (l + r) / 2; + update2(2 * index, l, mid, lq, rq, x); + update2(2 * index + 1, mid + 1, r, lq, rq, x); + g[index] = merge(g[2 * index], g[2 * index + 1]); + +} + +inline void update1(ll index, ll l, ll r, ll lq, ll rq, ll x) { + push(index, l, r); + + if (l > rq || r < lq) + return; + + if (l >= lq && r <= rq) { + g[index].ad += x; + push(index, l, r); + return; + } + + ll mid; + mid = (l + r) / 2; + update1(2 * index, l, mid, lq, rq, x); + update1(2 * index + 1, mid + 1, r, lq, rq, x); + g[index] = merge(g[2 * index], g[2 * index + 1]); + +} + +int main() { + + ios_base::sync_with_stdio(0); + cin.tie(0); + cout.tie(0); + + cin >> n >> q; + + v.resize(n + 1); + g.resize(8 * n + 4); + + ll i; + for (i = 1; i <= n; i++) + cin >> v[i]; + + build(1, 1, n); + + while (q--) { + ll t, a, b, x; + cin >> t; + if (t == 1) { + cin >> a >> b >> x; + + update1(1, 1, n, a, b, x); + + } + if (t == 2) { + cin >> a >> b >> x; + + update2(1, 1, n, a, b, x); + + } + + if (t == 3) { + cin >> a >> b; + cout << findsum(1, 1, n, a, b) << endl; + + } + } + + return 0; +} From 21ebb0b0a4df8ab40fd4d716fbdc3b02a24c364c Mon Sep 17 00:00:00 2001 From: Aman5989 <95266619+Aman5989@users.noreply.github.com> Date: Tue, 4 Oct 2022 23:30:10 +0530 Subject: [PATCH 189/448] create cuckoo-hashing.cpp Cuckoo hashing applies the idea of multiple-choice and relocation together and guarantees O(1) worst case lookup time! **PLEASE ADD HACKTOBERFEST TAG** --- Hashtable/cuckoo-hashing.cpp | 139 +++++++++++++++++++++++++++++++++++ 1 file changed, 139 insertions(+) create mode 100644 Hashtable/cuckoo-hashing.cpp diff --git a/Hashtable/cuckoo-hashing.cpp b/Hashtable/cuckoo-hashing.cpp new file mode 100644 index 00000000..18eb8c33 --- /dev/null +++ b/Hashtable/cuckoo-hashing.cpp @@ -0,0 +1,139 @@ +// C++ program to demonstrate working of Cuckoo +// hashing. +#include + +// upper bound on number of elements in our set +#define MAXN 11 + +// choices for position +#define ver 2 + +// Auxiliary space bounded by a small multiple +// of MAXN, minimizing wastage +int hashtable[ver][MAXN]; + +// Array to store possible positions for a key +int pos[ver]; + +/* function to fill hash table with dummy value +* dummy value: INT_MIN +* number of hashtables: ver */ +void initTable() +{ + for (int j=0; j Date: Tue, 4 Oct 2022 23:34:04 +0530 Subject: [PATCH 190/448] =?UTF-8?q?Create=20Recaman=E2=80=99s-sequence.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit please add hacktoberfest tags. --- "Hashtable/Recaman\342\200\231s-sequence.py" | 37 ++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 "Hashtable/Recaman\342\200\231s-sequence.py" diff --git "a/Hashtable/Recaman\342\200\231s-sequence.py" "b/Hashtable/Recaman\342\200\231s-sequence.py" new file mode 100644 index 00000000..9b5db2d8 --- /dev/null +++ "b/Hashtable/Recaman\342\200\231s-sequence.py" @@ -0,0 +1,37 @@ +# Python 3 program to print n-th +# number in Recaman's sequence + +# Prints first n terms of Recaman +# sequence +def recaman(n): + + # Create an array to store terms + arr = [0] * n + + # First term of the sequence + # is always 0 + arr[0] = 0 + print(arr[0], end=", ") + + # Fill remaining terms using + # recursive formula. + for i in range(1, n): + + curr = arr[i-1] - i + for j in range(0, i): + + # If arr[i-1] - i is + # negative or already + # exists. + if ((arr[j] == curr) or curr < 0): + curr = arr[i-1] + i + break + + arr[i] = curr + print(arr[i], end=", ") + +# Driver code +n = 17 + +recaman(n) + From 5f3653a6dd361ff78b8bfe1b9107532a031a56e1 Mon Sep 17 00:00:00 2001 From: rohansrivastava5491 <33935946+rohansrivastava5491@users.noreply.github.com> Date: Tue, 4 Oct 2022 23:34:39 +0530 Subject: [PATCH 191/448] Added jump-search in python MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Time Complexity : O(√n) Auxiliary Space : O(1) Important points: 1.Works only with sorted arrays. 2.The optimal size of a block to be jumped is (√ n). This makes the time complexity of Jump Search O(√ n). 3.The time complexity of Jump Search is between Linear Search ((O(n)) and Binary Search (O(Log n)). 4.Binary Search is better than Jump Search, but Jump Search has the advantage that we traverse back only once (Binary Search may require up to O(Log n) jumps, consider a situation where the element to be searched is the smallest element or just bigger than the smallest). So, in a system where binary search is costly, we use Jump Search. --- Python/Searching-Algorithms/Jump_search.py | 81 ++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 Python/Searching-Algorithms/Jump_search.py diff --git a/Python/Searching-Algorithms/Jump_search.py b/Python/Searching-Algorithms/Jump_search.py new file mode 100644 index 00000000..4e474175 --- /dev/null +++ b/Python/Searching-Algorithms/Jump_search.py @@ -0,0 +1,81 @@ +# Python3 code to implement Jump Search + +import math + + +def jumpSearch( arr , x , n ): + + + + # Finding block size to be jumped + + step = math.sqrt(n) + + + + # Finding the block where element is + + # present (if it is present) + + prev = 0 + + while arr[int(min(step, n)-1)] < x: + + prev = step + + step += math.sqrt(n) + + if prev >= n: + + return -1 + + + + # Doing a linear search for x in + + # block beginning with prev. + + while arr[int(prev)] < x: + + prev += 1 + + + + # If we reached next block or end + + # of array, element is not present. + + if prev == min(step, n): + + return -1 + + + + # If element is found + + if arr[int(prev)] == x: + + return prev + + + + return -1 + +# Driver code to test function + +arr = [ 0, 1, 1, 2, 3, 5, 8, 13, 21, + + 34, 55, 89, 144, 233, 377, 610 ] + +x = 55 + +n = len(arr) + +# Find the index of 'x' using Jump Search + +index = jumpSearch(arr, x, n) + +# Print the index where 'x' is located + +print("Number" , x, "is at index" ,"%.0f"%index) + From be2e266f403a6979dfaa5b9380e0c916f5670afa Mon Sep 17 00:00:00 2001 From: namita27 <60788694+namita27@users.noreply.github.com> Date: Tue, 4 Oct 2022 23:35:33 +0530 Subject: [PATCH 192/448] Removal of an element in a Hashtable This program removes an element from a HashTable. --- .../Removing an element from a Hashtable | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 Hashtable/Removing an element from a Hashtable diff --git a/Hashtable/Removing an element from a Hashtable b/Hashtable/Removing an element from a Hashtable new file mode 100644 index 00000000..effc3df0 --- /dev/null +++ b/Hashtable/Removing an element from a Hashtable @@ -0,0 +1,27 @@ +// This program will remove a particular element from the HashTable. + +import java.util.*; +class Example1 { + + public static void main(String args[]) + { + // Initialization of a Hashtable + Map map + = new Hashtable(); + + // Inserting the Elements using put method + map.put(1, "Apple"); + map.put(2, "Mango"); + map.put(3, "Orange"); + map.put(4, "Grapes"); + + // Initial HashMap + System.out.println("Initial map : " + map); + + // Remove the map entry with key 2 + map.remove(2); + + // Final Hashtable + System.out.println("Updated map : " + map); + } +} From d304395e0f922dbc34be15ff0caacdbdc7be352d Mon Sep 17 00:00:00 2001 From: Aman5989 <95266619+Aman5989@users.noreply.github.com> Date: Tue, 4 Oct 2022 23:39:07 +0530 Subject: [PATCH 193/448] Create Find-all-duplicate-Substrees.py **please add hacktoberfest tags** --- Hashtable/Find-All-Duplicate-Subtrees.py | 53 ++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 Hashtable/Find-All-Duplicate-Subtrees.py diff --git a/Hashtable/Find-All-Duplicate-Subtrees.py b/Hashtable/Find-All-Duplicate-Subtrees.py new file mode 100644 index 00000000..fbfcaf6b --- /dev/null +++ b/Hashtable/Find-All-Duplicate-Subtrees.py @@ -0,0 +1,53 @@ +# Python3 program to find averages of +# all levels in a binary tree. + +# Helper function that allocates a +# new node with the given data and +# None left and right pointers. +class newNode: + def __init__(self, data): + self.data = data + self.left = self.right = None + +def inorder(node, m): + if (not node): + return "" + + Str = "(" + Str += inorder(node.left, m) + Str += str(node.data) + Str += inorder(node.right, m) + Str += ")" + + # Subtree already present (Note that + # we use unordered_map instead of + # unordered_set because we want to print + # multiple duplicates only once, consider + # example of 4 in above subtree, it + # should be printed only once. + if (Str in m and m[Str] == 1): + print(node.data, end = " ") + if Str in m: + m[Str] += 1 + else: + m[Str] = 1 + + return Str + +# Wrapper over inorder() +def printAllDups(root): + m = {} + inorder(root, m) + +# Driver code +if __name__ == '__main__': + root = None + root = newNode(1) + root.left = newNode(2) + root.right = newNode(3) + root.left.left = newNode(4) + root.right.left = newNode(2) + root.right.left.left = newNode(4) + root.right.right = newNode(4) + printAllDups(root) + From 0ff2a39a1703d6e0c7a347575cb71c3814bf1c5e Mon Sep 17 00:00:00 2001 From: shivaabhishek07 Date: Tue, 4 Oct 2022 23:39:12 +0530 Subject: [PATCH 194/448] Added Prime checker in python --- Python/CheckForPrime.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 Python/CheckForPrime.py diff --git a/Python/CheckForPrime.py b/Python/CheckForPrime.py new file mode 100644 index 00000000..e4a031b4 --- /dev/null +++ b/Python/CheckForPrime.py @@ -0,0 +1,22 @@ +#Prime-Number checker +''' +Prime Number: A number that is divisible only by itself and 1 +(e.g. 2, 3, 5, 7, 11). +''' +def is_prime(n): + for i in range(2,n): + if n%i==0: + return False + return True +n=int(input("Enter the number to check for Prime ")) +if is_prime(n): + print("Given number is a prime number") +else: + print("Given number is not a prime number") +''' +In: Enter the number to check for Prime 3 +Op: Given number is a prime number + +In:Enter the number to check for Prime 9 +Op:Given number is not a prime number +''' From 53cce504a18ef8592f51bda1496ea642eb420f58 Mon Sep 17 00:00:00 2001 From: shrutij1247 <114980144+shrutij1247@users.noreply.github.com> Date: Tue, 4 Oct 2022 23:42:11 +0530 Subject: [PATCH 195/448] Create Cocktail Sort.cpp --- CPP/sorting/Cocktail Sort.cpp | 72 +++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 CPP/sorting/Cocktail Sort.cpp diff --git a/CPP/sorting/Cocktail Sort.cpp b/CPP/sorting/Cocktail Sort.cpp new file mode 100644 index 00000000..5e39ace8 --- /dev/null +++ b/CPP/sorting/Cocktail Sort.cpp @@ -0,0 +1,72 @@ +// C++ implementation of Cocktail Sort +#include +using namespace std; + +// Sorts array a[0..n-1] using Cocktail sort +void CocktailSort(int a[], int n) +{ +bool swapped = true; +int start = 0; +int end = n - 1; + +while (swapped) { +// reset the swapped flag on entering +// the loop, because it might be true from +// a previous iteration. +swapped = false; + +// loop from left to right same as +// the bubble sort +for (int i = start; i < end; ++i) { +if (a[i] > a[i + 1]) { + swap(a[i], a[i + 1]); + swapped = true; +} +} + +// if nothing moved, then array is sorted. +if (!swapped) +break; + +// otherwise, reset the swapped flag so that it +// can be used in the next stage +swapped = false; + +// move the end point back by one, because +// item at the end is in its rightful spot +--end; + +// from right to left, doing the +// same comparison as in the previous stage +for (int i = end - 1; i >= start; --i) { +if (a[i] > a[i + 1]) { + swap(a[i], a[i + 1]); + swapped = true; +} +} + +// increase the starting point, because +// the last stage would have moved the next +// smallest number to its rightful spot. +++start; +} +} + +/* Prints the array */ +void printArray(int a[], int n) +{ +for (int i = 0; i < n; i++) +printf("%d ", a[i]); +printf("\n"); +} + +// Driver code +int main() +{ +int arr[] = { 5, 1, 4, 2, 8, 0, 2 }; +int n = sizeof(arr) / sizeof(arr[0]); +CocktailSort(arr, n); +printf("Sorted array :\n"); +printArray(arr, n); +return 0; +} From d438b3c01706a13066b065690a6ce68c61eb7765 Mon Sep 17 00:00:00 2001 From: rohansrivastava5491 <33935946+rohansrivastava5491@users.noreply.github.com> Date: Tue, 4 Oct 2022 23:43:31 +0530 Subject: [PATCH 196/448] Added interpolation search in python Time Complexity: O(log2(log2 n)) for the average case, and O(n) for the worst case Auxiliary Space Complexity: O(1) --- .../interpolation_search.py | 81 +++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 Python/Searching-Algorithms/interpolation_search.py diff --git a/Python/Searching-Algorithms/interpolation_search.py b/Python/Searching-Algorithms/interpolation_search.py new file mode 100644 index 00000000..ab5eb290 --- /dev/null +++ b/Python/Searching-Algorithms/interpolation_search.py @@ -0,0 +1,81 @@ +# Python3 program to implement +# interpolation search +# with recursion + +# If x is present in arr[0..n-1], then +# returns index of it, else returns -1. + + + +def interpolationSearch(arr, lo, hi, x): + + + # Since array is sorted, an element present + + # in array must be in range defined by corner + + if (lo <= hi and x >= arr[lo] and x <= arr[hi]): + + + # Probing the position with keeping + + # uniform distribution in mind. + + pos = lo + ((hi - lo) // (arr[hi] - arr[lo]) * + + (x - arr[lo])) + + + # Condition of target found + + if arr[pos] == x: + + return pos + + + # If x is larger, x is in right subarray + + if arr[pos] < x: + + return interpolationSearch(arr, pos + 1, + + hi, x) + + + # If x is smaller, x is in left subarray + + if arr[pos] > x: + + return interpolationSearch(arr, lo, + + pos - 1, x) + + return -1 + +# Driver code + + +# Array of items in which +# search will be conducted + +arr = [10, 12, 13, 16, 18, 19, 20, + + 21, 22, 23, 24, 33, 35, 42, 47] + +n = len(arr) + +# Element to be searched + +x = 18 + +index = interpolationSearch(arr, 0, n - 1, x) + + +if index != -1: + + print("Element found at index", index) + +else: + + print("Element not found") + From df97ef94f453e9c080a557282eee5610d58690bd Mon Sep 17 00:00:00 2001 From: Rashika Rawat Date: Tue, 4 Oct 2022 23:49:50 +0530 Subject: [PATCH 197/448] Added bottom view for tree --- Trees/BottomView.cpp | 68 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 Trees/BottomView.cpp diff --git a/Trees/BottomView.cpp b/Trees/BottomView.cpp new file mode 100644 index 00000000..f9092e93 --- /dev/null +++ b/Trees/BottomView.cpp @@ -0,0 +1,68 @@ +#include +using namespace std; + +class Tree { + public: + int data; + int hd; + Tree *left; + Tree *right; + +}; + +Tree* newNode(int data){ + Tree *new_node = new Tree(); + new_node->data = data; + new_node->hd = 0; + new_node->left = NULL; + new_node->right = NULL; + return new_node; + +} + +void setHorizontalDistance(Tree* root, int hd){ + + if(root == NULL)return; + + root->hd = hd; + setHorizontalDistance(root->left, hd-1); + setHorizontalDistance(root->right, hd +1); +} +void bottomView(Tree *root, map>&m, int d){ +if(root == NULL)return; +if(m[root->hd].first < d){ +m[root->hd].first = d; +m[root->hd].second = root->data; +} +if(root->left) +bottomView(root->left, m, d+1 ); + +if(root->right) +bottomView(root->right, m, d+1); +} + +int main(){ + + Tree *root = newNode(20); + root->left = newNode(8); + root->right = newNode(22); + root->left->left = newNode(5); + root->left->right = newNode(3); + root->right->left = newNode(4); + root->right->right = newNode(25); + root->left->right->left = newNode(10); + root->left->right->right = newNode(14); + + setHorizontalDistance(root, 0); + + map>m; + bottomView(root, m, 1); + + for(auto x: m){ + cout< Date: Tue, 4 Oct 2022 23:50:05 +0530 Subject: [PATCH 198/448] Oct 4th : Path sum --- Trees/pathSum.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 Trees/pathSum.cpp diff --git a/Trees/pathSum.cpp b/Trees/pathSum.cpp new file mode 100644 index 00000000..a514eee1 --- /dev/null +++ b/Trees/pathSum.cpp @@ -0,0 +1,15 @@ +#include +#include +using namespace std; +struct TreeNode{ + int val; + TreeNode *left,*right; +}; +bool hasPathSum(TreeNode* root, int sum) { + if(!root) + return 0; + + if(!root->left && !root->right) + return sum-root->val == 0; + return hasPathSum(root->left,sum-root->val) || hasPathSum(root->right,sum-root->val); +} From 3fdd75821d7cb7d96b4d281ddd6d8c6b8d639b7d Mon Sep 17 00:00:00 2001 From: Vishwajeet Shivaji Hogale Date: Tue, 4 Oct 2022 23:50:26 +0530 Subject: [PATCH 199/448] Oct 4th : Path sum --- Trees/pathSum.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Trees/pathSum.cpp b/Trees/pathSum.cpp index a514eee1..44150f07 100644 --- a/Trees/pathSum.cpp +++ b/Trees/pathSum.cpp @@ -9,7 +9,7 @@ bool hasPathSum(TreeNode* root, int sum) { if(!root) return 0; - if(!root->left && !root->right) + if(!root->left && !root->right) // checks if the sum at the root is equal to target sum return sum-root->val == 0; - return hasPathSum(root->left,sum-root->val) || hasPathSum(root->right,sum-root->val); + return hasPathSum(root->left,sum-root->val) || hasPathSum(root->right,sum-root->val); // Traverses the tree to find the solution at one of the leaf nodes } From b5cec85ec680e2d92fafcb3455324354c62d75ca Mon Sep 17 00:00:00 2001 From: divyaa1511 <102688183+divyaa1511@users.noreply.github.com> Date: Tue, 4 Oct 2022 23:52:41 +0530 Subject: [PATCH 200/448] queue via stack implementation of a queue using two stack --- Python/queue via stack.py | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 Python/queue via stack.py diff --git a/Python/queue via stack.py b/Python/queue via stack.py new file mode 100644 index 00000000..79a26116 --- /dev/null +++ b/Python/queue via stack.py @@ -0,0 +1,32 @@ +# implement a queue using two stacks + +class Stack(): + def __init__(self): + self.list=[] + + def __len__(self): + return len(self.list) + + def push(self,item): + self.list.append(item) + + def pop(self): + if len(self.list)==0: + return None + return self.list.po() + +class QueueviaStack(): + def __init__(self): + self.inStack=Stack() + self.outStack=Stack() + + def enqueue(self,item): + self.inStacl.push(item) + + def dequeue(self): + while len(self.inStack): + self.outStack.push(self.inStack.pop()) + result=self.outStack.pop() + while len(self.outStack): + self.inStack.push(self.outStack.pop()) + return result \ No newline at end of file From e78138acc86c23d8c0e53a0361191f4832e379d1 Mon Sep 17 00:00:00 2001 From: shivaabhishek07 Date: Tue, 4 Oct 2022 23:54:12 +0530 Subject: [PATCH 201/448] Arranged all the cpp programs in a single file --- BFS_AND_DFS.cpp => CPP/BFS_AND_DFS.cpp | 188 +-- .../Decimal_to_Binary.cpp | 0 .../Dynamic Programming}/0-1_Knapsack.cpp | 0 .../5_Check_Palindrome.cpp | 68 +- .../Binary Tree Right Side View.cpp | 0 .../Circular Palindromes.cpp | 0 .../Dynamic Programming}/Coin_Change.cpp | 0 .../Count_Number_Of_Square_Matrices.cpp | 0 .../Dynamic Programming}/Edit Distance.cpp | 0 .../Dynamic Programming}/Egg_Drop.cpp | 0 .../Dynamic Programming}/House Robber II.cpp | 0 .../Dynamic Programming}/House Robber.cpp | 0 .../Knapsack - State Rotation | 0 .../Longest Increasing Subsequence.cpp | 0 .../Longest Increasing Subsequences.cpp | 104 +- .../Dynamic Programming}/Longest path - DP | 0 .../Longest-Palindromic-Subsequence.cpp | 0 .../Longest-Palindromic-Substring.cpp | 0 .../Longest_Common_Subsequence.cpp | 0 .../Longest_Increasing_Subsequence.cpp | 0 .../Matching - Bitmasking dp | 0 .../Dynamic Programming}/Maximal Square.cpp | 0 .../Minimum Time to Make Rope Colorful.cpp | 0 .../Minimum_Digit_Delete.cpp | 0 .../Number of Islands.cpp | 0 .../Dynamic Programming}/PaintingHouses.cpp | 0 .../Palindrome Partitioning II.cpp | 0 .../Pascal's Triangle.cpp | 0 .../Dynamic Programming}/Printing LCS | 0 .../Dynamic Programming}/Rod-Cutting.cpp | 0 .../Dynamic Programming}/Russian Doll.cpp | 104 +- .../Traping Rain Water.cpp | 0 .../Dynamic Programming}/burstBalloons.cpp | 0 .../Dynamic Programming}/climbingStairs.cpp | 0 .../Dynamic Programming}/fibonacci Num.cpp | 0 .../minimumPointsToReachDestination.cpp | 0 .../number_of_dice_rolls_with_target_sum.cpp | 0 .../Dynamic Programming}/uniquePath.cpp | 0 .../Dynamic Programming}/uniquePaths2.cpp | 0 .../Dynamic Programming}/word_break.cpp | 0 .../LINKED LIST}/Linked_list.cpp | 0 .../LinkedList}/all_singly_linkedlist.py | 0 {Maths => CPP/Maths}/ArrayStabilization.cpp | 0 {Maths => CPP/Maths}/CountDigit.cpp | 0 {Maths => CPP/Maths}/EvenArray.cpp | 0 {Maths => CPP/Maths}/EvenOdds.cpp | 0 .../Maths}/ModularExponentiation.cpp | 0 {Maths => CPP/Maths}/RequiredRemainder.cpp | 0 {Maths => CPP/Maths}/highest.cpp | 0 {Maths => CPP/Maths}/nextSimilar.cpp | 0 {Maths => CPP/Maths}/nge1_496.cpp | 48 +- {Maths => CPP/Maths}/nge2_503.cpp | 36 +- {Maths => CPP/Maths}/nge3_556.cpp | 38 +- {Maths => CPP/Maths}/power.cpp | 0 {Maths => CPP/Maths}/powerIterative.cpp | 0 {Maths => CPP/Maths}/primeFactor.cpp | 0 {Maths => CPP/Maths}/primeNo.cpp | 0 .../Maths}/reordered_power_of_2_869.cpp | 32 +- {Maths => CPP/Maths}/reverseInteger.cpp | 0 {Maths => CPP/Maths}/seiveOfEratothenes.cpp | 0 .../Maths}/trailingZeroInFactorial.cpp | 0 .../Maths}/xor_sum_of_all_pairs_and_1835.cpp | 20 +- SPOJ_ADAFRIEN.cpp => CPP/SPOJ_ADAFRIEN.cpp | 0 .../Pick max sum from both side.cpp | 0 {String => CPP/String}/BalanceBrackets.cpp | 0 {String => CPP/String}/Check_Subsequence.cpp | 0 {String => CPP/String}/KMPalgo.cpp | 0 {String => CPP/String}/Z-Algorithm.cpp | 0 {String => CPP/String}/angramSearch.cpp | 0 {String => CPP/String}/areRotation.cpp | 0 {Trees => CPP/Trees}/BalancedBinarytrees.cpp | 0 {Trees => CPP/Trees}/BinarySearchTree.cpp | 0 {Trees => CPP/Trees}/Diameter_of_tree.cpp | 0 {Trees => CPP/Trees}/Expression_tree/BST.c | 0 {Trees => CPP/Trees}/Expression_tree/BST.h | 0 {Trees => CPP/Trees}/Expression_tree/Makefile | 0 {Trees => CPP/Trees}/Expression_tree/Stack.c | 0 {Trees => CPP/Trees}/Expression_tree/Stack.h | 0 {Trees => CPP/Trees}/Expression_tree/main.c | 0 {Trees => CPP/Trees}/Inorder_Traversal.py | 0 {Trees => CPP/Trees}/Max_Depth_BinaryTree.cpp | 0 {Trees => CPP/Trees}/Maximum width of tree | 0 .../Trees}/Merge-Two-Binary-Trees.cpp | 0 .../Trees}/RecoverBinarySearchTree.cpp | 0 {Trees => CPP/Trees}/Same Tree.cpp | 40 +- {Trees => CPP/Trees}/TopView_of_tree.cpp | 0 {Trees => CPP/Trees}/average of each level | 0 {Trees => CPP/Trees}/children sum property | 0 {Trees => CPP/Trees}/inverting a binary tree | 0 {Trees => CPP/Trees}/kthMinimumElement.cpp | 0 .../Trees}/left_view_of_binary_tree.cpp | 0 {Trees => CPP/Trees}/treeDuplicate.java | 0 {Trees => CPP/Trees}/tree_foldable.cpp | 0 binarytreeuse.cpp => CPP/binarytreeuse.cpp | 1102 ++++++++--------- .../findPos/Namanjain6152.cpp | 1 + 95 files changed, 891 insertions(+), 890 deletions(-) rename BFS_AND_DFS.cpp => CPP/BFS_AND_DFS.cpp (96%) rename Decimal_to_Binary.cpp => CPP/Decimal_to_Binary.cpp (100%) rename {Dynamic Programming => CPP/Dynamic Programming}/0-1_Knapsack.cpp (100%) rename {Dynamic Programming => CPP/Dynamic Programming}/5_Check_Palindrome.cpp (94%) rename {Dynamic Programming => CPP/Dynamic Programming}/Binary Tree Right Side View.cpp (100%) rename {Dynamic Programming => CPP/Dynamic Programming}/Circular Palindromes.cpp (100%) rename {Dynamic Programming => CPP/Dynamic Programming}/Coin_Change.cpp (100%) rename {Dynamic Programming => CPP/Dynamic Programming}/Count_Number_Of_Square_Matrices.cpp (100%) rename {Dynamic Programming => CPP/Dynamic Programming}/Edit Distance.cpp (100%) rename {Dynamic Programming => CPP/Dynamic Programming}/Egg_Drop.cpp (100%) rename {Dynamic Programming => CPP/Dynamic Programming}/House Robber II.cpp (100%) rename {Dynamic Programming => CPP/Dynamic Programming}/House Robber.cpp (100%) rename {Dynamic Programming => CPP/Dynamic Programming}/Knapsack - State Rotation (100%) rename {Dynamic Programming => CPP/Dynamic Programming}/Longest Increasing Subsequence.cpp (100%) rename {Dynamic Programming => CPP/Dynamic Programming}/Longest Increasing Subsequences.cpp (96%) rename {Dynamic Programming => CPP/Dynamic Programming}/Longest path - DP (100%) rename {Dynamic Programming => CPP/Dynamic Programming}/Longest-Palindromic-Subsequence.cpp (100%) rename {Dynamic Programming => CPP/Dynamic Programming}/Longest-Palindromic-Substring.cpp (100%) rename {Dynamic Programming => CPP/Dynamic Programming}/Longest_Common_Subsequence.cpp (100%) rename {Dynamic Programming => CPP/Dynamic Programming}/Longest_Increasing_Subsequence.cpp (100%) rename {Dynamic Programming => CPP/Dynamic Programming}/Matching - Bitmasking dp (100%) rename {Dynamic Programming => CPP/Dynamic Programming}/Maximal Square.cpp (100%) rename {Dynamic Programming => CPP/Dynamic Programming}/Minimum Time to Make Rope Colorful.cpp (100%) rename {Dynamic Programming => CPP/Dynamic Programming}/Minimum_Digit_Delete.cpp (100%) rename {Dynamic Programming => CPP/Dynamic Programming}/Number of Islands.cpp (100%) rename {Dynamic Programming => CPP/Dynamic Programming}/PaintingHouses.cpp (100%) rename {Dynamic Programming => CPP/Dynamic Programming}/Palindrome Partitioning II.cpp (100%) rename {Dynamic Programming => CPP/Dynamic Programming}/Pascal's Triangle.cpp (100%) rename {Dynamic Programming => CPP/Dynamic Programming}/Printing LCS (100%) rename {Dynamic Programming => CPP/Dynamic Programming}/Rod-Cutting.cpp (100%) rename {Dynamic Programming => CPP/Dynamic Programming}/Russian Doll.cpp (96%) rename {Dynamic Programming => CPP/Dynamic Programming}/Traping Rain Water.cpp (100%) rename {Dynamic Programming => CPP/Dynamic Programming}/burstBalloons.cpp (100%) rename {Dynamic Programming => CPP/Dynamic Programming}/climbingStairs.cpp (100%) rename {Dynamic Programming => CPP/Dynamic Programming}/fibonacci Num.cpp (100%) rename {Dynamic Programming => CPP/Dynamic Programming}/minimumPointsToReachDestination.cpp (100%) rename {Dynamic Programming => CPP/Dynamic Programming}/number_of_dice_rolls_with_target_sum.cpp (100%) rename {Dynamic Programming => CPP/Dynamic Programming}/uniquePath.cpp (100%) rename {Dynamic Programming => CPP/Dynamic Programming}/uniquePaths2.cpp (100%) rename {Dynamic Programming => CPP/Dynamic Programming}/word_break.cpp (100%) rename {Linked List => CPP/LINKED LIST}/Linked_list.cpp (100%) rename {LinkedList => CPP/LinkedList}/all_singly_linkedlist.py (100%) rename {Maths => CPP/Maths}/ArrayStabilization.cpp (100%) rename {Maths => CPP/Maths}/CountDigit.cpp (100%) rename {Maths => CPP/Maths}/EvenArray.cpp (100%) rename {Maths => CPP/Maths}/EvenOdds.cpp (100%) rename {Maths => CPP/Maths}/ModularExponentiation.cpp (100%) rename {Maths => CPP/Maths}/RequiredRemainder.cpp (100%) rename {Maths => CPP/Maths}/highest.cpp (100%) rename {Maths => CPP/Maths}/nextSimilar.cpp (100%) rename {Maths => CPP/Maths}/nge1_496.cpp (96%) rename {Maths => CPP/Maths}/nge2_503.cpp (96%) rename {Maths => CPP/Maths}/nge3_556.cpp (96%) rename {Maths => CPP/Maths}/power.cpp (100%) rename {Maths => CPP/Maths}/powerIterative.cpp (100%) rename {Maths => CPP/Maths}/primeFactor.cpp (100%) rename {Maths => CPP/Maths}/primeNo.cpp (100%) rename {Maths => CPP/Maths}/reordered_power_of_2_869.cpp (96%) rename {Maths => CPP/Maths}/reverseInteger.cpp (100%) rename {Maths => CPP/Maths}/seiveOfEratothenes.cpp (100%) rename {Maths => CPP/Maths}/trailingZeroInFactorial.cpp (100%) rename {Maths => CPP/Maths}/xor_sum_of_all_pairs_and_1835.cpp (95%) rename SPOJ_ADAFRIEN.cpp => CPP/SPOJ_ADAFRIEN.cpp (100%) rename {Sliding Window => CPP/Sliding Window}/Pick max sum from both side.cpp (100%) rename {String => CPP/String}/BalanceBrackets.cpp (100%) rename {String => CPP/String}/Check_Subsequence.cpp (100%) rename {String => CPP/String}/KMPalgo.cpp (100%) rename {String => CPP/String}/Z-Algorithm.cpp (100%) rename {String => CPP/String}/angramSearch.cpp (100%) rename {String => CPP/String}/areRotation.cpp (100%) rename {Trees => CPP/Trees}/BalancedBinarytrees.cpp (100%) rename {Trees => CPP/Trees}/BinarySearchTree.cpp (100%) rename {Trees => CPP/Trees}/Diameter_of_tree.cpp (100%) rename {Trees => CPP/Trees}/Expression_tree/BST.c (100%) rename {Trees => CPP/Trees}/Expression_tree/BST.h (100%) rename {Trees => CPP/Trees}/Expression_tree/Makefile (100%) rename {Trees => CPP/Trees}/Expression_tree/Stack.c (100%) rename {Trees => CPP/Trees}/Expression_tree/Stack.h (100%) rename {Trees => CPP/Trees}/Expression_tree/main.c (100%) rename {Trees => CPP/Trees}/Inorder_Traversal.py (100%) rename {Trees => CPP/Trees}/Max_Depth_BinaryTree.cpp (100%) rename {Trees => CPP/Trees}/Maximum width of tree (100%) rename {Trees => CPP/Trees}/Merge-Two-Binary-Trees.cpp (100%) rename {Trees => CPP/Trees}/RecoverBinarySearchTree.cpp (100%) rename {Trees => CPP/Trees}/Same Tree.cpp (97%) rename {Trees => CPP/Trees}/TopView_of_tree.cpp (100%) rename {Trees => CPP/Trees}/average of each level (100%) rename {Trees => CPP/Trees}/children sum property (100%) rename {Trees => CPP/Trees}/inverting a binary tree (100%) rename {Trees => CPP/Trees}/kthMinimumElement.cpp (100%) rename {Trees => CPP/Trees}/left_view_of_binary_tree.cpp (100%) rename {Trees => CPP/Trees}/treeDuplicate.java (100%) rename {Trees => CPP/Trees}/tree_foldable.cpp (100%) rename binarytreeuse.cpp => CPP/binarytreeuse.cpp (95%) rename findPos/Namanjain6152.md => CPP/findPos/Namanjain6152.cpp (99%) diff --git a/BFS_AND_DFS.cpp b/CPP/BFS_AND_DFS.cpp similarity index 96% rename from BFS_AND_DFS.cpp rename to CPP/BFS_AND_DFS.cpp index 00c53478..7c7e2fa9 100644 --- a/BFS_AND_DFS.cpp +++ b/CPP/BFS_AND_DFS.cpp @@ -1,95 +1,95 @@ -#include -using namespace std; - -int v; //No. of Vertices - -void Add_edge(vector adj[], int a, int b) -{ - adj[a].push_back(b); -} - -/************************************* ALGORITHM FOR BREADTH FIRST SEARCH ******************************************************/ - -// Take the empty queue and bool type array (visit) initialise with FALSE. -// Push the starting node in the queue and set the value TRUE for this node in visited array. -// Pop out the front node of the queue and print the node. -// Push the adjacent node of pop node in queue which are not visited. Set the value TRUE in visited array of adding node. -// Repeat step 3 and 4 until the queue becomes empty. - -void bfs(int n, vectoradj[]) -{ - vector visit(v,false); - queue q; - q.push(n); - visit[n]=true; - while(!q.empty()) - { - n=q.front(); - cout< adj[]) -{ - vector visit(v,false); - stack s; - s.push(n); - visit[n]=true; - while(!s.empty()) - { - n=s.top(); - cout<>v; - vector adj[v]; - vector visit(v,false); - Add_edge(adj,0,1); - Add_edge(adj,0,2); - Add_edge(adj,1,2); - Add_edge(adj,2,0); - Add_edge(adj,2,3); - Add_edge(adj,3,3); - - int temp; - cout<<"Choose the vertex from you want to start traversing : "; - cin>>temp; - cout<<"\nBFS traversal is"<<" "; - bfs(temp,adj); - cout<<"\nDFS traversal is"<<" "; - dfs(temp,adj); - - return 0; +#include +using namespace std; + +int v; //No. of Vertices + +void Add_edge(vector adj[], int a, int b) +{ + adj[a].push_back(b); +} + +/************************************* ALGORITHM FOR BREADTH FIRST SEARCH ******************************************************/ + +// Take the empty queue and bool type array (visit) initialise with FALSE. +// Push the starting node in the queue and set the value TRUE for this node in visited array. +// Pop out the front node of the queue and print the node. +// Push the adjacent node of pop node in queue which are not visited. Set the value TRUE in visited array of adding node. +// Repeat step 3 and 4 until the queue becomes empty. + +void bfs(int n, vectoradj[]) +{ + vector visit(v,false); + queue q; + q.push(n); + visit[n]=true; + while(!q.empty()) + { + n=q.front(); + cout< adj[]) +{ + vector visit(v,false); + stack s; + s.push(n); + visit[n]=true; + while(!s.empty()) + { + n=s.top(); + cout<>v; + vector adj[v]; + vector visit(v,false); + Add_edge(adj,0,1); + Add_edge(adj,0,2); + Add_edge(adj,1,2); + Add_edge(adj,2,0); + Add_edge(adj,2,3); + Add_edge(adj,3,3); + + int temp; + cout<<"Choose the vertex from you want to start traversing : "; + cin>>temp; + cout<<"\nBFS traversal is"<<" "; + bfs(temp,adj); + cout<<"\nDFS traversal is"<<" "; + dfs(temp,adj); + + return 0; } \ No newline at end of file diff --git a/Decimal_to_Binary.cpp b/CPP/Decimal_to_Binary.cpp similarity index 100% rename from Decimal_to_Binary.cpp rename to CPP/Decimal_to_Binary.cpp diff --git a/Dynamic Programming/0-1_Knapsack.cpp b/CPP/Dynamic Programming/0-1_Knapsack.cpp similarity index 100% rename from Dynamic Programming/0-1_Knapsack.cpp rename to CPP/Dynamic Programming/0-1_Knapsack.cpp diff --git a/Dynamic Programming/5_Check_Palindrome.cpp b/CPP/Dynamic Programming/5_Check_Palindrome.cpp similarity index 94% rename from Dynamic Programming/5_Check_Palindrome.cpp rename to CPP/Dynamic Programming/5_Check_Palindrome.cpp index 0b82ec37..667a6c6b 100644 --- a/Dynamic Programming/5_Check_Palindrome.cpp +++ b/CPP/Dynamic Programming/5_Check_Palindrome.cpp @@ -1,35 +1,35 @@ -#include -using namespace std; - -// Method 1 -bool Palindrome(string s,int start,int end){ - if(start>=end){ - return true; - } - return (s[start]==s[end])&&(Palindrome(s,start+1,end-1)); -} - -// Method 2 -void pal(string s){ - int i=0,j=s.length()-1; - while(i<=j){ - if(s[i]!=s[j]){ - cout<<"String is not Palindrome"; - return ; - } - i++,j--; - } - cout<<"String is palindrome"; - return ; -} - -int main(){ - string s; - cin>>s; - cout< +using namespace std; + +// Method 1 +bool Palindrome(string s,int start,int end){ + if(start>=end){ + return true; + } + return (s[start]==s[end])&&(Palindrome(s,start+1,end-1)); +} + +// Method 2 +void pal(string s){ + int i=0,j=s.length()-1; + while(i<=j){ + if(s[i]!=s[j]){ + cout<<"String is not Palindrome"; + return ; + } + i++,j--; + } + cout<<"String is palindrome"; + return ; +} + +int main(){ + string s; + cin>>s; + cout< &nums) - { - vector> dp(nums.size()+3,vector(nums.size()+3,0)); - for(int curr= nums.size()-1;curr>=0;curr--) - { - for(int prev=curr-1;prev>=-1;prev--) - { - - int inc=0; - //include - if(prev==-1||nums[curr]>nums[prev]) - { - inc= 1+dp[curr+1][curr+1]; - } - int excl=dp[curr+1][prev+1]; - dp[curr][prev+1]=max(inc,excl); - - } - } - return dp[0][0]; - } - int solve(vector &nums,int i,int prev,vector> &dp) - { - //base condition - if(i>=nums.size()) - { - return 0; - } - if(dp[i][prev+1]!=-1) - { - return dp[i][prev+1]; - } - //exclude - int excl=solve(nums,i+1,prev,dp); - int inc=0; - //include - if(prev==-1||nums[i]>nums[prev]) - { - inc= 1+solve(nums,i+1,i,dp); - } - - return dp[i][prev+1]=max(inc,excl); - - } - int lengthOfLIS(vector& nums) { - // vector> dp(nums.size()+3,vector(nums.size()+3,-1)); - // return solve(nums,0,-1,dp); - return solvetab(nums); - - } +class Solution { +public: + int solvetab(vector &nums) + { + vector> dp(nums.size()+3,vector(nums.size()+3,0)); + for(int curr= nums.size()-1;curr>=0;curr--) + { + for(int prev=curr-1;prev>=-1;prev--) + { + + int inc=0; + //include + if(prev==-1||nums[curr]>nums[prev]) + { + inc= 1+dp[curr+1][curr+1]; + } + int excl=dp[curr+1][prev+1]; + dp[curr][prev+1]=max(inc,excl); + + } + } + return dp[0][0]; + } + int solve(vector &nums,int i,int prev,vector> &dp) + { + //base condition + if(i>=nums.size()) + { + return 0; + } + if(dp[i][prev+1]!=-1) + { + return dp[i][prev+1]; + } + //exclude + int excl=solve(nums,i+1,prev,dp); + int inc=0; + //include + if(prev==-1||nums[i]>nums[prev]) + { + inc= 1+solve(nums,i+1,i,dp); + } + + return dp[i][prev+1]=max(inc,excl); + + } + int lengthOfLIS(vector& nums) { + // vector> dp(nums.size()+3,vector(nums.size()+3,-1)); + // return solve(nums,0,-1,dp); + return solvetab(nums); + + } }; \ No newline at end of file diff --git a/Dynamic Programming/Longest path - DP b/CPP/Dynamic Programming/Longest path - DP similarity index 100% rename from Dynamic Programming/Longest path - DP rename to CPP/Dynamic Programming/Longest path - DP diff --git a/Dynamic Programming/Longest-Palindromic-Subsequence.cpp b/CPP/Dynamic Programming/Longest-Palindromic-Subsequence.cpp similarity index 100% rename from Dynamic Programming/Longest-Palindromic-Subsequence.cpp rename to CPP/Dynamic Programming/Longest-Palindromic-Subsequence.cpp diff --git a/Dynamic Programming/Longest-Palindromic-Substring.cpp b/CPP/Dynamic Programming/Longest-Palindromic-Substring.cpp similarity index 100% rename from Dynamic Programming/Longest-Palindromic-Substring.cpp rename to CPP/Dynamic Programming/Longest-Palindromic-Substring.cpp diff --git a/Dynamic Programming/Longest_Common_Subsequence.cpp b/CPP/Dynamic Programming/Longest_Common_Subsequence.cpp similarity index 100% rename from Dynamic Programming/Longest_Common_Subsequence.cpp rename to CPP/Dynamic Programming/Longest_Common_Subsequence.cpp diff --git a/Dynamic Programming/Longest_Increasing_Subsequence.cpp b/CPP/Dynamic Programming/Longest_Increasing_Subsequence.cpp similarity index 100% rename from Dynamic Programming/Longest_Increasing_Subsequence.cpp rename to CPP/Dynamic Programming/Longest_Increasing_Subsequence.cpp diff --git a/Dynamic Programming/Matching - Bitmasking dp b/CPP/Dynamic Programming/Matching - Bitmasking dp similarity index 100% rename from Dynamic Programming/Matching - Bitmasking dp rename to CPP/Dynamic Programming/Matching - Bitmasking dp diff --git a/Dynamic Programming/Maximal Square.cpp b/CPP/Dynamic Programming/Maximal Square.cpp similarity index 100% rename from Dynamic Programming/Maximal Square.cpp rename to CPP/Dynamic Programming/Maximal Square.cpp diff --git a/Dynamic Programming/Minimum Time to Make Rope Colorful.cpp b/CPP/Dynamic Programming/Minimum Time to Make Rope Colorful.cpp similarity index 100% rename from Dynamic Programming/Minimum Time to Make Rope Colorful.cpp rename to CPP/Dynamic Programming/Minimum Time to Make Rope Colorful.cpp diff --git a/Dynamic Programming/Minimum_Digit_Delete.cpp b/CPP/Dynamic Programming/Minimum_Digit_Delete.cpp similarity index 100% rename from Dynamic Programming/Minimum_Digit_Delete.cpp rename to CPP/Dynamic Programming/Minimum_Digit_Delete.cpp diff --git a/Dynamic Programming/Number of Islands.cpp b/CPP/Dynamic Programming/Number of Islands.cpp similarity index 100% rename from Dynamic Programming/Number of Islands.cpp rename to CPP/Dynamic Programming/Number of Islands.cpp diff --git a/Dynamic Programming/PaintingHouses.cpp b/CPP/Dynamic Programming/PaintingHouses.cpp similarity index 100% rename from Dynamic Programming/PaintingHouses.cpp rename to CPP/Dynamic Programming/PaintingHouses.cpp diff --git a/Dynamic Programming/Palindrome Partitioning II.cpp b/CPP/Dynamic Programming/Palindrome Partitioning II.cpp similarity index 100% rename from Dynamic Programming/Palindrome Partitioning II.cpp rename to CPP/Dynamic Programming/Palindrome Partitioning II.cpp diff --git a/Dynamic Programming/Pascal's Triangle.cpp b/CPP/Dynamic Programming/Pascal's Triangle.cpp similarity index 100% rename from Dynamic Programming/Pascal's Triangle.cpp rename to CPP/Dynamic Programming/Pascal's Triangle.cpp diff --git a/Dynamic Programming/Printing LCS b/CPP/Dynamic Programming/Printing LCS similarity index 100% rename from Dynamic Programming/Printing LCS rename to CPP/Dynamic Programming/Printing LCS diff --git a/Dynamic Programming/Rod-Cutting.cpp b/CPP/Dynamic Programming/Rod-Cutting.cpp similarity index 100% rename from Dynamic Programming/Rod-Cutting.cpp rename to CPP/Dynamic Programming/Rod-Cutting.cpp diff --git a/Dynamic Programming/Russian Doll.cpp b/CPP/Dynamic Programming/Russian Doll.cpp similarity index 96% rename from Dynamic Programming/Russian Doll.cpp rename to CPP/Dynamic Programming/Russian Doll.cpp index 6ae23346..ebc6232d 100644 --- a/Dynamic Programming/Russian Doll.cpp +++ b/CPP/Dynamic Programming/Russian Doll.cpp @@ -1,53 +1,53 @@ -class Solution { -public: - int solvetab(vector &nums) - { - vector> dp(nums.size()+3,vector(nums.size()+3,0)); - for(int curr= nums.size()-1;curr>=0;curr--) - { - for(int prev=curr-1;prev>=-1;prev--) - { - - int inc=0; - //include - if(prev==-1||nums[curr]>nums[prev]) - { - inc= 1+dp[curr+1][curr+1]; - } - int excl=dp[curr+1][prev+1]; - dp[curr][prev+1]=max(inc,excl); - - } - } - return dp[0][0]; - } - int solve(vector &nums,int i,int prev,vector> &dp) - { - //base condition - if(i>=nums.size()) - { - return 0; - } - if(dp[i][prev+1]!=-1) - { - return dp[i][prev+1]; - } - //exclude - int excl=solve(nums,i+1,prev,dp); - int inc=0; - //include - if(prev==-1||nums[i]>nums[prev]) - { - inc= 1+solve(nums,i+1,i,dp); - } - - return dp[i][prev+1]=max(inc,excl); - - } - int lengthOfLIS(vector& nums) { - // vector> dp(nums.size()+3,vector(nums.size()+3,-1)); - // return solve(nums,0,-1,dp); - return solvetab(nums); - - } +class Solution { +public: + int solvetab(vector &nums) + { + vector> dp(nums.size()+3,vector(nums.size()+3,0)); + for(int curr= nums.size()-1;curr>=0;curr--) + { + for(int prev=curr-1;prev>=-1;prev--) + { + + int inc=0; + //include + if(prev==-1||nums[curr]>nums[prev]) + { + inc= 1+dp[curr+1][curr+1]; + } + int excl=dp[curr+1][prev+1]; + dp[curr][prev+1]=max(inc,excl); + + } + } + return dp[0][0]; + } + int solve(vector &nums,int i,int prev,vector> &dp) + { + //base condition + if(i>=nums.size()) + { + return 0; + } + if(dp[i][prev+1]!=-1) + { + return dp[i][prev+1]; + } + //exclude + int excl=solve(nums,i+1,prev,dp); + int inc=0; + //include + if(prev==-1||nums[i]>nums[prev]) + { + inc= 1+solve(nums,i+1,i,dp); + } + + return dp[i][prev+1]=max(inc,excl); + + } + int lengthOfLIS(vector& nums) { + // vector> dp(nums.size()+3,vector(nums.size()+3,-1)); + // return solve(nums,0,-1,dp); + return solvetab(nums); + + } }; \ No newline at end of file diff --git a/Dynamic Programming/Traping Rain Water.cpp b/CPP/Dynamic Programming/Traping Rain Water.cpp similarity index 100% rename from Dynamic Programming/Traping Rain Water.cpp rename to CPP/Dynamic Programming/Traping Rain Water.cpp diff --git a/Dynamic Programming/burstBalloons.cpp b/CPP/Dynamic Programming/burstBalloons.cpp similarity index 100% rename from Dynamic Programming/burstBalloons.cpp rename to CPP/Dynamic Programming/burstBalloons.cpp diff --git a/Dynamic Programming/climbingStairs.cpp b/CPP/Dynamic Programming/climbingStairs.cpp similarity index 100% rename from Dynamic Programming/climbingStairs.cpp rename to CPP/Dynamic Programming/climbingStairs.cpp diff --git a/Dynamic Programming/fibonacci Num.cpp b/CPP/Dynamic Programming/fibonacci Num.cpp similarity index 100% rename from Dynamic Programming/fibonacci Num.cpp rename to CPP/Dynamic Programming/fibonacci Num.cpp diff --git a/Dynamic Programming/minimumPointsToReachDestination.cpp b/CPP/Dynamic Programming/minimumPointsToReachDestination.cpp similarity index 100% rename from Dynamic Programming/minimumPointsToReachDestination.cpp rename to CPP/Dynamic Programming/minimumPointsToReachDestination.cpp diff --git a/Dynamic Programming/number_of_dice_rolls_with_target_sum.cpp b/CPP/Dynamic Programming/number_of_dice_rolls_with_target_sum.cpp similarity index 100% rename from Dynamic Programming/number_of_dice_rolls_with_target_sum.cpp rename to CPP/Dynamic Programming/number_of_dice_rolls_with_target_sum.cpp diff --git a/Dynamic Programming/uniquePath.cpp b/CPP/Dynamic Programming/uniquePath.cpp similarity index 100% rename from Dynamic Programming/uniquePath.cpp rename to CPP/Dynamic Programming/uniquePath.cpp diff --git a/Dynamic Programming/uniquePaths2.cpp b/CPP/Dynamic Programming/uniquePaths2.cpp similarity index 100% rename from Dynamic Programming/uniquePaths2.cpp rename to CPP/Dynamic Programming/uniquePaths2.cpp diff --git a/Dynamic Programming/word_break.cpp b/CPP/Dynamic Programming/word_break.cpp similarity index 100% rename from Dynamic Programming/word_break.cpp rename to CPP/Dynamic Programming/word_break.cpp diff --git a/Linked List/Linked_list.cpp b/CPP/LINKED LIST/Linked_list.cpp similarity index 100% rename from Linked List/Linked_list.cpp rename to CPP/LINKED LIST/Linked_list.cpp diff --git a/LinkedList/all_singly_linkedlist.py b/CPP/LinkedList/all_singly_linkedlist.py similarity index 100% rename from LinkedList/all_singly_linkedlist.py rename to CPP/LinkedList/all_singly_linkedlist.py diff --git a/Maths/ArrayStabilization.cpp b/CPP/Maths/ArrayStabilization.cpp similarity index 100% rename from Maths/ArrayStabilization.cpp rename to CPP/Maths/ArrayStabilization.cpp diff --git a/Maths/CountDigit.cpp b/CPP/Maths/CountDigit.cpp similarity index 100% rename from Maths/CountDigit.cpp rename to CPP/Maths/CountDigit.cpp diff --git a/Maths/EvenArray.cpp b/CPP/Maths/EvenArray.cpp similarity index 100% rename from Maths/EvenArray.cpp rename to CPP/Maths/EvenArray.cpp diff --git a/Maths/EvenOdds.cpp b/CPP/Maths/EvenOdds.cpp similarity index 100% rename from Maths/EvenOdds.cpp rename to CPP/Maths/EvenOdds.cpp diff --git a/Maths/ModularExponentiation.cpp b/CPP/Maths/ModularExponentiation.cpp similarity index 100% rename from Maths/ModularExponentiation.cpp rename to CPP/Maths/ModularExponentiation.cpp diff --git a/Maths/RequiredRemainder.cpp b/CPP/Maths/RequiredRemainder.cpp similarity index 100% rename from Maths/RequiredRemainder.cpp rename to CPP/Maths/RequiredRemainder.cpp diff --git a/Maths/highest.cpp b/CPP/Maths/highest.cpp similarity index 100% rename from Maths/highest.cpp rename to CPP/Maths/highest.cpp diff --git a/Maths/nextSimilar.cpp b/CPP/Maths/nextSimilar.cpp similarity index 100% rename from Maths/nextSimilar.cpp rename to CPP/Maths/nextSimilar.cpp diff --git a/Maths/nge1_496.cpp b/CPP/Maths/nge1_496.cpp similarity index 96% rename from Maths/nge1_496.cpp rename to CPP/Maths/nge1_496.cpp index 601f123c..b43787f2 100644 --- a/Maths/nge1_496.cpp +++ b/CPP/Maths/nge1_496.cpp @@ -1,25 +1,25 @@ -class Solution { -public: - vector nextGreaterElement(vector& nums1, vector& nums2) { - int n = nums1.size(), m = nums2.size(); - vector res(n, -1); - stack st; - unordered_map mp; - for(int i = 0; i < m; i++){ - int val = nums2[i]; - while(!st.empty() and val > st.top()){ - mp[st.top()] = val; - st.pop(); - } - st.push(val); - } - for(int i = 0; i < n; i++){ - int val = nums1[i]; - if(mp.find(val) != mp.end()){ - int nge = mp[val]; - res[i] = nge; - } - } - return res; - } +class Solution { +public: + vector nextGreaterElement(vector& nums1, vector& nums2) { + int n = nums1.size(), m = nums2.size(); + vector res(n, -1); + stack st; + unordered_map mp; + for(int i = 0; i < m; i++){ + int val = nums2[i]; + while(!st.empty() and val > st.top()){ + mp[st.top()] = val; + st.pop(); + } + st.push(val); + } + for(int i = 0; i < n; i++){ + int val = nums1[i]; + if(mp.find(val) != mp.end()){ + int nge = mp[val]; + res[i] = nge; + } + } + return res; + } }; \ No newline at end of file diff --git a/Maths/nge2_503.cpp b/CPP/Maths/nge2_503.cpp similarity index 96% rename from Maths/nge2_503.cpp rename to CPP/Maths/nge2_503.cpp index 1b9f180d..ed98961a 100644 --- a/Maths/nge2_503.cpp +++ b/CPP/Maths/nge2_503.cpp @@ -1,19 +1,19 @@ -class Solution { -public: - vector nextGreaterElements(vector& nums) { - int n = nums.size(); - vector res(n, -1); - stack st; - for(int i = 2*n-1; i > -1; i--){ - while(!st.empty() and nums[i%n] >= st.top()){ - st.pop(); - } - if(i < n){ - if(!st.empty()) - res[i] = st.top(); - } - st.push(nums[i%n]); - } - return res; - } +class Solution { +public: + vector nextGreaterElements(vector& nums) { + int n = nums.size(); + vector res(n, -1); + stack st; + for(int i = 2*n-1; i > -1; i--){ + while(!st.empty() and nums[i%n] >= st.top()){ + st.pop(); + } + if(i < n){ + if(!st.empty()) + res[i] = st.top(); + } + st.push(nums[i%n]); + } + return res; + } }; \ No newline at end of file diff --git a/Maths/nge3_556.cpp b/CPP/Maths/nge3_556.cpp similarity index 96% rename from Maths/nge3_556.cpp rename to CPP/Maths/nge3_556.cpp index a46ccc01..732e2a08 100644 --- a/Maths/nge3_556.cpp +++ b/CPP/Maths/nge3_556.cpp @@ -1,20 +1,20 @@ -class Solution { -public: - int nextGreaterElement(int num) { - vector v; - while(num){ - v.push_back(num%10); - num /= 10; - } - if(is_sorted(v.begin(), v.end())) - return -1; - reverse(v.begin(), v.end()); - next_permutation(v.begin(), v.end()); - long long temp = 0; - for(int i = 0; i < v.size(); i++){ - temp = temp*10 + v[i]; - } - if(temp > INT_MAX) return -1; - return temp; - } +class Solution { +public: + int nextGreaterElement(int num) { + vector v; + while(num){ + v.push_back(num%10); + num /= 10; + } + if(is_sorted(v.begin(), v.end())) + return -1; + reverse(v.begin(), v.end()); + next_permutation(v.begin(), v.end()); + long long temp = 0; + for(int i = 0; i < v.size(); i++){ + temp = temp*10 + v[i]; + } + if(temp > INT_MAX) return -1; + return temp; + } }; \ No newline at end of file diff --git a/Maths/power.cpp b/CPP/Maths/power.cpp similarity index 100% rename from Maths/power.cpp rename to CPP/Maths/power.cpp diff --git a/Maths/powerIterative.cpp b/CPP/Maths/powerIterative.cpp similarity index 100% rename from Maths/powerIterative.cpp rename to CPP/Maths/powerIterative.cpp diff --git a/Maths/primeFactor.cpp b/CPP/Maths/primeFactor.cpp similarity index 100% rename from Maths/primeFactor.cpp rename to CPP/Maths/primeFactor.cpp diff --git a/Maths/primeNo.cpp b/CPP/Maths/primeNo.cpp similarity index 100% rename from Maths/primeNo.cpp rename to CPP/Maths/primeNo.cpp diff --git a/Maths/reordered_power_of_2_869.cpp b/CPP/Maths/reordered_power_of_2_869.cpp similarity index 96% rename from Maths/reordered_power_of_2_869.cpp rename to CPP/Maths/reordered_power_of_2_869.cpp index 2c441144..4b0076ea 100644 --- a/Maths/reordered_power_of_2_869.cpp +++ b/CPP/Maths/reordered_power_of_2_869.cpp @@ -1,17 +1,17 @@ -class Solution { -public: - bool reorderedPowerOf2(int n) { - map mp; - mp["1"]++; - int num = 1; - while(mp.size() != 30){ - num *= 2; - string s = to_string(num); - sort(s.begin(), s.end()); - mp[s]++; - } - string s = to_string(n); - sort(s.begin(), s.end()); - return (mp.find(s) != mp.end()); - } +class Solution { +public: + bool reorderedPowerOf2(int n) { + map mp; + mp["1"]++; + int num = 1; + while(mp.size() != 30){ + num *= 2; + string s = to_string(num); + sort(s.begin(), s.end()); + mp[s]++; + } + string s = to_string(n); + sort(s.begin(), s.end()); + return (mp.find(s) != mp.end()); + } }; \ No newline at end of file diff --git a/Maths/reverseInteger.cpp b/CPP/Maths/reverseInteger.cpp similarity index 100% rename from Maths/reverseInteger.cpp rename to CPP/Maths/reverseInteger.cpp diff --git a/Maths/seiveOfEratothenes.cpp b/CPP/Maths/seiveOfEratothenes.cpp similarity index 100% rename from Maths/seiveOfEratothenes.cpp rename to CPP/Maths/seiveOfEratothenes.cpp diff --git a/Maths/trailingZeroInFactorial.cpp b/CPP/Maths/trailingZeroInFactorial.cpp similarity index 100% rename from Maths/trailingZeroInFactorial.cpp rename to CPP/Maths/trailingZeroInFactorial.cpp diff --git a/Maths/xor_sum_of_all_pairs_and_1835.cpp b/CPP/Maths/xor_sum_of_all_pairs_and_1835.cpp similarity index 95% rename from Maths/xor_sum_of_all_pairs_and_1835.cpp rename to CPP/Maths/xor_sum_of_all_pairs_and_1835.cpp index ae8f414f..a3213d3b 100644 --- a/Maths/xor_sum_of_all_pairs_and_1835.cpp +++ b/CPP/Maths/xor_sum_of_all_pairs_and_1835.cpp @@ -1,11 +1,11 @@ -class Solution { -public: - int getXORSum(vector& arr1, vector& arr2) { - int a = 0, b = 0; - for(auto i : arr1) - a = a ^ i; - for(auto j : arr2) - b = b ^ j; - return a & b; - } +class Solution { +public: + int getXORSum(vector& arr1, vector& arr2) { + int a = 0, b = 0; + for(auto i : arr1) + a = a ^ i; + for(auto j : arr2) + b = b ^ j; + return a & b; + } }; \ No newline at end of file diff --git a/SPOJ_ADAFRIEN.cpp b/CPP/SPOJ_ADAFRIEN.cpp similarity index 100% rename from SPOJ_ADAFRIEN.cpp rename to CPP/SPOJ_ADAFRIEN.cpp diff --git a/Sliding Window/Pick max sum from both side.cpp b/CPP/Sliding Window/Pick max sum from both side.cpp similarity index 100% rename from Sliding Window/Pick max sum from both side.cpp rename to CPP/Sliding Window/Pick max sum from both side.cpp diff --git a/String/BalanceBrackets.cpp b/CPP/String/BalanceBrackets.cpp similarity index 100% rename from String/BalanceBrackets.cpp rename to CPP/String/BalanceBrackets.cpp diff --git a/String/Check_Subsequence.cpp b/CPP/String/Check_Subsequence.cpp similarity index 100% rename from String/Check_Subsequence.cpp rename to CPP/String/Check_Subsequence.cpp diff --git a/String/KMPalgo.cpp b/CPP/String/KMPalgo.cpp similarity index 100% rename from String/KMPalgo.cpp rename to CPP/String/KMPalgo.cpp diff --git a/String/Z-Algorithm.cpp b/CPP/String/Z-Algorithm.cpp similarity index 100% rename from String/Z-Algorithm.cpp rename to CPP/String/Z-Algorithm.cpp diff --git a/String/angramSearch.cpp b/CPP/String/angramSearch.cpp similarity index 100% rename from String/angramSearch.cpp rename to CPP/String/angramSearch.cpp diff --git a/String/areRotation.cpp b/CPP/String/areRotation.cpp similarity index 100% rename from String/areRotation.cpp rename to CPP/String/areRotation.cpp diff --git a/Trees/BalancedBinarytrees.cpp b/CPP/Trees/BalancedBinarytrees.cpp similarity index 100% rename from Trees/BalancedBinarytrees.cpp rename to CPP/Trees/BalancedBinarytrees.cpp diff --git a/Trees/BinarySearchTree.cpp b/CPP/Trees/BinarySearchTree.cpp similarity index 100% rename from Trees/BinarySearchTree.cpp rename to CPP/Trees/BinarySearchTree.cpp diff --git a/Trees/Diameter_of_tree.cpp b/CPP/Trees/Diameter_of_tree.cpp similarity index 100% rename from Trees/Diameter_of_tree.cpp rename to CPP/Trees/Diameter_of_tree.cpp diff --git a/Trees/Expression_tree/BST.c b/CPP/Trees/Expression_tree/BST.c similarity index 100% rename from Trees/Expression_tree/BST.c rename to CPP/Trees/Expression_tree/BST.c diff --git a/Trees/Expression_tree/BST.h b/CPP/Trees/Expression_tree/BST.h similarity index 100% rename from Trees/Expression_tree/BST.h rename to CPP/Trees/Expression_tree/BST.h diff --git a/Trees/Expression_tree/Makefile b/CPP/Trees/Expression_tree/Makefile similarity index 100% rename from Trees/Expression_tree/Makefile rename to CPP/Trees/Expression_tree/Makefile diff --git a/Trees/Expression_tree/Stack.c b/CPP/Trees/Expression_tree/Stack.c similarity index 100% rename from Trees/Expression_tree/Stack.c rename to CPP/Trees/Expression_tree/Stack.c diff --git a/Trees/Expression_tree/Stack.h b/CPP/Trees/Expression_tree/Stack.h similarity index 100% rename from Trees/Expression_tree/Stack.h rename to CPP/Trees/Expression_tree/Stack.h diff --git a/Trees/Expression_tree/main.c b/CPP/Trees/Expression_tree/main.c similarity index 100% rename from Trees/Expression_tree/main.c rename to CPP/Trees/Expression_tree/main.c diff --git a/Trees/Inorder_Traversal.py b/CPP/Trees/Inorder_Traversal.py similarity index 100% rename from Trees/Inorder_Traversal.py rename to CPP/Trees/Inorder_Traversal.py diff --git a/Trees/Max_Depth_BinaryTree.cpp b/CPP/Trees/Max_Depth_BinaryTree.cpp similarity index 100% rename from Trees/Max_Depth_BinaryTree.cpp rename to CPP/Trees/Max_Depth_BinaryTree.cpp diff --git a/Trees/Maximum width of tree b/CPP/Trees/Maximum width of tree similarity index 100% rename from Trees/Maximum width of tree rename to CPP/Trees/Maximum width of tree diff --git a/Trees/Merge-Two-Binary-Trees.cpp b/CPP/Trees/Merge-Two-Binary-Trees.cpp similarity index 100% rename from Trees/Merge-Two-Binary-Trees.cpp rename to CPP/Trees/Merge-Two-Binary-Trees.cpp diff --git a/Trees/RecoverBinarySearchTree.cpp b/CPP/Trees/RecoverBinarySearchTree.cpp similarity index 100% rename from Trees/RecoverBinarySearchTree.cpp rename to CPP/Trees/RecoverBinarySearchTree.cpp diff --git a/Trees/Same Tree.cpp b/CPP/Trees/Same Tree.cpp similarity index 97% rename from Trees/Same Tree.cpp rename to CPP/Trees/Same Tree.cpp index 9cd4fb4a..ca7ad87f 100644 --- a/Trees/Same Tree.cpp +++ b/CPP/Trees/Same Tree.cpp @@ -1,21 +1,21 @@ -/** Question Link:-https://leetcode.com/problems/same-tree/ - * Definition for a binary tree node. - * struct TreeNode { - * int val; - * TreeNode *left; - * TreeNode *right; - * TreeNode() : val(0), left(nullptr), right(nullptr) {} - * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} - * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} - * }; - */ -class Solution { -public: - bool isSameTree(TreeNode* p, TreeNode* q) { - if(p==NULL || q==NULL) - { - return (p==q); - } - return ((p->val==q->val) && isSameTree(p->left,q->left) && isSameTree(p->right,q->right)); - } +/** Question Link:-https://leetcode.com/problems/same-tree/ + * Definition for a binary tree node. + * struct TreeNode { + * int val; + * TreeNode *left; + * TreeNode *right; + * TreeNode() : val(0), left(nullptr), right(nullptr) {} + * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} + * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} + * }; + */ +class Solution { +public: + bool isSameTree(TreeNode* p, TreeNode* q) { + if(p==NULL || q==NULL) + { + return (p==q); + } + return ((p->val==q->val) && isSameTree(p->left,q->left) && isSameTree(p->right,q->right)); + } }; \ No newline at end of file diff --git a/Trees/TopView_of_tree.cpp b/CPP/Trees/TopView_of_tree.cpp similarity index 100% rename from Trees/TopView_of_tree.cpp rename to CPP/Trees/TopView_of_tree.cpp diff --git a/Trees/average of each level b/CPP/Trees/average of each level similarity index 100% rename from Trees/average of each level rename to CPP/Trees/average of each level diff --git a/Trees/children sum property b/CPP/Trees/children sum property similarity index 100% rename from Trees/children sum property rename to CPP/Trees/children sum property diff --git a/Trees/inverting a binary tree b/CPP/Trees/inverting a binary tree similarity index 100% rename from Trees/inverting a binary tree rename to CPP/Trees/inverting a binary tree diff --git a/Trees/kthMinimumElement.cpp b/CPP/Trees/kthMinimumElement.cpp similarity index 100% rename from Trees/kthMinimumElement.cpp rename to CPP/Trees/kthMinimumElement.cpp diff --git a/Trees/left_view_of_binary_tree.cpp b/CPP/Trees/left_view_of_binary_tree.cpp similarity index 100% rename from Trees/left_view_of_binary_tree.cpp rename to CPP/Trees/left_view_of_binary_tree.cpp diff --git a/Trees/treeDuplicate.java b/CPP/Trees/treeDuplicate.java similarity index 100% rename from Trees/treeDuplicate.java rename to CPP/Trees/treeDuplicate.java diff --git a/Trees/tree_foldable.cpp b/CPP/Trees/tree_foldable.cpp similarity index 100% rename from Trees/tree_foldable.cpp rename to CPP/Trees/tree_foldable.cpp diff --git a/binarytreeuse.cpp b/CPP/binarytreeuse.cpp similarity index 95% rename from binarytreeuse.cpp rename to CPP/binarytreeuse.cpp index cc5a58ff..38437443 100644 --- a/binarytreeuse.cpp +++ b/CPP/binarytreeuse.cpp @@ -1,551 +1,551 @@ -#include -#include"binarytree.h" -using namespace std; - -class node -{ - public: - int data; - node* next; -}; - -void printTree(binarytree*root) -{ - if(root==NULL) - return; - - cout<data<<":"; - if(root->left) - cout<<"L"<left->data<<","; - - if(root->right) - cout<<"R"<right->data<<","; - - cout<left); - printTree(root->right); -} - -void printlevelwise(binarytree*root) -{ - queue*> pendingnode; - pendingnode.push(root); - - while(pendingnode.size()!=0) - { - binarytree*front=pendingnode.front(); - cout<data<<":"; - pendingnode.pop(); - if(front->left) - { - cout<<"L"<left->data<<","; - pendingnode.push(front->left); - } - - if(front->right) - { - cout<<"R"<right->data<<","; - pendingnode.push(front->right); - } - - cout<* takeinput() -{ - int rootdata; - cout<<"enter data:"; - cin>>rootdata; - - if(rootdata==-1) - return NULL; - - binarytree*root=new binarytree (rootdata); - binarytree*leftchild=takeinput(); - binarytree*rightchild=takeinput(); - - root->left=leftchild; - root->right=rightchild; - - return root; - -} - - -binarytree*takeinputlevelwise() -{ - cout<<"enter root data : "; - int rootdata; - cin>>rootdata; - binarytree*root=new binarytree(rootdata); - queue*>pendingnodes; - pendingnodes.push(root); - while(pendingnodes.size()!=0) - { - binarytree*front=pendingnodes.front(); - pendingnodes.pop(); - cout<data<<" : "; - int child; - cin>>child; - if(child!=-1) - { - binarytree*leftchild=new binarytree(child); - front->left=leftchild; - pendingnodes.push(leftchild); - } - cout<data<<" : "; - cin>>child; - if(child!=-1) - { - binarytree*rightchild=new binarytree(child); - front->right=rightchild; - pendingnodes.push(rightchild); - } - } - - return root; - -} - -int countnodes(binarytree *root) -{ - if(root==NULL) - return 0; - - return 1 + countnodes(root->left) + countnodes(root->right); -} - -void postoder(binarytree*root) -{ - if(root==NULL) - return; - - postoder(root->left); - postoder(root->right); - cout<data<<" "; -} - -void preoder(binarytree*root) -{ - if(root==NULL) - return; - - cout<data<<" "; - preoder(root->left); - preoder(root->right); -} - -void inoder(binarytree*root) -{ - if(root==NULL) - return; - - inoder(root->left); - cout<data<<" "; - inoder(root->right); -} - -binarytree * treebuilding(int *in, int *pre, int preS,int preE,int inS,int inE) -{ - if(inS>inE) - { - return NULL; - } - - int rootdata=pre[preS]; - binarytree*root=new binarytree(rootdata); - - int rootindex=-1; - for(int i=inS;i<=inE;i++) - { - if(rootdata==in[i]) - { - rootindex=i; - break; - } - } - - - int lpreS=preS+1; - int linS = inS; - int linE = rootindex-1; - int lpreE = linE-linS+lpreS; - int rpreS = lpreE +1; - int rpreE = preE; - int rinS = rootindex +1; - int rinE = inE; - - - root->left=treebuilding(in,pre,lpreS,lpreE,linS,linE); - root->right=treebuilding(in,pre,rpreS,rpreE,rinS,rinE); - - return root; - - -} - -binarytree * buildtree(int *in,int *pre,int size) -{ - return treebuilding(in , pre , 0 , size -1 , 0 , size - 1); -} - -int height(binarytree*root) -{ - if(root==NULL) - return 0; - - return 1+max(height(root->left),height(root->right)); -} - -pair heightdiameter(binarytree*root) -{ - if(root==NULL) - { - pair p; - p.first=0; - p.second=0; - return p; - } - - pair leftans=heightdiameter(root->left); - pair rightans=heightdiameter(root->right); - - int leftheight=leftans.first; - int leftdiameter=leftans.second; - int rightheight=rightans.first; - int rightdiameter=rightans.second; - - int height=1 + max(leftheight,rightheight); - int diameter = max(leftheight+rightheight,max(leftdiameter,rightdiameter)); - - pairp; - p.first=height; - p.second=diameter; - return p; -} - -int sumofallnodes(binarytree*root) -{ - if(root==NULL) - { - return 0; - } - - return root->data + sumofallnodes(root->left) + sumofallnodes(root->right); - -} - -int maxnode(binarytree*root) -{ - if(root==NULL) - return -1; - - int maximum=root->data; - - maximum=max(maximum,max(maxnode(root->left),maxnode(root->right))); - return maximum; - -} - -bool findanode(binarytree*root,int x) -{ - if(root==NULL) - return false; - - if(root->data==x) - return true; - - return findanode(root->left,x) || findanode(root->right,x); -} - -pair balancedhelper(binarytree*root) -{ - if(root==NULL) - { - pair p; - p.first=true; - p.second=0; - return p; - } - - pair leftans=balancedhelper(root->left); - pair rightans=balancedhelper(root->right); - - int leftheight=leftans.second; - int rightheight=rightans.second; - - if(abs(leftheight-rightheight)>1) - { - pair p; - p.first=false; - p.second=1+max(leftheight,rightheight); - return p; - } - - pairans; - ans.first=leftans.first && rightans.first; - ans.second=1+max(leftans.second,rightans.second); - - return ans; - -} - -bool istreebalanced(binarytree*root) -{ - pairans=balancedhelper(root); - return ans.first; -} - -void leveloder(binarytree*root) -{ - queue*> pendingnodes; - pendingnodes.push(root); - pendingnodes.push(NULL); - - while(pendingnodes.size()!=0) - { - binarytree*front=pendingnodes.front(); - pendingnodes.pop(); - - if(pendingnodes.size()==0) - break; - - if(front==NULL) - { - cout<data<<" "; - if(front->left) - pendingnodes.push(front->left); - - if(front->right) - pendingnodes.push(front->right); - } - } -} - -binarytree*removeleafnodes(binarytree*root) -{ - if(root==NULL) - { - return NULL; - } - - if(root->left==NULL && root->right==NULL) - { - delete root; - return NULL; - } - - root->left=removeleafnodes(root->left); - root->right=removeleafnodes(root->right); - - return root; -} - -vector levelwiselinkedlist(binarytree*root) -{ - node *head=NULL; - node *tail=NULL; - vectoroutput; - queue*>pendingnodes; - pendingnodes.push(root); - pendingnodes.push(NULL); - - while(pendingnodes.size()!=0) - { - binarytree*front=pendingnodes.front(); - pendingnodes.pop(); - - if(pendingnodes.size()==0) - { - output.push_back(head); - break; - } - - if(front==NULL) - { - output.push_back(head); - head=NULL; - tail=NULL; - pendingnodes.push(NULL); - } - else - { - node *p=new node; - p->data=front->data; - p->next=NULL; - - if(head==NULL) - { - head=tail=p; - } - else - { - tail->next=p; - tail=p; - } - - if(front->left) - pendingnodes.push(front->left); - - if(front->right) - pendingnodes.push(front->right); - - } - } - - return output; -} - -void displaylinkedlist(node * p) -{ - while(p) - { - cout<data<<" "; - p=p->next; - } - cout<*root) -{ - stack*>s1; - stack*>s2; - - s1.push(root); - - while(s1.size()!=0 || s2.size()!=0) - { - while(s1.size()!=0) - { - binarytree*front=s1.top(); - s1.pop(); - cout<data<<" "; - if(front->left) - s2.push(front->left); - - if(front->right) - s2.push(front->right); - - } - - cout<*front=s2.top(); - s2.pop(); - cout<data<<" "; - if(front->right) - s1.push(front->right); - - if(front->left) - s1.push(front->left); - } - - cout<*root) -{ - stack*>s1; - stack*>s2; - - s1.push(root); - while(s1.size()!=0 || s2.size()!=0) - { - while(s1.size()!=0) - { - binarytree*front=s1.top(); - s1.pop(); - if(front->left) - s2.push(front->left); - - if(front->right) - s2.push(front->right); - - } - - if(s2.size()==1) - { - cout<data<<" "; - } - - while(s2.size()!=0) - { - binarytree*front=s2.top(); - s2.pop(); - if(front->left) - s1.push(front->left); - - if(front->right) - s1.push(front->right); - - } - - if(s1.size()==1) - { - cout<data<<" "; - } - - - - } - -} - -//////------------------PRACTICE QUESTIONS ON BINARY TREE ---------------------------------- -binarytree* create_insert_duplicate_nodes(binarytree*root) -{ - if(root==NULL) - return NULL; - - - binarytree*leftside=root->left; - binarytree*duplicatenode=new binarytree(root->data); - root->left=duplicatenode; - - duplicatenode->left= create_insert_duplicate_nodes(leftside); - root->right = create_insert_duplicate_nodes(root->right); - - return root; - -} - -int pair_sum_binarytree(binarytree*root,int x) -{ - //TODO pair sum binarytree -} - - -int main() -{ - // 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 - // 1 2 3 4 5 6 7 -1 -1 -1 -1 8 9 -1 -1 -1 -1 -1 -1 - //8 5 10 2 6 -1 6 -1 -1 -1 7 -1 -1 -1 -1 - // 1 2 3 4 5 -1 -1 -1 -1 -1 -1 - // 1 2 3 4 5 -1 8 -1 -1 6 -1 -1 -1 -1 -1 - // int in[]={4,2,5,1,8,6,9,33,7}; - // int pre[]={1,2,4,5,33,6,8,9,7}; - // binarytree*root=buildtree(in,pre,9); - - binarytree*root=takeinputlevelwise(); - printlevelwise(root); - cout< +#include"binarytree.h" +using namespace std; + +class node +{ + public: + int data; + node* next; +}; + +void printTree(binarytree*root) +{ + if(root==NULL) + return; + + cout<data<<":"; + if(root->left) + cout<<"L"<left->data<<","; + + if(root->right) + cout<<"R"<right->data<<","; + + cout<left); + printTree(root->right); +} + +void printlevelwise(binarytree*root) +{ + queue*> pendingnode; + pendingnode.push(root); + + while(pendingnode.size()!=0) + { + binarytree*front=pendingnode.front(); + cout<data<<":"; + pendingnode.pop(); + if(front->left) + { + cout<<"L"<left->data<<","; + pendingnode.push(front->left); + } + + if(front->right) + { + cout<<"R"<right->data<<","; + pendingnode.push(front->right); + } + + cout<* takeinput() +{ + int rootdata; + cout<<"enter data:"; + cin>>rootdata; + + if(rootdata==-1) + return NULL; + + binarytree*root=new binarytree (rootdata); + binarytree*leftchild=takeinput(); + binarytree*rightchild=takeinput(); + + root->left=leftchild; + root->right=rightchild; + + return root; + +} + + +binarytree*takeinputlevelwise() +{ + cout<<"enter root data : "; + int rootdata; + cin>>rootdata; + binarytree*root=new binarytree(rootdata); + queue*>pendingnodes; + pendingnodes.push(root); + while(pendingnodes.size()!=0) + { + binarytree*front=pendingnodes.front(); + pendingnodes.pop(); + cout<data<<" : "; + int child; + cin>>child; + if(child!=-1) + { + binarytree*leftchild=new binarytree(child); + front->left=leftchild; + pendingnodes.push(leftchild); + } + cout<data<<" : "; + cin>>child; + if(child!=-1) + { + binarytree*rightchild=new binarytree(child); + front->right=rightchild; + pendingnodes.push(rightchild); + } + } + + return root; + +} + +int countnodes(binarytree *root) +{ + if(root==NULL) + return 0; + + return 1 + countnodes(root->left) + countnodes(root->right); +} + +void postoder(binarytree*root) +{ + if(root==NULL) + return; + + postoder(root->left); + postoder(root->right); + cout<data<<" "; +} + +void preoder(binarytree*root) +{ + if(root==NULL) + return; + + cout<data<<" "; + preoder(root->left); + preoder(root->right); +} + +void inoder(binarytree*root) +{ + if(root==NULL) + return; + + inoder(root->left); + cout<data<<" "; + inoder(root->right); +} + +binarytree * treebuilding(int *in, int *pre, int preS,int preE,int inS,int inE) +{ + if(inS>inE) + { + return NULL; + } + + int rootdata=pre[preS]; + binarytree*root=new binarytree(rootdata); + + int rootindex=-1; + for(int i=inS;i<=inE;i++) + { + if(rootdata==in[i]) + { + rootindex=i; + break; + } + } + + + int lpreS=preS+1; + int linS = inS; + int linE = rootindex-1; + int lpreE = linE-linS+lpreS; + int rpreS = lpreE +1; + int rpreE = preE; + int rinS = rootindex +1; + int rinE = inE; + + + root->left=treebuilding(in,pre,lpreS,lpreE,linS,linE); + root->right=treebuilding(in,pre,rpreS,rpreE,rinS,rinE); + + return root; + + +} + +binarytree * buildtree(int *in,int *pre,int size) +{ + return treebuilding(in , pre , 0 , size -1 , 0 , size - 1); +} + +int height(binarytree*root) +{ + if(root==NULL) + return 0; + + return 1+max(height(root->left),height(root->right)); +} + +pair heightdiameter(binarytree*root) +{ + if(root==NULL) + { + pair p; + p.first=0; + p.second=0; + return p; + } + + pair leftans=heightdiameter(root->left); + pair rightans=heightdiameter(root->right); + + int leftheight=leftans.first; + int leftdiameter=leftans.second; + int rightheight=rightans.first; + int rightdiameter=rightans.second; + + int height=1 + max(leftheight,rightheight); + int diameter = max(leftheight+rightheight,max(leftdiameter,rightdiameter)); + + pairp; + p.first=height; + p.second=diameter; + return p; +} + +int sumofallnodes(binarytree*root) +{ + if(root==NULL) + { + return 0; + } + + return root->data + sumofallnodes(root->left) + sumofallnodes(root->right); + +} + +int maxnode(binarytree*root) +{ + if(root==NULL) + return -1; + + int maximum=root->data; + + maximum=max(maximum,max(maxnode(root->left),maxnode(root->right))); + return maximum; + +} + +bool findanode(binarytree*root,int x) +{ + if(root==NULL) + return false; + + if(root->data==x) + return true; + + return findanode(root->left,x) || findanode(root->right,x); +} + +pair balancedhelper(binarytree*root) +{ + if(root==NULL) + { + pair p; + p.first=true; + p.second=0; + return p; + } + + pair leftans=balancedhelper(root->left); + pair rightans=balancedhelper(root->right); + + int leftheight=leftans.second; + int rightheight=rightans.second; + + if(abs(leftheight-rightheight)>1) + { + pair p; + p.first=false; + p.second=1+max(leftheight,rightheight); + return p; + } + + pairans; + ans.first=leftans.first && rightans.first; + ans.second=1+max(leftans.second,rightans.second); + + return ans; + +} + +bool istreebalanced(binarytree*root) +{ + pairans=balancedhelper(root); + return ans.first; +} + +void leveloder(binarytree*root) +{ + queue*> pendingnodes; + pendingnodes.push(root); + pendingnodes.push(NULL); + + while(pendingnodes.size()!=0) + { + binarytree*front=pendingnodes.front(); + pendingnodes.pop(); + + if(pendingnodes.size()==0) + break; + + if(front==NULL) + { + cout<data<<" "; + if(front->left) + pendingnodes.push(front->left); + + if(front->right) + pendingnodes.push(front->right); + } + } +} + +binarytree*removeleafnodes(binarytree*root) +{ + if(root==NULL) + { + return NULL; + } + + if(root->left==NULL && root->right==NULL) + { + delete root; + return NULL; + } + + root->left=removeleafnodes(root->left); + root->right=removeleafnodes(root->right); + + return root; +} + +vector levelwiselinkedlist(binarytree*root) +{ + node *head=NULL; + node *tail=NULL; + vectoroutput; + queue*>pendingnodes; + pendingnodes.push(root); + pendingnodes.push(NULL); + + while(pendingnodes.size()!=0) + { + binarytree*front=pendingnodes.front(); + pendingnodes.pop(); + + if(pendingnodes.size()==0) + { + output.push_back(head); + break; + } + + if(front==NULL) + { + output.push_back(head); + head=NULL; + tail=NULL; + pendingnodes.push(NULL); + } + else + { + node *p=new node; + p->data=front->data; + p->next=NULL; + + if(head==NULL) + { + head=tail=p; + } + else + { + tail->next=p; + tail=p; + } + + if(front->left) + pendingnodes.push(front->left); + + if(front->right) + pendingnodes.push(front->right); + + } + } + + return output; +} + +void displaylinkedlist(node * p) +{ + while(p) + { + cout<data<<" "; + p=p->next; + } + cout<*root) +{ + stack*>s1; + stack*>s2; + + s1.push(root); + + while(s1.size()!=0 || s2.size()!=0) + { + while(s1.size()!=0) + { + binarytree*front=s1.top(); + s1.pop(); + cout<data<<" "; + if(front->left) + s2.push(front->left); + + if(front->right) + s2.push(front->right); + + } + + cout<*front=s2.top(); + s2.pop(); + cout<data<<" "; + if(front->right) + s1.push(front->right); + + if(front->left) + s1.push(front->left); + } + + cout<*root) +{ + stack*>s1; + stack*>s2; + + s1.push(root); + while(s1.size()!=0 || s2.size()!=0) + { + while(s1.size()!=0) + { + binarytree*front=s1.top(); + s1.pop(); + if(front->left) + s2.push(front->left); + + if(front->right) + s2.push(front->right); + + } + + if(s2.size()==1) + { + cout<data<<" "; + } + + while(s2.size()!=0) + { + binarytree*front=s2.top(); + s2.pop(); + if(front->left) + s1.push(front->left); + + if(front->right) + s1.push(front->right); + + } + + if(s1.size()==1) + { + cout<data<<" "; + } + + + + } + +} + +//////------------------PRACTICE QUESTIONS ON BINARY TREE ---------------------------------- +binarytree* create_insert_duplicate_nodes(binarytree*root) +{ + if(root==NULL) + return NULL; + + + binarytree*leftside=root->left; + binarytree*duplicatenode=new binarytree(root->data); + root->left=duplicatenode; + + duplicatenode->left= create_insert_duplicate_nodes(leftside); + root->right = create_insert_duplicate_nodes(root->right); + + return root; + +} + +int pair_sum_binarytree(binarytree*root,int x) +{ + //TODO pair sum binarytree +} + + +int main() +{ + // 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 + // 1 2 3 4 5 6 7 -1 -1 -1 -1 8 9 -1 -1 -1 -1 -1 -1 + //8 5 10 2 6 -1 6 -1 -1 -1 7 -1 -1 -1 -1 + // 1 2 3 4 5 -1 -1 -1 -1 -1 -1 + // 1 2 3 4 5 -1 8 -1 -1 6 -1 -1 -1 -1 -1 + // int in[]={4,2,5,1,8,6,9,33,7}; + // int pre[]={1,2,4,5,33,6,8,9,7}; + // binarytree*root=buildtree(in,pre,9); + + binarytree*root=takeinputlevelwise(); + printlevelwise(root); + cout< firstAndLastPosition(vector& arr, int n, int k) return {ans1,ans2}; } + From 606479045c5c0e9c4894df64b420ab932cbdbb64 Mon Sep 17 00:00:00 2001 From: precisecharmer <89693336+precisecharmer@users.noreply.github.com> Date: Tue, 4 Oct 2022 23:57:44 +0530 Subject: [PATCH 202/448] Add disjoint_set.cpp --- disjoint set - Copy/code.cpp | 102 +++++++++++++++++++++++++++++++++ disjoint set - Copy/readme.txt | 8 +++ 2 files changed, 110 insertions(+) create mode 100644 disjoint set - Copy/code.cpp create mode 100644 disjoint set - Copy/readme.txt diff --git a/disjoint set - Copy/code.cpp b/disjoint set - Copy/code.cpp new file mode 100644 index 00000000..119a8b17 --- /dev/null +++ b/disjoint set - Copy/code.cpp @@ -0,0 +1,102 @@ +// This section is for Disjoint set data structure +// when we find parent of any number in worst case we go O(n) so if for all the numbers on the path we directly make their parent as root +// so when we make M number of operations and take thier average complexity that is alpha(n) which <= 4 for even biggest values +// their is no difference in code except the part where we find parent there we add one more line for changing parent of every node on +// the path + +#include +using namespace std; +#define ll long long +const int inf = 1e9 + 7; + +int find(vector &parent, int x) +{ + if (parent[x] == x) + { + return x; + } + parent[x] = find(parent, parent[x]); + return parent[x]; +} + +void union_num(vector &parent, vector &rank, int num1, int num2) +{ + int fparent = find(parent, num1); + int sparent = find(parent, num2); + if (fparent == sparent) + { + return; + } + if (rank[fparent] < rank[sparent]) + { + parent[fparent] = sparent; + } + else if (rank[fparent] > rank[sparent]) + { + parent[sparent] = fparent; + } + else + { + parent[fparent] = sparent; + rank[sparent]++; + } +} + +void solve() +{ + int n = 8; // 0 - 7 + vector parent(n), rank(n, 0); + for (int i = 0; i < n; i++) + { + parent[i] = i; + } + int total; + cin >> total; + while (total--) + { + int choice; + cin >> choice; + if (choice == 1) + { + // union + int num1, num2; + cin >> num1 >> num2; + union_num(parent, rank, num1, num2); + } + else + { + // find + int num1, num2; + cin >> num1 >> num2; + int fparent = find(parent, num1), sparent = find(parent, num2); + + if (fparent == sparent) + { + cout << "They are in same group!!" << endl; + } + else + { + cout << "They are not in same group!!" << endl; + } + } + + cout << "Check parent array: " << endl; + for (int i = 0; i < parent.size(); i++) + { + cout << parent[i] << " "; + } + cout << endl; + cout << "Check Rank array: " << endl; + for (int i = 0; i < rank.size(); i++) + { + cout << rank[i] << " "; + } + cout << endl; + } +} + +int main() +{ + solve(); + return 0; +} \ No newline at end of file diff --git a/disjoint set - Copy/readme.txt b/disjoint set - Copy/readme.txt new file mode 100644 index 00000000..d195e2ff --- /dev/null +++ b/disjoint set - Copy/readme.txt @@ -0,0 +1,8 @@ +This section is for Disjoint set data structure + + +First one is basic one which adds first over second whithout any optimisation + +second one sees height of tree and add according to that + +Third one makes average time complexity <= 4 because it makes parent of every node as root during any normal find function \ No newline at end of file From 3ce72cb37d7fd71abe56d80e97c4056ef4d0c78b Mon Sep 17 00:00:00 2001 From: rohansrivastava5491 <33935946+rohansrivastava5491@users.noreply.github.com> Date: Tue, 4 Oct 2022 23:59:08 +0530 Subject: [PATCH 203/448] floyd warshall shortest path algorithm in python --- Python/floyd_warshal.py | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 Python/floyd_warshal.py diff --git a/Python/floyd_warshal.py b/Python/floyd_warshal.py new file mode 100644 index 00000000..51c8e271 --- /dev/null +++ b/Python/floyd_warshal.py @@ -0,0 +1,37 @@ +# Floyd Warshall Algorithm in python + + +# The number of vertices +nV = 4 + +INF = 999 + + +# Algorithm implementation +def floyd_warshall(G): + distance = list(map(lambda i: list(map(lambda j: j, i)), G)) + + # Adding vertices individually + for k in range(nV): + for i in range(nV): + for j in range(nV): + distance[i][j] = min(distance[i][j], distance[i][k] + distance[k][j]) + print_solution(distance) + + +# Printing the solution +def print_solution(distance): + for i in range(nV): + for j in range(nV): + if(distance[i][j] == INF): + print("INF", end=" ") + else: + print(distance[i][j], end=" ") + print(" ") + + +G = [[0, 3, INF, 5], + [2, 0, INF, 4], + [INF, 1, 0, INF], + [INF, INF, 2, 0]] +floyd_warshall(G) From d3c5de08cf3e048cb177525abf2aaf55e4bcb5d9 Mon Sep 17 00:00:00 2001 From: Adithyan Madhu <66241061+scopophobic@users.noreply.github.com> Date: Wed, 5 Oct 2022 00:00:14 +0530 Subject: [PATCH 204/448] Create Best Time to Buy and Sell Stock.cpp --- .../Best Time to Buy and Sell Stock.cpp | 127 ++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 Leetcode-solutions/Binary-search/Best Time to Buy and Sell Stock.cpp diff --git a/Leetcode-solutions/Binary-search/Best Time to Buy and Sell Stock.cpp b/Leetcode-solutions/Binary-search/Best Time to Buy and Sell Stock.cpp new file mode 100644 index 00000000..95f39e72 --- /dev/null +++ b/Leetcode-solutions/Binary-search/Best Time to Buy and Sell Stock.cpp @@ -0,0 +1,127 @@ +/** +Say you have an array for which the ith element is the price of a given stock on day i. + +If you were only permitted to complete at most one transaction (i.e., buy one and sell one share of the stock), design an algorithm to find the maximum profit. + +Note that you cannot sell a stock before you buy one. + +Example 1: + +Input: [7,1,5,3,6,4] +Output: 5 +Explanation: Buy on day 2 (price = 1) and sell on day 5 (price = 6), profit = 6-1 = 5. + Not 7-1 = 6, as selling price needs to be larger than buying price. +Example 2: + +Input: [7,6,4,3,1] +Output: 0 +Explanation: In this case, no transaction is done, i.e. max profit = 0. +**/ + +//Runtime: 8 ms, faster than 99.32% of C++ online submissions for Best Time to Buy and Sell Stock. +//Memory Usage: 9.4 MB, less than 94.64% of C++ online submissions for Best Time to Buy and Sell Stock. + +class Solution { +public: + int maxProfit(vector& prices) { + if(prices.size() == 0) return 0; + + int ans = 0; + + int start = prices[0], end = prices[0]; + + for(int i = 0; i < prices.size(); i++){ + if(prices[i] < start){ + //restart as session + ans = max(ans, end - start); + start = prices[i]; + end = prices[i]; + }else{ + //continue current session + end = max(end, prices[i]); + } + } + ans = max(ans, end - start); + return ans; + } +}; + +/** +Approach 2: One Pass +Algorithm + +Say the given array is: + +[7, 1, 5, 3, 6, 4] + +If we plot the numbers of the given array on a graph, we get: + +The points of interest are the peaks and valleys in the given graph. We need to find the largest peak following the smallest valley. We can maintain two variables - minprice and maxprofit corresponding to the smallest valley and maximum profit (maximum difference between selling price and minprice) obtained so far respectively. +**/ + +/** +Time complexity : O(n). Only a single pass is needed. +Space complexity : O(1). Only two variables are used. +**/ + + +class Solution { +public: + int maxProfit(vector& prices) { + int valley = INT_MAX; + int ans = 0; + for(int i = 0; i < prices.size(); i++){ + if(prices[i] < valley){ + valley = prices[i]; + }else if(prices[i] - valley > ans){ + ans = prices[i] - valley; + } + } + return ans; + } +}; + +//Greedy +//Runtime: 4 ms, faster than 97.14% of C++ online submissions for Best Time to Buy and Sell Stock. +//Memory Usage: 7.5 MB, less than 100.00% of C++ online submissions for Best Time to Buy and Sell Stock. +class Solution { +public: + int maxProfit(vector& prices) { + int n = prices.size(); + + int maxToTail = 0; + int profit, maxProfit = 0; + + for(int i = n-1; i >= 0; i--){ + maxToTail = max(maxToTail, prices[i]); + profit = max(maxToTail - prices[i], 0); + maxProfit = max(maxProfit, profit); + } + + return maxProfit; + } +}; + +//Greedy +//Runtime: 8 ms, faster than 49.52% of C++ online submissions for Best Time to Buy and Sell Stock. +//Memory Usage: 13 MB, less than 5.51% of C++ online submissions for Best Time to Buy and Sell Stock. +class Solution { +public: + int maxProfit(vector& prices) { + int ans = 0; + int buy = INT_MAX; + int cash = 0; + + for(int price : prices){ + /* + meaningless for first iteration, + in which buy is not set + */ + cash = max(cash, price-buy); + buy = min(buy, price); + ans = max(ans, cash); + } + + return ans; + } +}; From f6fa1af2335b13a1fb48dd1f23efd2add2f4fcc4 Mon Sep 17 00:00:00 2001 From: Sparsh kishore kumar <47140660+sparsh308@users.noreply.github.com> Date: Wed, 5 Oct 2022 00:19:26 +0530 Subject: [PATCH 205/448] Create leetcode_Valid Parentheses --- Java/leetcode_Valid Parentheses | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 Java/leetcode_Valid Parentheses diff --git a/Java/leetcode_Valid Parentheses b/Java/leetcode_Valid Parentheses new file mode 100644 index 00000000..b63bb316 --- /dev/null +++ b/Java/leetcode_Valid Parentheses @@ -0,0 +1,23 @@ +class Solution { + bool isValid(tring s) { + stack st; + for(int i = 0; i < s.length(); i++){ + if(s[i] == '(' || s[i] == '{' || s[i] == '['){ + st.push(s[i]); + } + + else if(!st.empty()){ + if((s[i] == ')' && st.top() == '(') || (s[i] == '}' && st.top() == '{') || (s[i] == ']' && st.top() == '[') ){ + st.pop(); + } + else{ + return false; + } + } + else{ + return false; + } + } + return st.empty(); + } +} From 5cb03adb0f44040a5f021ce2a02e1fb8e1ab1c0e Mon Sep 17 00:00:00 2001 From: Vishwajeet Shivaji Hogale Date: Wed, 5 Oct 2022 00:25:18 +0530 Subject: [PATCH 206/448] Two sum 2 --- CPP/arrays/Two sum 2/twoSum.cpp | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 CPP/arrays/Two sum 2/twoSum.cpp diff --git a/CPP/arrays/Two sum 2/twoSum.cpp b/CPP/arrays/Two sum 2/twoSum.cpp new file mode 100644 index 00000000..c226101d --- /dev/null +++ b/CPP/arrays/Two sum 2/twoSum.cpp @@ -0,0 +1,30 @@ +#include +#include +using namespace std; +vector twoSum(vector& numbers, int target) { + vector res; + int n = numbers.size(); + int low = 0,high = n - 1; + while(lowtarget) + high -= 1; + else if(sum numbers({2,3,4}); + int target = 6; + vector res = twoSum(numbers,target); + for(auto x:res) + cout< Date: Wed, 5 Oct 2022 00:31:42 +0530 Subject: [PATCH 207/448] Create Sudoku-Solver.cpp --- Sudoku-Solver.cpp | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 Sudoku-Solver.cpp diff --git a/Sudoku-Solver.cpp b/Sudoku-Solver.cpp new file mode 100644 index 00000000..abb9adb5 --- /dev/null +++ b/Sudoku-Solver.cpp @@ -0,0 +1,33 @@ +class Solution { +public: + void solveSudoku(vector>& board) { + solve(board); + } + + bool solve(vector>& board){ + for(int i=0; i>& board, int row, int col){ + for(int i=0; i<9; i++){ + if(board[i][col] == c) return false; + if(board[row][i] == c) return false; + if(board[3*(row/3)+(i/3)][3*(col/3)+(i%3)] == c) return false; + } + return true; + } +}; From 874108caf1402fe4c790128293a60369f974de38 Mon Sep 17 00:00:00 2001 From: codeX1616 Date: Wed, 5 Oct 2022 00:35:46 +0530 Subject: [PATCH 208/448] codeX1616-Optimized approach to check if a number is an exponent of two --- CPP/OptimizedExponentOfTwoCheck.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 CPP/OptimizedExponentOfTwoCheck.cpp diff --git a/CPP/OptimizedExponentOfTwoCheck.cpp b/CPP/OptimizedExponentOfTwoCheck.cpp new file mode 100644 index 00000000..e2a5abec --- /dev/null +++ b/CPP/OptimizedExponentOfTwoCheck.cpp @@ -0,0 +1,13 @@ +#include +using namespace std; + +bool isAnExponentOfTwo(int n) { + return ((n & (n-1)) == 0); +} + +int main() { + int n; + cin >> n; + cout << (isAnExponentOfTwo(n) ? "YES" : "NO") << endl; + return 0; +} \ No newline at end of file From 8bbe797d65323d7239a016644221891883eddde8 Mon Sep 17 00:00:00 2001 From: pkm774 Date: Wed, 5 Oct 2022 00:31:29 +0530 Subject: [PATCH 209/448] CPP/recursion: Implementation of Classic Sudoku Solver in C++ Signed-off-by: pkm774 --- CPP/recursion/Classic_Sudoke_Solver/README.md | 35 +++++ .../Classic_Sudoke_Solver/Sudoku_Solver.cpp | 143 ++++++++++++++++++ 2 files changed, 178 insertions(+) create mode 100644 CPP/recursion/Classic_Sudoke_Solver/README.md create mode 100644 CPP/recursion/Classic_Sudoke_Solver/Sudoku_Solver.cpp diff --git a/CPP/recursion/Classic_Sudoke_Solver/README.md b/CPP/recursion/Classic_Sudoke_Solver/README.md new file mode 100644 index 00000000..354e5e45 --- /dev/null +++ b/CPP/recursion/Classic_Sudoke_Solver/README.md @@ -0,0 +1,35 @@ +## Classic Sudoku Solver. + +Implementation of Classic Sudoku Solver (9X9 Size) in C++. + +Sample Input : +```bash +Enter Unsolved Sudoku Matrix: +5 3 0 0 7 0 0 0 0 +6 0 0 1 9 5 0 0 0 +0 9 8 0 0 0 0 6 0 +8 0 0 0 6 0 0 0 3 +4 0 0 8 0 3 0 0 1 +7 0 0 0 2 0 0 0 6 +0 6 0 0 0 0 2 8 0 +0 0 0 4 1 9 0 0 5 +0 0 0 0 8 0 0 7 9 +``` + +Sample Output : +```bash +Solved Sudoku matrix: +----------------------- +5 3 4 | 6 7 8 | 9 1 2 | +6 7 2 | 1 9 5 | 3 4 8 | +1 9 8 | 3 4 2 | 5 6 7 | +----------------------- +8 5 9 | 7 6 1 | 4 2 3 | +4 2 6 | 8 5 3 | 7 9 1 | +7 1 3 | 9 2 4 | 8 5 6 | +----------------------- +9 6 1 | 5 3 7 | 2 8 4 | +2 8 7 | 4 1 9 | 6 3 5 | +3 4 5 | 2 8 6 | 1 7 9 | +----------------------- +``` diff --git a/CPP/recursion/Classic_Sudoke_Solver/Sudoku_Solver.cpp b/CPP/recursion/Classic_Sudoke_Solver/Sudoku_Solver.cpp new file mode 100644 index 00000000..4563e334 --- /dev/null +++ b/CPP/recursion/Classic_Sudoke_Solver/Sudoku_Solver.cpp @@ -0,0 +1,143 @@ +#include +#include +#include + +constexpr auto size = 9; + +// Function for unsolved sudoku input. +void take_inp(std::vector>& arr, int size) { + for (int i = 0; i < size; ++i) { + for (int j = 0; j < size; ++j) { + std::cin >> arr[i][j]; + } + } +} + +// Function to print solved sudoku. +void print_vec(std::vector>& arr) { + int r_digit = 0, c_digit = 0; + + std::cout << "-----------------------\n"; + for (int i = 0; i < arr.size(); ++i) { + for (int j = 0; j < arr[i].size(); ++j) { + std::cout << arr[i][j] << " "; + ++c_digit; + if (c_digit == 3) { + std::cout << "| "; + c_digit = 0; + } + } + std::cout << std::endl; + ++r_digit; + if (r_digit == 3) { + std::cout << "-----------------------\n"; + r_digit = 0; + } + } +} + +bool value_canbe_placed(std::vector>& arr, int size, int i, int j, int val) { + // horizontal linear check + for (int l = 0; l < size; ++l) { + if (arr[i][l] == val) { + return false; + } + } + + // vertical linear check + for (int m = 0; m < size; ++m) { + if (arr[m][j] == val) { + return false; + } + } + + // checking inside 3X3 maTRix of 9X9 sudoku + int root = sqrt(size); + int mrow = (i / root) * root; + int mcol = (j / root) * root; + + for (int r = mrow; r <= mrow + 2; ++r) { + for (int c = mcol; c <= mcol + 2; ++c) { + if (arr[r][c] == val) { + return false; + } + } + } + + // value not present + return true; +} + +bool solveSudoku(std::vector>& arr, int size, int i, int j) { + // --> base case + // when row become equal to size, print + // solved sudoku matrix and return to main. + if (i == size) { + std::cout << "\nSolved Sudoku matrix:\n"; + print_vec(arr); + // sudoku solved, return true + return true; + } + + + // --> recursive case + // Case: if value can be filled + + // check column + // if value of j is reached to 9 i.e, > 8 in range 0 to 8 for 9 values + // increment the value of i to check for next row + if (j == size) { + return solveSudoku(arr, size, i + 1, 0); + } + + // if value of arr[i][j] is not equal to 0 then + // check for next column element of that row + if (arr[i][j] != 0) { + return solveSudoku(arr, size, i, j + 1); + } + + // if value of arr[i][j] equal to 0 then + // check if the num ranging from 1 to 9 can be placed at those index + // if number can be placed at those index then place that number + // again check for next column element of that row + // if next element can be placed return true else reset value at those index + else { + for (int num = 1; num <= size; ++num) { + if (value_canbe_placed(arr, size, i, j, num)) { + arr[i][j] = num; + bool nextValue = solveSudoku(arr, size, i, j + 1); + if (nextValue) { + return true; + } + else { + arr[i][j] = 0; + } + } + } + } + + // --> If value can't be filled return false + return false; +} + +int main() { + // 2d vector inp for storing sudoku. + // Size 9X9. + std::vector col(size); + std::vector> inp(size, col); + + // Function to take unsolved sudoku matrix. + std::cout << "Enter Unsolved Sudoku Matrix:\n"; + take_inp(inp, size); + + // Solve sudoku matrix and print it. + // Arguments passed are : 2D input matrix + // : Size of board. + // : Starting row. + // : Starting column. + if (!solveSudoku(inp, size, 0, 0)) { + std::cout << "Input Unsolved Sudoku have no solution. "; + } + + return 0; +} From 07f2c5c1d0974a8b20c9c4bbfe8a474cd1f9ccbf Mon Sep 17 00:00:00 2001 From: ParasSharma Date: Wed, 5 Oct 2022 00:45:01 +0530 Subject: [PATCH 210/448] BFS --- CPP/BFS in C++/BFS.cpp | 63 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 CPP/BFS in C++/BFS.cpp diff --git a/CPP/BFS in C++/BFS.cpp b/CPP/BFS in C++/BFS.cpp new file mode 100644 index 00000000..ea69e4e0 --- /dev/null +++ b/CPP/BFS in C++/BFS.cpp @@ -0,0 +1,63 @@ +#include +#include + +using namespace std; + +class Graph { + int numVertices; + list* adjLists; + bool* visited; + + public: + Graph(int vertices); + void addEdge(int src, int dest); + void BFS(int startVertex); +}; + +Graph::Graph(int vertices) { + numVertices = vertices; + adjLists = new list[vertices]; +} +void Graph::addEdge(int src, int dest) { + adjLists[src].push_back(dest); + adjLists[dest].push_back(src); +} + +void Graph::BFS(int startVertex) { + visited = new bool[numVertices]; + for (int i = 0; i < numVertices; i++) + visited[i] = false; + + list queue; + + visited[startVertex] = true; + queue.push_back(startVertex); + + list::iterator i; + + while (!queue.empty()) { + int currVertex = queue.front(); + cout << "Visited " << currVertex << " "; + queue.pop_front(); + + for (i = adjLists[currVertex].begin(); i != adjLists[currVertex].end(); ++i) { + int adjVertex = *i; + if (!visited[adjVertex]) { + visited[adjVertex] = true; + queue.push_back(adjVertex); + } + } + } +} + +int main() { + Graph g(4); + g.addEdge(0, 1); + g.addEdge(0, 2); + g.addEdge(1, 2); + g.addEdge(2, 0); + g.addEdge(2, 3); + g.addEdge(3, 3); + g.BFS(2); + return 0; +} \ No newline at end of file From f516bb6f4b7d74cc5949abddd85b5c196c4c28c5 Mon Sep 17 00:00:00 2001 From: ParasSharma Date: Wed, 5 Oct 2022 00:46:46 +0530 Subject: [PATCH 211/448] BFS --- {CPP/BFS in C++ => BFS in C++}/BFS.cpp | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {CPP/BFS in C++ => BFS in C++}/BFS.cpp (100%) diff --git a/CPP/BFS in C++/BFS.cpp b/BFS in C++/BFS.cpp similarity index 100% rename from CPP/BFS in C++/BFS.cpp rename to BFS in C++/BFS.cpp From 7a129210f405517da3925daff0827669f76a904c Mon Sep 17 00:00:00 2001 From: pranava7 Date: Wed, 5 Oct 2022 00:50:27 +0530 Subject: [PATCH 212/448] LCSubstring solution added --- .../Longest-Common-Substring.cpp | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 Dynamic Programming/Longest-Common-Substring.cpp diff --git a/Dynamic Programming/Longest-Common-Substring.cpp b/Dynamic Programming/Longest-Common-Substring.cpp new file mode 100644 index 00000000..6a14f2ba --- /dev/null +++ b/Dynamic Programming/Longest-Common-Substring.cpp @@ -0,0 +1,35 @@ +/* Dynamic Programming solution to find length of the longest common substring*/ +#include + +using namespace std; + +int LongestCommonSubStr(string X, string Y, int m, int n) { + + int dp[m + 1][n + 1]; + int result = 0; + + for (int i = 0; i <= m; i++) { + for (int j = 0; j <= n; j++) { + if (i == 0 || j == 0) + dp[i][j] = 0; + + else if (X[i - 1] == Y[j - 1]) { + dp[i][j] = dp[i - 1][j - 1] + 1; + result = max(result, dp[i][j]); + } else + dp[i][j] = 0; + } + } + return result; +} + +int main() { + string X = "FirstCommit"; + string Y = "LastCommit"; + + int m = X.length(); + int n = Y.length(); + + cout << "Length of Longest Common Substring is " << LongestCommonSubStr(X, Y, m, n); + return 0; +} \ No newline at end of file From eee52e6206905e8317b9b9ff8e850edb691a25ac Mon Sep 17 00:00:00 2001 From: Arya Gupta Date: Wed, 5 Oct 2022 00:56:24 +0530 Subject: [PATCH 213/448] Create Find the K-Beauty of a Number.cpp --- .../Find the K-Beauty of a Number.cpp | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 CPP/sliding-window/Find the K-Beauty of a Number.cpp diff --git a/CPP/sliding-window/Find the K-Beauty of a Number.cpp b/CPP/sliding-window/Find the K-Beauty of a Number.cpp new file mode 100644 index 00000000..c6d83e41 --- /dev/null +++ b/CPP/sliding-window/Find the K-Beauty of a Number.cpp @@ -0,0 +1,37 @@ +class Solution { +public: + bool isBeauty(string s1, string s2){ + int n1 = stoi(s1); + int n2 = stoi(s2); + if(n2) return !(n1 % n2); + return false; + } + + int divisorSubstrings(int num, int k) { + string s = to_string(num); + int n = s.size(); + if(!n) return 0; + int i = 0, j = 0, beautyCount = 0; + + + while(j < n){ + // Calculation + string window = s.substr(i, j - i + 1); + + // Window size not reached yet + if(j - i + 1 < k){ + j++; + } + + else if(j - i + 1 == k){ + // Find the answer + if(isBeauty(s, window)) beautyCount++; + + // Slide the window + i++; + j++; + } + } + return beautyCount; + } +}; From f2c3a0dfc08ef17a2fe7eb37caf80628a02eddcb Mon Sep 17 00:00:00 2001 From: priya-19054 <104170851+priya-19054@users.noreply.github.com> Date: Wed, 5 Oct 2022 00:57:57 +0530 Subject: [PATCH 214/448] Add graph.cpp --- graph/code1.cpp | 34 ++++++++++ graph/code10.cpp | 85 +++++++++++++++++++++++++ graph/code11.cpp | 72 +++++++++++++++++++++ graph/code12.cpp | 75 ++++++++++++++++++++++ graph/code13.cpp | 151 ++++++++++++++++++++++++++++++++++++++++++++ graph/code14.cpp | 161 +++++++++++++++++++++++++++++++++++++++++++++++ graph/code15.cpp | 143 +++++++++++++++++++++++++++++++++++++++++ graph/code16.cpp | 139 ++++++++++++++++++++++++++++++++++++++++ graph/code17.cpp | 72 +++++++++++++++++++++ graph/code18.cpp | 123 ++++++++++++++++++++++++++++++++++++ graph/code19.cpp | 129 +++++++++++++++++++++++++++++++++++++ graph/code2.cpp | 42 +++++++++++++ graph/code20.cpp | 109 ++++++++++++++++++++++++++++++++ graph/code3.cpp | 25 ++++++++ graph/code4.cpp | 68 ++++++++++++++++++++ graph/code5.cpp | 57 +++++++++++++++++ graph/code6.cpp | 67 ++++++++++++++++++++ graph/code7.cpp | 84 +++++++++++++++++++++++++ graph/code8.cpp | 79 +++++++++++++++++++++++ graph/code9.cpp | 79 +++++++++++++++++++++++ graph/readme.txt | 20 ++++++ 21 files changed, 1814 insertions(+) create mode 100644 graph/code1.cpp create mode 100644 graph/code10.cpp create mode 100644 graph/code11.cpp create mode 100644 graph/code12.cpp create mode 100644 graph/code13.cpp create mode 100644 graph/code14.cpp create mode 100644 graph/code15.cpp create mode 100644 graph/code16.cpp create mode 100644 graph/code17.cpp create mode 100644 graph/code18.cpp create mode 100644 graph/code19.cpp create mode 100644 graph/code2.cpp create mode 100644 graph/code20.cpp create mode 100644 graph/code3.cpp create mode 100644 graph/code4.cpp create mode 100644 graph/code5.cpp create mode 100644 graph/code6.cpp create mode 100644 graph/code7.cpp create mode 100644 graph/code8.cpp create mode 100644 graph/code9.cpp create mode 100644 graph/readme.txt diff --git a/graph/code1.cpp b/graph/code1.cpp new file mode 100644 index 00000000..d68399d5 --- /dev/null +++ b/graph/code1.cpp @@ -0,0 +1,34 @@ +// Code for Adjacency Matrix +#include +using namespace std; +#define ll long long +const int inf = 1e9 + 7; + +int main() +{ + int v; + v = 5; + int mat[v][v]; + memset(mat, 0, sizeof(mat)); + // adding edges + // 0-1 0-4 1-3 3-4 2-3 + + mat[0][1] = mat[1][0] = 1; + mat[0][4] = mat[4][0] = 1; + mat[1][3] = mat[3][1] = 1; + mat[3][4] = mat[4][3] = 1; + mat[2][3] = mat[3][2] = 1; + + // if graph is undirected then mat is symmetric otherwise it depends on edges + + cout << "CHECK MATRIX: " << endl; + for (int i = 0; i < v; i++) + { + for (int j = 0; j < v; j++) + { + cout << mat[i][j] << " "; + } + cout << endl; + } + return 0; +} \ No newline at end of file diff --git a/graph/code10.cpp b/graph/code10.cpp new file mode 100644 index 00000000..e47c4ce7 --- /dev/null +++ b/graph/code10.cpp @@ -0,0 +1,85 @@ +// Detect cycle in directed graph --> DFS +// here we find that if in stack call of recursion of dfs there is a back edge +// i.e. if a number finds that one if its adjacent is already visited and active in stack then that means that there is a cycle + +#include +using namespace std; +#define ll long long +const int inf = 1e9 + 7; + +void add_edge(vector vec[], int u, int v) +{ + vec[u].push_back(v); +} + +bool dfs(vector vec[], vector &visited, vector &recst, int source) +{ + visited[source] = true; + recst[source] = true; + for (int i = 0; i < vec[source].size(); i++) + { + int adjacent = vec[source][i]; + if (visited[adjacent] == false) + { + if (dfs(vec, visited, recst, adjacent) == true) + { + return true; + } + } + else if (visited[adjacent] == true && recst[adjacent] == true) + { + return true; + } + } + recst[source] = false; + return false; +} + +bool dfs_rec(vector vec[], int v) +{ + vector visited(v, false); + vector recst(v, false); + for (int i = 0; i < v; i++) + { + if (visited[i] == false) + { + if (dfs(vec, visited, recst, i)) + { + return true; + } + } + } + return false; +} + +int main() +{ + int v; + v = 6; + vector vec[v]; + + // adding edges from this point + + // add_edge(vec, 0, 1); + // add_edge(vec, 1, 2); + // add_edge(vec, 2, 3); + // add_edge(vec, 2, 4); + // add_edge(vec, 4, 5); + // add_edge(vec, 5, 1); + + add_edge(vec, 0, 1); + add_edge(vec, 2, 3); + add_edge(vec, 3, 4); + add_edge(vec, 4, 5); + add_edge(vec, 5, 1); + + if (dfs_rec(vec, v)) + { + cout << "There is a cycle in the graph!!" << endl; + } + else + { + cout << "There isnt a cycle in the graph!!" << endl; + } + return 0; +} \ No newline at end of file diff --git a/graph/code11.cpp b/graph/code11.cpp new file mode 100644 index 00000000..8aa67dca --- /dev/null +++ b/graph/code11.cpp @@ -0,0 +1,72 @@ +// Topological Sort -> Kahn's Based algorithm --> BFS +// Kahn algorithm is based on removing the vertex which do not depend on any other vertex i.e having 0 indegree +// and then keep on removing and finding the sequence. + +#include +using namespace std; +#define ll long long +const int inf = 1e9 + 7; + +void add_edge(vector vec[], int u, int v) +{ + vec[u].push_back(v); +} + +void topo_sort(vector vec[], int v) +{ + vector indegree(v, 0); + for (int i = 0; i < v; i++) + { + for (int j = 0; j < vec[i].size(); j++) + { + int adjacent = vec[i][j]; + indegree[adjacent]++; + } + } + queue q; + for (int i = 0; i < indegree.size(); i++) + { + if (indegree[i] == 0) + { + q.push(i); + } + } + cout << "TOPOLOGICAL SORT: " << endl; + while (q.empty() == false) + { + int curr = q.front(); + q.pop(); + + cout << curr << " "; + for (int i = 0; i < vec[curr].size(); i++) + { + int adjacent = vec[curr][i]; + + indegree[adjacent]--; + if (indegree[adjacent] == 0) + { + q.push(adjacent); + } + } + } + return; +} + +int main() +{ + int v; + v = 5; + vector vec[v]; + + // adding edges from this point + add_edge(vec, 0, 1); + add_edge(vec, 0, 3); + add_edge(vec, 1, 2); + add_edge(vec, 2, 4); + add_edge(vec, 3, 1); + add_edge(vec, 3, 4); + + topo_sort(vec, v); + + return 0; +} \ No newline at end of file diff --git a/graph/code12.cpp b/graph/code12.cpp new file mode 100644 index 00000000..cfa7f143 --- /dev/null +++ b/graph/code12.cpp @@ -0,0 +1,75 @@ +// Topological Sort -> DFS +// In DFS type approach we first go till end where there are no more adjacents left that means we can then push them +// and above that we will push vertex which are parents and we will do it with recursion. + +#include +using namespace std; +#define ll long long +const int inf = 1e9 + 7; + +void add_edge(vector vec[], int u, int v) +{ + vec[u].push_back(v); +} + +void topo_sort(vector vec[], vector &visited, int source, stack &s) +{ + cout<<"source: "< vec[], int v) +{ + vector visited(v, false); + stack s; + for (int i = 0; i < v; i++) + { + if (visited[i] == false) + { + topo_sort(vec, visited, i, s); + } + } + + while(s.size() > 0) { + int curr = s.top(); + s.pop(); + cout< vec[v]; + + // adding edges from this point + // add_edge(vec, 0, 1); + // add_edge(vec, 0, 3); + // add_edge(vec, 1, 2); + // add_edge(vec, 2, 4); + // add_edge(vec, 3, 1); + // add_edge(vec, 3, 4); + + add_edge(vec, 0, 1); + // add_edge(vec, 0, 3); + add_edge(vec, 1, 2); + add_edge(vec, 1, 3); + add_edge(vec, 3, 2); + // add_edge(vec, 3, 4); + + topo_rec(vec, v); + + return 0; +} \ No newline at end of file diff --git a/graph/code13.cpp b/graph/code13.cpp new file mode 100644 index 00000000..69c07b09 --- /dev/null +++ b/graph/code13.cpp @@ -0,0 +1,151 @@ +// Shortest Path in DAG (Weighted) +// shortest path in DAG is based on the fact that in DAG we can find topo sort +// and topo sort represents source to sink i.e we will start with a node which does not depend on any other node +// and keep on traversing until we find last node + +// here we will start with the most independent node and then find shortest path from this to all its adjacent nodes +// which means that when we reach any node we already covered all nodes which comes before it and we already explored all possible +// possibilities (i.e shortest path) + +#include +using namespace std; +#define ll long long +const int inf = 1e9 + 7; + +void add_edge(vector> vec[], int u, int v, int weight) +{ + vec[u].push_back({v, weight}); +} + +vector topo_sort(vector> vec[], int v) +{ + // here we will find topo sort by using bfs code for that + vector indegree(v, 0); + for (int i = 0; i < v; i++) + { + for (int j = 0; j < vec[i].size(); j++) + { + indegree[vec[i][j].first]++; + } + } + + queue q; + for (int i = 0; i < indegree.size(); i++) + { + if (indegree[i] == 0) + { + q.push(i); + } + } + + vector ans; + while (q.empty() == false) + { + int curr = q.front(); + q.pop(); + + ans.push_back(curr); + for (int i = 0; i < vec[curr].size(); i++) + { + int adjacent = vec[curr][i].first; + indegree[adjacent]--; + + if (indegree[adjacent] == 0) + { + q.push(adjacent); + } + } + } + + return ans; +} + +void shortest_dist(vector> vec[], vector &sort_vec, int v, int source) +{ + vector dist(v, INT_MAX); + dist[source] = 0; + + int pos = -1; + + for (int i = 0; i < sort_vec.size(); i++) + { + + // cout << sort_vec[i] << " "; + if (sort_vec[i] == source) + { + pos = i; + break; + } + } + + // cout<<"pos: "< dist[curr] + vec[curr][j].second) + { + dist[adjacent] = dist[curr] + vec[curr][j].second; + } + } + } + + cout << "CHECK SHORTEST DISTANCE:" << endl; + for (int i = 0; i < dist.size(); i++) + { + cout << dist[i] << " "; + } + cout << endl; +} + +int main() +{ + clock_t start = clock(); + + // int v = 6; + // vector> adj[v]; + + // // adding edges now + // add_edge(adj, 0, 1, 4); + // add_edge(adj, 0, 2, 2); + // add_edge(adj, 1, 3, 10); + // add_edge(adj, 1, 2, 5); + // add_edge(adj, 2, 4, 3); + // add_edge(adj, 4, 3, 4); + // add_edge(adj, 3, 5, 11); + + // vector sort_vec = topo_sort(adj, v); + + // int source = 1; + + // shortest_dist(adj, sort_vec, v, source); + + int v = 4; + vector> adj[v]; + + // adding edges now + add_edge(adj, 0, 1, 15); + add_edge(adj, 0, 2, 2); + add_edge(adj, 2, 3, 3); + add_edge(adj, 3, 1, 4); + + vector sort_vec = topo_sort(adj, v); + + int source = 0; + + shortest_dist(adj, sort_vec, v, source); + + clock_t end = clock(); + double elapsed = double(end - start) / CLOCKS_PER_SEC; + // printf("Time measured: %.4f seconds.", elapsed); + return 0; +} \ No newline at end of file diff --git a/graph/code14.cpp b/graph/code14.cpp new file mode 100644 index 00000000..7c3cfe15 --- /dev/null +++ b/graph/code14.cpp @@ -0,0 +1,161 @@ +// Minimum Spanning tree +// Basically it is forming a tree kind of structure where there are v vertices and v-1 edges and every node is connected to other node +// directly or indirectly +// In prims algorithm, we make two sets of (included in MST) & (Not included in MST) +// then we take first node include in MST and then take weight of all edges connected to it and not included in MST and then find minimum +// of them and making this move again and again till we include (v-1) edges +// also graph should be connected weighted undirected + +#include +using namespace std; +#define ll long long +const int inf = 1e9 + 7; + +void add_edge(vector> vec[], int u, int v, int weight) +{ + vec[u].push_back({v, weight}); + vec[v].push_back({u, weight}); +} + +// this algo is without using priority queue +void prims_algo1(vector> vec[], int v) +{ + // one array for checking whether included in mst or not + // second array for distance computation + + vector mst(v, false); + vector dist(v, INT_MAX); + + // int ans = 0; + + int source = 0; + dist[source] = 0; + + for (int i = 0; i <= v - 1; i++) + { + // finding minimum edge which includes one non added node + int pos = -1; // index of node which is not yet included in MST and is minimum + + // cout << "dist: array: " << endl; + // for (int j = 0; j < dist.size(); j++) + // { + // cout << dist[j] << " "; + // } + // cout<<"mist array: "< vec[pos][j].second && mst[adjacent] == false) + { + dist[adjacent] = vec[pos][j].second; + } + } + } + + int ans = 0; + for (int i = 0; i < dist.size(); i++) + { + ans += dist[i]; + } + cout << "final answer from algo 1 is : " << ans << endl; +} + +struct mycmp +{ + bool operator()(const pair &a, const pair &b) + { + return a.second > b.second; + } +}; + +void prims_algo2(vector> vec[], int v) +{ + vector mst(v, false); + vector dist(v, INT_MAX); + + dist[0] = 0; + priority_queue, vector>, mycmp> pq; + pq.push({0, 0}); + + int ans = 0; + + int count = 0; + for (int i = 0; i < v; i++) + { + while (pq.empty() == false && mst[pq.top().first] == true) + { + pq.pop(); + } + pair curr = pq.top(); + pq.pop(); + + // cout << "curr.first() " << curr.first << " curr.second() " << curr.second << endl; + + mst[curr.first] = true; + ans += curr.second; + for (int j = 0; j < vec[curr.first].size(); j++) + { + int adjacent = vec[curr.first][j].first; + if (mst[adjacent] == false && dist[adjacent] > vec[curr.first][j].second) + { + pq.push({adjacent, vec[curr.first][j].second}); + } + } + } + cout << "Final answer from algo 2 is : " << ans << endl; +} + +int main() +{ + int v = 7; + vector> adj[v]; + + // adding all edges now + add_edge(adj, 0, 1, 7); + add_edge(adj, 0, 3, 5); + add_edge(adj, 1, 3, 9); + add_edge(adj, 1, 2, 8); + add_edge(adj, 1, 4, 7); + add_edge(adj, 2, 4, 5); + add_edge(adj, 3, 4, 15); + add_edge(adj, 3, 5, 6); + add_edge(adj, 4, 5, 8); + add_edge(adj, 4, 6, 9); + add_edge(adj, 5, 6, 11); + + // int v = 5; + // vector> adj[v]; + + // add_edge(adj, 0, 1, 5); + // add_edge(adj, 0, 2, 2); + // add_edge(adj, 1, 2, 4); + // add_edge(adj, 1, 4, 1); + // add_edge(adj, 2, 3, 6); + // add_edge(adj, 4, 3, 3); + + prims_algo1(adj, v); + + prims_algo2(adj, v); + + return 0; +} \ No newline at end of file diff --git a/graph/code15.cpp b/graph/code15.cpp new file mode 100644 index 00000000..2fdcf6e1 --- /dev/null +++ b/graph/code15.cpp @@ -0,0 +1,143 @@ +// minimum spanning tree with kruskal algorithm +// In this algorithm we take all the edges and sort them in increasing order of their weights +// them we take an edge and find if adding it leads to any cycle or not +// if it does not form a cycle then we keep it added otherwise we remove it and move on to next one + +// for cycle detection we can run a cycle detection algorithm or we can find it with the help of union add and find which will take less +// time complexity than normal cycle detection algorithm + +#include +using namespace std; +#define ll long long +const int inf = 1e9 + 7; + +struct node +{ + int u, v, weight; +}; + +bool mycomp(node n1, node n2) +{ + return n1.weight < n2.weight; +} + +void add_edge(vector> vec[], int u, int v, int weight) +{ + vec[u].push_back({v, weight}); + // vec[v].push_back({u, weight}); +} + +int find(vector &parent, int x) +{ + if (parent[x] == x) + { + return x; + } + parent[x] = find(parent, parent[x]); + return parent[x]; +} + +void make_union(vector &parent, vector &rank, int a, int b) +{ + int first_parent = find(parent, a); + int second_parent = find(parent, b); + + if (first_parent == second_parent) + { + return; + } + + if (rank[first_parent] < rank[second_parent]) + { + parent[first_parent] = second_parent; + } + else if (rank[first_parent] > rank[second_parent]) + { + parent[second_parent] = first_parent; + } + else + { + parent[first_parent] = second_parent; + rank[second_parent]++; + } +} + +void kruskal(vector> vec[], int v) +{ + vector arr(v), rank(v, 0); + for (int i = 0; i < v; i++) + { + arr[i] = i; + } + vector nodes; + for (int i = 0; i < v; i++) + { + int curr = i; + for (int j = 0; j < vec[curr].size(); j++) + { + int adj = vec[curr][j].first; + int adj_weight = vec[curr][j].second; + + nodes.push_back({curr, adj, adj_weight}); + } + } + sort(nodes.begin(), nodes.end(), mycomp); + + int mini_weight = 0; + + for (int i = 0; i < nodes.size(); i++) + { + node curr = nodes[i]; + int find_first = find(arr, curr.u); + int find_sec = find(arr, curr.v); + + if (find_first == find_sec) + { + continue; + } + else + { + make_union(arr, rank, curr.u, curr.v); + cout << "Connected Edge: " << curr.u << " " << curr.v << " " << curr.weight << endl; + mini_weight += curr.weight; + } + } + + cout << "Minimum Spanning Tree weight: " << mini_weight << endl; +} + +int main() +{ + // int v = 6; + // vector> adj[v]; + + // // adding edges now + // add_edge(adj, 0, 2, 6); + // add_edge(adj, 1, 5, 1); + // add_edge(adj, 2, 5, 2); + // add_edge(adj, 2, 3, 5); + // add_edge(adj, 3, 4, 3); + // add_edge(adj, 4, 5, 4); + + int v = 9; + vector> adj[v]; + + // adding edges now + add_edge(adj, 0, 1, 4); + add_edge(adj, 1, 2, 8); + add_edge(adj, 2, 3, 7); + add_edge(adj, 3, 4, 9); + add_edge(adj, 4, 5, 10); + add_edge(adj, 5, 6, 2); + add_edge(adj, 6, 7, 1); + add_edge(adj, 7, 0, 8); + add_edge(adj, 1, 7, 11); + add_edge(adj, 3, 5, 14); + add_edge(adj, 2, 8, 2); + add_edge(adj, 6, 8, 6); + add_edge(adj, 7, 8, 7); + + kruskal(adj, v); + + return 0; +} \ No newline at end of file diff --git a/graph/code16.cpp b/graph/code16.cpp new file mode 100644 index 00000000..4ec32674 --- /dev/null +++ b/graph/code16.cpp @@ -0,0 +1,139 @@ +// In this code we will implement Dijstra's algorithm +// Dijstra's works same way as Prim's algorithm with only difference +// (in prims we consider only edges) (in dijstra we consider dist upto some node with its adjacent) + +// here we take one node check all adjacents of it and chec if we can get any shorter distance from our current point +// if we get shorter we consider it.. otherwise ignore it + +// here we will use priority queue to get that node which is at minimum distance currently so we can get minimum distance for its adjacent + +#include +using namespace std; +#define ll long long +const int inf = 1e9 + 7; + +void add_edge(vector> vec[], int u, int v, int weight) +{ + vec[u].push_back({v, weight}); + vec[v].push_back({u, weight}); +} + +// without priority queue +void dijstra1(vector> vec[], int v, int source) +{ + vector mst(v, false); + vector dist(v, INT_MAX); + dist[source] = 0; + + for (int i = 0; i < v; i++) + { + int u = -1; + for (int j = 0; j < dist.size(); j++) + { + if (mst[j] == false && (u == -1 || dist[j] < dist[u])) + { + u = j; + } + } + mst[u] = true; + for (int j = 0; j < vec[u].size(); j++) + { + int adjacent = vec[u][j].first; + int adj_weight = vec[u][j].second; + + if (mst[adjacent] == false && dist[adjacent] > dist[u] + adj_weight) + { + dist[adjacent] = dist[u] + adj_weight; + } + } + } + + cout << "Minimum distances(without priority queue) are: " << endl; + for (int i = 0; i < dist.size(); i++) + { + cout << dist[i] << " "; + } + cout << endl; +} + +struct mycmp +{ + bool operator()(const pair &p1, const pair &p2) + { + return p1.second > p2.second; + } +}; + +// with priority queue +void dijstra2(vector> vec[], int v, int source) +{ + vector dist(v, INT_MAX); + vector mst(v, false); + + dist[source] = 0; + priority_queue, vector>, mycmp> pq; + pq.push({source, 0}); + + for (int i = 0; i < v; i++) + { + while (pq.empty() == false && mst[pq.top().first] == true) + { + pq.pop(); + } + + pair curr = pq.top(); + pq.pop(); + + for (int j = 0; j < vec[curr.first].size(); j++) + { + int adjacent = vec[curr.first][j].first; + int adj_weight = vec[curr.first][j].second; + + if (mst[adjacent] == false && dist[adjacent] > dist[curr.first] + adj_weight) + { + dist[adjacent] = dist[curr.first] + adj_weight; + pq.push({adjacent, dist[adjacent]}); + } + } + } + cout << "Minimum distances(priority queue) are: " << endl; + for (int i = 0; i < dist.size(); i++) + { + cout << dist[i] << " "; + } + cout << endl; +} + +int main() +{ + // int v = 5; + // vector> adj[v]; + + // add_edge(adj, 0, 1, 6); + // add_edge(adj, 0, 3, 1); + // add_edge(adj, 1, 3, 2); + // add_edge(adj, 3, 4, 1); + // add_edge(adj, 1, 4, 2); + // add_edge(adj, 1, 2, 5); + // add_edge(adj, 2, 4, 5); + + // int source = 0; + + int v = 5; + vector> adj[v]; + + add_edge(adj, 0, 1, 3); + add_edge(adj, 0, 2, 1); + add_edge(adj, 1, 2, 7); + add_edge(adj, 2, 3, 2); + add_edge(adj, 1, 3, 5); + add_edge(adj, 1, 4, 1); + add_edge(adj, 3, 4, 7); + + int source = 2; + + + dijstra1(adj, v, source); + dijstra2(adj, v, source); + return 0; +} \ No newline at end of file diff --git a/graph/code17.cpp b/graph/code17.cpp new file mode 100644 index 00000000..6513f863 --- /dev/null +++ b/graph/code17.cpp @@ -0,0 +1,72 @@ +// In this code we will do shortest path code by bellman ford algorithm +// This code is dp implementation where we store result for (x-1)th edge and use it for xth edge +// we run one loop for v-1 cause in worst case we can go to last node in v-1 time +// and inside that loop we do relaxation of all edges + +#include +using namespace std; +#define ll long long +const int inf = 1e9 + 7; + +void add_edge(vector> vec[], int u, int v, int weight) +{ + vec[u].push_back({v, weight}); +} + +struct node +{ + int u, v, weight; +}; + +void bellman_ford(vector> vec[], int v, int source) +{ + vector edges; + vector dist(v, inf); + dist[source] = 0; + for (int i = 0; i < v; i++) + { + for (int j = 0; j < vec[i].size(); j++) + { + edges.push_back({i, vec[i][j].first, vec[i][j].second}); + } + } + + for (int i = 0; i < v - 1; i++) + { + for (int j = 0; j < edges.size(); j++) + { + node curr = edges[j]; + + int curr_u = curr.u, curr_v = curr.v, curr_weight = curr.weight; + if (dist[curr_v] > dist[curr_u] + curr_weight) + { + dist[curr_v] = dist[curr_u] + curr_weight; + } + } + } + + cout << "FINAL SHORTEST DISTANCES VIA BELLMAN FORD ALGORITHM: " << endl; + for (int i = 0; i < dist.size(); i++) + { + cout << dist[i] << " "; + } + cout << endl; +} + +int main() +{ + int v = 4; + vector> adj[v]; + + // adding edges now + add_edge(adj, 0, 1, 1); + add_edge(adj, 0, 2, 4); + add_edge(adj, 1, 2, -3); + add_edge(adj, 1, 3, 2); + add_edge(adj, 2, 3, 3); + + int source = 0; + bellman_ford(adj, v, source); + + return 0; +} \ No newline at end of file diff --git a/graph/code18.cpp b/graph/code18.cpp new file mode 100644 index 00000000..1a3f2367 --- /dev/null +++ b/graph/code18.cpp @@ -0,0 +1,123 @@ +// Strongly connected components (Kosaraju's algorithm) +// In this code we will be finding strongly connected components in directed connected graphs +// Here when we do observation we find that if we start from sink side of nodes and try to find connected components then we get them right +// but if we start from source side we can never get it cause source side will also include sink as well and not strongly components as well + +// So the algo has three steps +// 1. find source to sink side thorugh topological sort +// 2. reverse all the edges +// 3. check from topo sort and print all connected components in one go! + +// so when we find source to sink and reverse edges then source actually becomes sink now and we are traversing from sink side .. also +// connected components stay connected when reversed so we reverse edges + +// one doubt can be why cant we just start from sink side without reversing edges .. here there are chances that we will include those which are not +// part of connected components + +// example: 0->1 , 1->2 , 1->3, 3->1 .. here topo sort will be 0, 1, 2, 3... when we start from 3 .. connected components will be : 3 0 1 2... +// which is wrong + +#include +using namespace std; +#define ll long long +const int inf = 1e9 + 7; + +void add_edge(vector vec[], int u, int v) +{ + vec[u].push_back(v); +} + +void topo_sort(vector vec[], int source, vector &visited, stack &st) +{ + visited[source] = true; + for (int i = 0; i < vec[source].size(); i++) + { + int adjacent = vec[source][i]; + if (visited[adjacent] == false) + { + topo_sort(vec, adjacent, visited, st); + } + } + st.push(source); +} + +void find_transpose(vector vec[], int v, vector transpose[]) +{ + for (int i = 0; i < v; i++) + { + for (int j = 0; j < vec[i].size(); j++) + { + int first = i; + int second = vec[i][j]; + add_edge(transpose, second, first); + } + } +} + +void dfs(vector transpose[], int source, vector &visited) +{ + cout << source << " "; + visited[source] = true; + for (int i = 0; i < transpose[source].size(); i++) + { + int adjacent = transpose[source][i]; + if (visited[adjacent] == false) + { + dfs(transpose, adjacent, visited); + } + } +} + +void kosaraju(vector vec[], int v, vector transpose[]) +{ + vector visited(v, false); + int source = 0; + stack st; + // finding topo sort first + topo_sort(vec, source, visited, st); + + // finding transpose + find_transpose(vec, v, transpose); + + // final step of printing connected components .. we wll do it via dfs + for (int i = 0; i < visited.size(); i++) + { + // making visited vector again false as it is used in topo_sort and it is all true + visited[i] = false; + } + cout << "Printing connected components: " << endl; + for (int i = 0; i < visited.size(); i++) + { + if (visited[i] == false) + { + dfs(transpose, i, visited); + cout << endl; + } + } +} + +int main() +{ + // int v = 5; + // vector adj[v], transpose[v]; + // // adding edges now + // add_edge(adj, 0, 1); + // add_edge(adj, 1, 2); + // add_edge(adj, 2, 0); + // add_edge(adj, 1, 3); + // add_edge(adj, 3, 4); + + int v = 6; + vector adj[v], transpose[v]; + // adding edges now + add_edge(adj, 0, 1); + add_edge(adj, 1, 2); + add_edge(adj, 2, 3); + add_edge(adj, 3, 0); + add_edge(adj, 3, 4); + add_edge(adj, 4, 5); + add_edge(adj, 5, 4); + + kosaraju(adj, v, transpose); + return 0; +} \ No newline at end of file diff --git a/graph/code19.cpp b/graph/code19.cpp new file mode 100644 index 00000000..ba9ce85e --- /dev/null +++ b/graph/code19.cpp @@ -0,0 +1,129 @@ +// Articulation Point + +// In this code, we will see articulation point .. articulation point is point .. removal of which makes 2 or more components +// one easiest way to handle this would be removing each vertex and count connected components for it.. it takes O(E * (v+E)) time + +// now our approach is discovery time and min time .. discovery time refers to time when it was discovered and min time refers to time +// min discovery time it can reach or more to say which min ancestor it can reach in discovery tree.. + +// now for any child v of any node u if min[v] >= dis[u] then that node is articulation point .. that is cause if min[v] is greater +// than discovery time of that node means any child of this node cant reach ancestor and removing this node will definitely convert tree into +// two parts .. but if any child can reach ancestor means even if we remove this node child will still be attached to ancestor and removing +// this node wont do any good so it is not an articulation point + +#include +using namespace std; +#define ll long long +const int inf = 1e9 + 7; + +void add_edge(vector vec[], int u, int v) +{ + vec[u].push_back(v); + vec[v].push_back(u); +} + +// dist_minm function gives discovery time and low time for any node... +// here we firstly give (discovery time and low time) to each node according to their finding time +// then whenever we found a node which is already visited before we give its discovery time to all nodes from which this can be reached +// we do it by firsty applying condition where we find a visited node and then we reduce (low time) by calling this min func after recursion +// so when we call min function in recursion we already have minimum for adjacent which we got from elseif condition and we wil further use it now + +// note: line 48 will execute recursively then at the end line 60 will update it then line 50 will make further updations +void dist_minm(vector vec[], int source, vector &visited, vector &disc, vector &low, int &time, int parent, + vector &isap) +{ + visited[source] = true; + disc[source] = low[source] = time; + time++; + + int children = 0; + + for (int i = 0; i < vec[source].size(); i++) + { + int adjacent = vec[source][i]; + if (visited[adjacent] == false) + { + children++; + // calling recursion function + dist_minm(vec, adjacent, visited, disc, low, time, source, isap); + // after we make low value less for adjacent we call this fucntion so that this can further update it + low[source] = min(low[source], low[adjacent]); + + if (low[adjacent] >= disc[source] && parent != -1) + { + isap[source] = true; + } + } + // when we get visited adjacent we call min function to make low value less... + else if (visited[adjacent] == true && adjacent != parent) + { + low[source] = min(disc[adjacent], low[source]); + } + } + // we separately check for root node as even if nodes ends at node there is no prior node from which we can say that it made two parts + // so we check for children of this node and by children we means that children which are not reachable from each other directly .. they + // firstly have to go through root itself.. + if (parent == -1 && children > 1) + { + isap[source] = true; + } +} + +void arti_point(vector vec[], int v) +{ + vector visited(v, false), isap(v, false); + vector disc(v), low(v); + + int time = 1; + + for (int i = 0; i < v; i++) + { + if (visited[i] == false) + { + dist_minm(vec, i, visited, disc, low, time, -1, isap); + } + } + + cout << "All articulation points: " << endl; + for (int i = 0; i < isap.size(); i++) + { + if (isap[i] == true) + { + cout << i << " "; + } + } + cout << endl; + + // cout << "disc time: " << endl; + // for (int i = 0; i < disc.size(); i++) + // { + // cout << disc[i] << " "; + // } + + // cout << endl; + // cout << "low time: " << endl; + // for (int i = 0; i < low.size(); i++) + // { + // cout << low[i] << " "; + // } + // cout << endl; +} + +int main() +{ + int v = 7; + vector vec[v]; + + // adding edges now + add_edge(vec, 0, 1); + add_edge(vec, 1, 2); + add_edge(vec, 2, 3); + add_edge(vec, 0, 3); + add_edge(vec, 1, 4); + add_edge(vec, 4, 5); + add_edge(vec, 5, 6); + add_edge(vec, 4, 6); + + arti_point(vec, v); + return 0; +} \ No newline at end of file diff --git a/graph/code2.cpp b/graph/code2.cpp new file mode 100644 index 00000000..698a1ce9 --- /dev/null +++ b/graph/code2.cpp @@ -0,0 +1,42 @@ +// adjacency List show +#include +using namespace std; +#define ll long long +const int inf = 1e9 + 7; + +void add_edge(vector vec[], int u, int v) +{ + vec[u].push_back(v); + vec[v].push_back(u); +} + +void show_list(vector vec[], int list_size) +{ + for (int i = 0; i < list_size; i++) + { + cout << i << " --> "; + for (int j = 0; j < vec[i].size(); j++) + { + cout << vec[i][j] << " "; + } + cout << endl; + } +} + +int main() +{ + int v; + v = 5; + vector adj[v]; + + // adding all edges + add_edge(adj, 0, 1); + add_edge(adj, 0, 4); + add_edge(adj, 1, 3); + add_edge(adj, 3, 4); + add_edge(adj, 2, 3); + + cout << "Check Matrix: " << endl; + show_list(adj, v); + return 0; +} \ No newline at end of file diff --git a/graph/code20.cpp b/graph/code20.cpp new file mode 100644 index 00000000..7b698b5c --- /dev/null +++ b/graph/code20.cpp @@ -0,0 +1,109 @@ +// In this code we will do bridges in graph... + +// by bridges we mean any edge .. removal of which creates extra number of graphs components .. +// one simple approach can be we remove each edge and and then check for count of connected components +// this approach will take O(E * (V+E)) (E for count of edges as we have to remove each edge and (V+E) for the function to check count of +// connected components + +// second approach is doing this with the concept of discovery time and low time (same as articulation point) +// but in that condition was min[adjacent] >= disc[source] but here it will be min[adjacent] > disc[source] +// as we need to check if some nodes are completely on one side and others on one side .. and if we keep equal conditon then +// that means there is other edge connected to other half and we can't say its a bridge.. + +// also there is no concept of root condition(there was one in articulation point) cause there we were checking for nodes +// but here it is edge + +#include +using namespace std; +#define ll long long +const int inf = 1e9 + 7; + +void add_edge(vector vec[], int u, int v) +{ + vec[u].push_back(v); + vec[v].push_back(u); +} + +// dfs_func function gives discovery time and low time for any node... +// here we firstly give (discovery time and low time) to each node according to their finding time +// then whenever we found a node which is already visited before we give its discovery time to all nodes from which this can be reached +// we do it by firsty applying condition where we find a visited node and then we reduce (low time) by calling this min func after recursion +// so when we call min function in recursion we already have minimum for adjacent which we got from elseif condition and we wil further use it now + +// note: line 49 will execute recursively then at the end line 61 will update it then line 51 will make further updations + +void dfs_func(vector vec[], int source, vector &visited, vector &disc, vector &low, int &time, int parent) +{ + visited[source] = true; + disc[source] = low[source] = time; + + time++; + + for (int i = 0; i < vec[source].size(); i++) + { + int adjacent = vec[source][i]; + if (visited[adjacent] == false) + { + + // calling recursion function + dfs_func(vec, adjacent, visited, disc, low, time, source); + // after we make low value less for adjacent we call this fucntion so that this can further update it + low[source] = min(low[source], low[adjacent]); + + if (low[adjacent] > disc[source]) + { + cout << source << " " << adjacent << endl; + } + } + // when we get visited adjacent we call min function to make low value less... + else if (visited[adjacent] == true && adjacent != parent) + { + low[source] = min(low[source], disc[adjacent]); + } + } +} + +void bridges(vector vec[], int v) +{ + vector disc(v), low(v); + vector visited(v, false); + + int time = 1; + + for (int i = 0; i < v; i++) + { + if (visited[i] == false) + { + dfs_func(vec, i, visited, disc, low, time, -1); + } + } +} + +int main() +{ + // int v = 7; + // vector vec[v]; + + // // adding edges now + // add_edge(vec, 0, 1); + // add_edge(vec, 0, 3); + // add_edge(vec, 1, 2); + // add_edge(vec, 1, 4); + // add_edge(vec, 2, 3); + // add_edge(vec, 4, 5); + // add_edge(vec, 4, 6); + // add_edge(vec, 5, 6); + + // bridges(vec, v); + + int v = 5; + vector vec[v]; + + add_edge(vec, 1, 0); + add_edge(vec, 0, 2); + add_edge(vec, 2, 1); + add_edge(vec, 0, 3); + add_edge(vec, 3, 4); + bridges(vec, v); + return 0; +} \ No newline at end of file diff --git a/graph/code3.cpp b/graph/code3.cpp new file mode 100644 index 00000000..a8854dd9 --- /dev/null +++ b/graph/code3.cpp @@ -0,0 +1,25 @@ +/* +Comparison in adjaceny List or matrix + +Adjacency List +1. this takes size upto O(v+E)/O(V+2*E) for directed and undirected graph respectively. +2. Finding if there is a edge between two vertices is O(degree(node)) or O(v) as it can be connected to all other nodes. +3. finding degree of any vertex is O(E) / O(V) because maximum it can be connected with all other vertices + but in maximum cases it is sparse matrix so it would be really less compared to matrix. +4. Adding an edge: O(1) as we have to do one pushback operation +5. Removing an Edge: O(V)/O(E) because a number can be connected with all other nodes other than itself +6. Adding a vertex: we just have to pushback a new node to the vector so O(1). +7. Removing a vertex: So here first of all we need all the edges of that vertex to be removed so that would be + O(E) then we need to remove that vertex from the main vector and it would be O(V) so total would be O(V+E); + +Adjacency Matrix +1. This takes upto v^2 size. +2. Finding if there is a edge between two vertices is O(1). +3. Finding degree would be O(V). +4. Adding an edge: O(1) as we have to make mat[i][j] = 1. +5. Removing an Edge: O(1) as we have to make mat[i][j] = 0. +6. Adding a vertex: It will take O(v^2); +7. Removing a vertex: It will take O(v^2); + + +*/ \ No newline at end of file diff --git a/graph/code4.cpp b/graph/code4.cpp new file mode 100644 index 00000000..992da32e --- /dev/null +++ b/graph/code4.cpp @@ -0,0 +1,68 @@ +// Breadth first search +#include +using namespace std; +#define ll long long +const int inf = 1e9 + 7; + +void add_edge(vector vec[], int u, int v) +{ + vec[u].push_back(v); + vec[v].push_back(u); +} + +void bfs(vector vec[], int v, int source, vector &visited) +{ + queue q; + q.push(source); + visited[source] = true; + + while (q.empty() == false) + { + int curr = q.front(); + q.pop(); + + cout << curr << " "; + for (int i = 0; i < vec[curr].size(); i++) + { + int adjacent = vec[curr][i]; + if (visited[adjacent] == false) + { + q.push(adjacent); + visited[adjacent] = true; + } + } + } +} + +void bfs_recursive(vector vec[], int v) +{ + vector visited(v, false); + for (int i = 0; i < v; i++) + { + if (visited[i] == false) + { + bfs(vec, v, i, visited); + } + } +} + +int main() +{ + int v; + v = 6; + vector adj[v]; + + // Adding edges from this point + add_edge(adj, 0, 1); + add_edge(adj, 0, 2); + add_edge(adj, 0, 3); + add_edge(adj, 1, 5); + add_edge(adj, 2, 5); + add_edge(adj, 1, 4); + + cout << "Breadth First Search is: " << endl; + + bfs_recursive(adj, v); + + return 0; +} \ No newline at end of file diff --git a/graph/code5.cpp b/graph/code5.cpp new file mode 100644 index 00000000..ab87c13b --- /dev/null +++ b/graph/code5.cpp @@ -0,0 +1,57 @@ +// Depth First search +#include +using namespace std; +#define ll long long +const int inf = 1e9 + 7; + +void add_edge(vector vec[], int u, int v) +{ + vec[u].push_back(v); + vec[v].push_back(u); +} + +void dfs(vector vec[], int source, vector &visited) +{ + visited[source] = true; + cout << source << " "; + for (int i = 0; i < vec[source].size(); i++) + { + int adjacent = vec[source][i]; + if (visited[adjacent] == false) + { + dfs(vec, adjacent, visited); + } + } +} + +void dfs_rec(vector vec[], int v) +{ + vector visited(v, false); + for (int i = 0; i < v; i++) + { + if (visited[i] == false) + { + dfs(vec, i, visited); + } + } +} + +int main() +{ + int v; + v = 6; + vector adj[v]; + + // adding edges now + add_edge(adj, 0, 1); + add_edge(adj, 0, 2); + add_edge(adj, 0, 3); + add_edge(adj, 1, 4); + add_edge(adj, 1, 5); + add_edge(adj, 2, 5); + + cout << "DEPTH FIRST SEARCH: " << endl; + + dfs_rec(adj, v); + return 0; +} \ No newline at end of file diff --git a/graph/code6.cpp b/graph/code6.cpp new file mode 100644 index 00000000..76fc92be --- /dev/null +++ b/graph/code6.cpp @@ -0,0 +1,67 @@ +// Shortest Path in Unweighted Graph +#include +using namespace std; +#define ll long long +const int inf = 1e9 + 7; + +void add_edge(vector vec[], int u, int v) +{ + vec[u].push_back(v); + vec[v].push_back(u); +} + +void find_sd(vector vec[], int v, int source) +{ + vector visited(v, false); + vector dist(v, INT_MAX); + + queue q; + q.push(source); + dist[source] = 0; + visited[source] = true; + + while (q.empty() == false) + { + int curr = q.front(); + q.pop(); + // cout<<"curr: "< adj[v]; + + // adding edge to graph + add_edge(adj, 0, 1); + add_edge(adj, 0, 2); + add_edge(adj, 0, 3); + add_edge(adj, 1, 4); + add_edge(adj, 1, 5); + add_edge(adj, 2, 5); + + // finding shortes distance + int source = 0; + find_sd(adj, v, source); + return 0; +} \ No newline at end of file diff --git a/graph/code7.cpp b/graph/code7.cpp new file mode 100644 index 00000000..81470a19 --- /dev/null +++ b/graph/code7.cpp @@ -0,0 +1,84 @@ +// Detect cycle in undirected graph with BFS +// so in undirected graphs mainly we find who is the parent and if found some adjacent whose adjacent +// is visited and also is not is not its parent the we can surely say that we have a cycle. +// In case of BFS we make parent array and thats how we check parent.. +#include +using namespace std; +#define ll long long +const int inf = 1e9 + 7; + +void add_edge(vector vec[], int u, int v) +{ + vec[u].push_back(v); + vec[v].push_back(u); +} + +bool bfs_find(vector vec[], vector &visited, vector &parent, int source) +{ + queue q; + q.push(source); + visited[source] = true; + while (q.empty() == false) + { + int curr = q.front(); + q.pop(); + for (int i = 0; i < vec[curr].size(); i++) + { + int adjacent = vec[curr][i]; + if (visited[adjacent] == false) + { + visited[adjacent] = true; + q.push(adjacent); + parent[adjacent] = curr; + } + else if (visited[adjacent] == true && parent[curr] != adjacent) + { + return true; + } + } + } + return false; +} + +bool bfs_rec(vector vec[], int v) +{ + vector visited(v, false); + vector parent(v, -1); + for (int i = 0; i < v; i++) + { + if (visited[i] == false) + { + if (bfs_find(vec, visited, parent, i) == true) + { + return true; + } + } + } + return false; +} + +int main() +{ + int v; + v = 6; + vector adj[v]; + + // adding edges now + add_edge(adj, 0, 1); + add_edge(adj, 0, 2); + add_edge(adj, 0, 3); + add_edge(adj, 1, 4); + add_edge(adj, 1, 5); + add_edge(adj, 2, 5); + + // find if it has a loop or not + if (bfs_rec(adj, v)) + { + cout << "It has a loop !!" << endl; + } + else + { + cout << "It doesnt have a loop!!" << endl; + } + return 0; +} \ No newline at end of file diff --git a/graph/code8.cpp b/graph/code8.cpp new file mode 100644 index 00000000..7178fb4c --- /dev/null +++ b/graph/code8.cpp @@ -0,0 +1,79 @@ +// Detect cycle in undirected graph --> DFS +// when we want to detect cycle in a undirected graph then should check what will be its parent and if one of its adjacent is +// already and not its parent then we conclude that there exists a cycle in the graph... +// in DfS the parent will se stored in recursion itself unlike BFS where we store it in array/vector and check it.. + +#include +using namespace std; +#define ll long long +const int inf = 1e9 + 7; + +void add_edge(vector vec[], int u, int v) +{ + vec[u].push_back(v); + vec[v].push_back(u); +} + +bool dfs(vector vec[], vector &visited, int parent, int source) +{ + visited[source] = true; + for (int i = 0; i < vec[source].size(); i++) + { + int adjacent = vec[source][i]; + if (visited[adjacent] == false) + { + if (dfs(vec, visited, source, adjacent) == true) + { + return true; + } + } + else if (visited[adjacent] == true && parent != adjacent) + { + return true; + } + } + return false; +} + +bool dfs_rec(vector vec[], int v) +{ + vector visited(v, false); + int parent = -1; + for (int i = 0; i < v; i++) + { + if (visited[i] == false) + { + if (dfs(vec, visited, parent, i) == true) + { + return true; + } + } + } + return false; +} + +int main() +{ + int v; + v = 6; + vector adj[v]; + + // adding edges now + add_edge(adj, 0, 1); + add_edge(adj, 0, 2); + add_edge(adj, 0, 3); + add_edge(adj, 1, 4); + add_edge(adj, 1, 5); + add_edge(adj, 2, 5); + + if (dfs_rec(adj, v)) + { + cout << "It contains an cycle!!" << endl; + } + else + { + cout << "It doesnt contain an cycle!!" << endl; + } + + return 0; +} \ No newline at end of file diff --git a/graph/code9.cpp b/graph/code9.cpp new file mode 100644 index 00000000..b38c1a59 --- /dev/null +++ b/graph/code9.cpp @@ -0,0 +1,79 @@ +// Detect cycle in a directed graph using BFS +// here we will use topo_sort in topo sort we reduce indegrees but in cycle.. for all the vertex in +// the cycle the indegree will never be zero ... we can find out from there + +#include +using namespace std; +#define ll long long +const int inf = 1e9 + 7; + +void add_edge(vector vec[], int u, int v) +{ + vec[u].push_back(v); +} + +bool topo_sort(vector vec[], int v) +{ + vector indegree(v, 0); + for (int i = 0; i < v; i++) + { + for (int j = 0; j < vec[i].size(); j++) + { + int adjacent = vec[i][j]; + indegree[adjacent]++; + } + } + queue q; + for (int i = 0; i < indegree.size(); i++) + { + if (indegree[i] == 0) + { + q.push(i); + } + } + int count = 0; + while (q.empty() == false) + { + int curr = q.front(); + q.pop(); + + count++; + for (int i = 0; i < vec[curr].size(); i++) + { + int adjacent = vec[curr][i]; + + indegree[adjacent]--; + if (indegree[adjacent] == 0) + { + q.push(adjacent); + } + } + } + return count == v; +} + +int main() +{ + int v; + v = 5; + vector vec[v]; + + // adding edges from this point + add_edge(vec, 0, 1); + add_edge(vec, 0, 3); + add_edge(vec, 1, 2); + add_edge(vec, 2, 4); + add_edge(vec, 3, 1); + add_edge(vec, 4, 3); + + if (topo_sort(vec, v)) + { + cout << "No cycle " << endl; + } + else + { + cout << "there is a cycle" << endl; + } + + return 0; +} \ No newline at end of file diff --git a/graph/readme.txt b/graph/readme.txt new file mode 100644 index 00000000..7024d0b0 --- /dev/null +++ b/graph/readme.txt @@ -0,0 +1,20 @@ +1. Adjacency Matrix +2. Adjacency List +3. Comparison in adjaceny matrix and adaceny list +4. Breadth First Search +5. Depth First Search +6. Shortest Path in Unweighted Graph +7. Detect Cycle in Undirected Graph --- BFS +8. Detect Cycle in Undirected Graph --- DFS +9. Detect Cycle in Directed Graph --- BFS +10. Detect Cycle in Directed Graph --- DFS +11. Topological Sort --- BFS Kahn's Based Algorithm +12. Topological Sort --- DFS +13. Shortest Path in DAG (Weighted) +14. Minimum spanning tree (Prims algorithm) +15. Minimum spanning tree (Kruskal algorithm) +16. Shortest path algorithm (Dijstra's algorithm) +17. shortest path algorithm (Bellman Ford algorithm) (works with negative weights) +18. Strongly connected components (Kosaraju's algorithm) +20. Articulation Point +21. Bridges in graph \ No newline at end of file From 319ba8a4dfac345ee3ade73f16ac7c4186aa7928 Mon Sep 17 00:00:00 2001 From: SUSAJJIT <107480203+SUSAJJIT@users.noreply.github.com> Date: Wed, 5 Oct 2022 01:10:20 +0530 Subject: [PATCH 215/448] Add files via upload From f655f303248ab3fa54e6ab2c83c67cb37e6168fb Mon Sep 17 00:00:00 2001 From: Shubham Kumar <96763863+Shubham2816@users.noreply.github.com> Date: Wed, 5 Oct 2022 01:34:05 +0530 Subject: [PATCH 216/448] code to find all angrams --- anagrams_all/.cpp | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 anagrams_all/.cpp diff --git a/anagrams_all/.cpp b/anagrams_all/.cpp new file mode 100644 index 00000000..33ff589e --- /dev/null +++ b/anagrams_all/.cpp @@ -0,0 +1,41 @@ +class Solution { + public List findAnagrams(String s, String p) { + int sn = s.length(); + int pn = p.length(); + List res = new ArrayList<>(); + if (sn<=0 || pn<=0) return res; + + int[] pArr = new int[26]; + for (int i = 0; i < pn; i ++) + { + char c = p.charAt(i); + pArr[(int)(c-'a')] ++; + } + + for (int i = 0; i <= sn-pn; i ++) + { + char c = s.charAt(i); + if (pArr[(int)(c-'a')]==0) continue; + if (isAnagram(s, i, i+pn-1, pArr)) + { + res.add(i); + } + } + + return res; + } + + private boolean isAnagram(String s, int start, int end, int[] pArr) + { + int[] sArr = new int[26]; + for (int i = start; i <= end; i ++) + { + char c = s.charAt(i); + if (pArr[(int)(c-'a')]==0) return false; + sArr[(int)(c-'a')] ++; + if (pArr[(int)(c-'a')] Date: Wed, 5 Oct 2022 01:35:29 +0530 Subject: [PATCH 217/448] Create shellsort.cpp --- CPP/sorting/shellsort.cpp | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 CPP/sorting/shellsort.cpp diff --git a/CPP/sorting/shellsort.cpp b/CPP/sorting/shellsort.cpp new file mode 100644 index 00000000..5ecfdd8e --- /dev/null +++ b/CPP/sorting/shellsort.cpp @@ -0,0 +1,31 @@ +#include + +#include + +void swap(int * x, int * y) { + int temp = * x; + * x = * y; + * y = temp; +} +void ShellSort(int A[], int n) { + int gap, i, j, temp; + for (gap = n / 2; gap >= 1; gap /= 2) { + for (i = gap; i < n; i++) { + temp = A[i]; + j = i - gap; + while (j >= 0 && A[j] > temp) { + A[j + gap] = A[j]; + j = j - gap; + } + A[j + gap] = temp; + } + } +} +int main() { + int A[] = {11,13,7,12,16,9,24,5,10,3}, n = 10, i; + SellSort(A, n); + for (i = 0; i < 10; i++) + printf("%d ", A[i]); + printf("\n"); + return 0; +} From b0fe29d1e259d75e85c0f736db79bfeb74757227 Mon Sep 17 00:00:00 2001 From: Shubham Kumar <96763863+Shubham2816@users.noreply.github.com> Date: Wed, 5 Oct 2022 01:37:16 +0530 Subject: [PATCH 218/448] sol of anagram to find all --- anagram_sol/.cpp | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 anagram_sol/.cpp diff --git a/anagram_sol/.cpp b/anagram_sol/.cpp new file mode 100644 index 00000000..33ff589e --- /dev/null +++ b/anagram_sol/.cpp @@ -0,0 +1,41 @@ +class Solution { + public List findAnagrams(String s, String p) { + int sn = s.length(); + int pn = p.length(); + List res = new ArrayList<>(); + if (sn<=0 || pn<=0) return res; + + int[] pArr = new int[26]; + for (int i = 0; i < pn; i ++) + { + char c = p.charAt(i); + pArr[(int)(c-'a')] ++; + } + + for (int i = 0; i <= sn-pn; i ++) + { + char c = s.charAt(i); + if (pArr[(int)(c-'a')]==0) continue; + if (isAnagram(s, i, i+pn-1, pArr)) + { + res.add(i); + } + } + + return res; + } + + private boolean isAnagram(String s, int start, int end, int[] pArr) + { + int[] sArr = new int[26]; + for (int i = start; i <= end; i ++) + { + char c = s.charAt(i); + if (pArr[(int)(c-'a')]==0) return false; + sArr[(int)(c-'a')] ++; + if (pArr[(int)(c-'a')] Date: Wed, 5 Oct 2022 06:18:38 +0530 Subject: [PATCH 219/448] Added Infix to Postfix --- .../InfixToPostfix_byManik.class | Bin 0 -> 2227 bytes .../InfixToPostfix_byManik.java | 58 ++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 Java/Stack/InfixToPostfix@java/InfixToPostfix_byManik.class create mode 100644 Java/Stack/InfixToPostfix@java/InfixToPostfix_byManik.java diff --git a/Java/Stack/InfixToPostfix@java/InfixToPostfix_byManik.class b/Java/Stack/InfixToPostfix@java/InfixToPostfix_byManik.class new file mode 100644 index 0000000000000000000000000000000000000000..78678c254bbe65ccc99aa91f9418d011396b5de1 GIT binary patch literal 2227 zcmaJ?+jA3D82_E-vPoEINt;qGg(9USO{E~^V#__YQcVGE2}0$vO;6jU$!^SUYKt>I z`RcQd4+`o`AFMNqGl40iZZYFb&Yp9=`}h04@8tJqtG@s^ zg^yxrLO?@MM+jkomOI9R(O)pE+5SsYcVylb2%j`9(>*N^NTzZTL!iXxOe}2X+dyk6JV4;)H$Kc3d8AO)ZTXmN_pFE0twlPD?8@B{B>+inNYCWjs)_OL5|RP)9!w32ZAG^D<*wdBeSGx^p}^u3@>3z=@>KeGQ@^ zAEj1BHzv~8$>LiuN zpvq%N;DBGH9>@lVYr#cvO2=u{0zt>TD>a-I*y?MTykS|g9L0HLG`yi>7$Y0IWyx`6 zQJ~4R1QNBBOuK*7Dpg!Mkw%dzoxugwwxcTVh9aq)^6<8fEXG(ByTa~TH+Go~`NCKP zm)H!$7K_~F&dILfMfR2Bn6?$eJ9t;axQ+>2dC?XO#iz{*l$5Q4inRemsho=Ss*d+? zjeuBkk#TJ7ygG1k2uv!l-+!q-b-us2Ygli?O&zzC$`*5dN=D4ZIA?p34m0*No3uG= zTJmD0I3>#y##Din&EDLO8KwF?STq#e?a4`B554f5c+d+5P{bd`xSYU@xE1CQdLA zWNYz>=hxt^lRF=BgnA!B{K$jA6u*iM1Q1cLF3(D|#9dKO?)Z*h;B~GLS1;F5t~A#X zu2<`OKX*mH$#p!q5?TqbG_CO54-#~oz!nVh&mvEWFoFX@2zqBX*Sw1v z>V?VsGp=PHBYN#2HjM>NclK7He~tUSomIq-1rxzXX#Wy}eO2uG0zKTienoc`JtTX) z``DT$wRcrTnO%PVSDzvuuHxv`Wn4)FTT=IMSP9hBj)fATmgHC1nNEaORl-?6Z~6J( z%jlv~@*Z0JhV*nISQGywAeNusV4T!D`3>59&OO#Y=^xe*$sxgWf~dD+6U&uA2X+zt zZhp_QP#3WWljtIPdtvdQXBf;vCKjaA(CuIs(D!>ii>b2^Gv*1CiLKHaSM5ds>(jF stack = new Stack<>(); + for (int i = 0; i 0){ + while(stack.isEmpty()==false && precedence(stack.peek())>=precedence(c)){ + result += stack.pop(); + } + stack.push(c); + }else if(c==')'){ + char x = stack.pop(); + while(x!='('){ + result += x; + x = stack.pop(); + } + }else if(c=='('){ + stack.push(c); + }else{ + //character is neither operator nor ( + result += c; + } + } + for (int i = 0; i <=stack.size() ; i++) { + result += stack.pop(); + } + return result; + } + + public static void main(String[] args) { + Scanner sc=new Scanner(System.in); + System.out.println("Enter the Expression"); + String Input=sc.next(); + System.out.println("Infix Expression: " + Input); + System.out.println("Postfix Expression: " + infixToPostFix(Input)); + } +} \ No newline at end of file From 553b8b569a3c2f2e3d620bcf15cd9104537f9aa4 Mon Sep 17 00:00:00 2001 From: pranava7 Date: Wed, 5 Oct 2022 01:43:53 +0530 Subject: [PATCH 220/448] largest contiguous array sum solution added in dp folder. --- .../Largest Sum Contiguous Subarray.cpp | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 Dynamic Programming/Largest Sum Contiguous Subarray.cpp diff --git a/Dynamic Programming/Largest Sum Contiguous Subarray.cpp b/Dynamic Programming/Largest Sum Contiguous Subarray.cpp new file mode 100644 index 00000000..ccdc8861 --- /dev/null +++ b/Dynamic Programming/Largest Sum Contiguous Subarray.cpp @@ -0,0 +1,27 @@ +// largest contiguous array sum +#include + +using namespace std; + +int maxSubArraySum(int a[], int size) { + int max_so_far = INT_MIN, max_ending_here = 0; + + for (int i = 0; i < size; i++) { + max_ending_here = max_ending_here + a[i]; + if (max_so_far < max_ending_here) + max_so_far = max_ending_here; + + if (max_ending_here < 0) + max_ending_here = 0; + } + return max_so_far; +} + +int main() { + int a[] = {-2, -3, 4, -1, -2, 1, 5, -3}; + int n = sizeof(a) / sizeof(a[0]); + + int max_sum = maxSubArraySum(a, n); + cout << "Maximum contiguous sum is " << max_sum; + return 0; +} \ No newline at end of file From b034e11e97d6fdb24cc56b2580e5b772a157b161 Mon Sep 17 00:00:00 2001 From: Satyam Tripathi Date: Wed, 5 Oct 2022 01:49:50 +0530 Subject: [PATCH 221/448] Create linked_list_cycle_2.py --- Python/linked_list_cycle_2.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 Python/linked_list_cycle_2.py diff --git a/Python/linked_list_cycle_2.py b/Python/linked_list_cycle_2.py new file mode 100644 index 00000000..776e0dd6 --- /dev/null +++ b/Python/linked_list_cycle_2.py @@ -0,0 +1,15 @@ +class Solution: + def detectCycle(self, head: Optional[ListNode]) -> Optional[ListNode]: + slow, fast = head, head + while fast and fast.next: + slow = slow.next + fast = fast.next.next + if slow == fast: + break + else: + return None + slow = head + while slow != fast: + slow = slow.next + fast = fast.next + return From 740942d217b047a6f1760c014ae8573bda8aea01 Mon Sep 17 00:00:00 2001 From: Harsh Bhatt <59651884+HarshBhatt123@users.noreply.github.com> Date: Wed, 5 Oct 2022 02:04:13 +0530 Subject: [PATCH 222/448] Zigzag level order traversal --- ...nary-tree-zigzag-level-order-traversal.cpp | 70 +++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 Trees/binary-tree-zigzag-level-order-traversal.cpp diff --git a/Trees/binary-tree-zigzag-level-order-traversal.cpp b/Trees/binary-tree-zigzag-level-order-traversal.cpp new file mode 100644 index 00000000..2bdb7dd0 --- /dev/null +++ b/Trees/binary-tree-zigzag-level-order-traversal.cpp @@ -0,0 +1,70 @@ +#include + +using namespace std; + +/** + * Question Link:- https://leetcode.com/problems/binary-tree-zigzag-level-order-traversal/ + * Definition for a binary tree node. + * struct TreeNode { + * int val; + * TreeNode *left; + * TreeNode *right; + * TreeNode() : val(0), left(nullptr), right(nullptr) {} + * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} + * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} + * }; + */ + +struct TreeNode { + int val; + TreeNode *left; + TreeNode *right; + TreeNode() : val(0), left(nullptr), right(nullptr) {} + TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} + TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} + }; + +class Solution { +public: + vector> zigzagLevelOrder(TreeNode* root) { + + vector> ans; + if(!root) return ans; + + queue q; + + q.push(root); + bool flag =false; + + while(!q.empty()){ + int size = q.size(); + vector level; + + for(int i=0;ival) ; + + if(node->left) q.push(node->left); + if(node->right) q.push(node->right); + + + + } + + + flag = !flag; + if(flag == false) + reverse(level.begin() , level.end()) ; + + + ans.push_back(level) ; + + + } + return ans; + + } +}; \ No newline at end of file From 690be8b61af1499346663f3420985b7794943fdb Mon Sep 17 00:00:00 2001 From: pranava7 Date: Wed, 5 Oct 2022 02:08:38 +0530 Subject: [PATCH 223/448] smallest sum contiguous subarray solution added --- .../Smallest contiguous array sum.cpp | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 Dynamic Programming/Smallest contiguous array sum.cpp diff --git a/Dynamic Programming/Smallest contiguous array sum.cpp b/Dynamic Programming/Smallest contiguous array sum.cpp new file mode 100644 index 00000000..253d29c3 --- /dev/null +++ b/Dynamic Programming/Smallest contiguous array sum.cpp @@ -0,0 +1,46 @@ +// C++ implementation to find the smallest sum +// contiguous subarray +#include + +using namespace std; + +// function to find the smallest sum contiguous subarray +int smallestSumSubarr(int arr[], int n) +{ + // to store the minimum value that is ending + // up to the current index + int min_ending_here = INT_MAX; + + // to store the minimum value encountered so far + int min_so_far = INT_MAX; + + // traverse the array elements + for (int i=0; i 0, then it could not possibly + // contribute to the minimum sum further + if (min_ending_here > 0) + min_ending_here = arr[i]; + + // else add the value arr[i] to min_ending_here + else + min_ending_here += arr[i]; + + // update min_so_far + min_so_far = min(min_so_far, min_ending_here); + } + + // required smallest sum contiguous subarray value + return min_so_far; +} + + +// Driver program to test above +int main() +{ + int arr[] = {3, -4, 2, -3, -1, 7, -5}; + int n = sizeof(arr) / sizeof(arr[0]); + cout << "Smallest sum: " + << smallestSumSubarr(arr, n); + return 0; +} From 467720e7c2ec0f2ae976c0e7569edcd8d22a5d72 Mon Sep 17 00:00:00 2001 From: precisecharmer <89693336+precisecharmer@users.noreply.github.com> Date: Wed, 5 Oct 2022 02:10:42 +0530 Subject: [PATCH 224/448] Add pandigital_num.cpp --- CPP/pandigital_numbers/code.cpp | 341 ++++++++++++++++++++++++++++++ CPP/pandigital_numbers/readme.txt | 5 + 2 files changed, 346 insertions(+) create mode 100644 CPP/pandigital_numbers/code.cpp create mode 100644 CPP/pandigital_numbers/readme.txt diff --git a/CPP/pandigital_numbers/code.cpp b/CPP/pandigital_numbers/code.cpp new file mode 100644 index 00000000..a194c0e6 --- /dev/null +++ b/CPP/pandigital_numbers/code.cpp @@ -0,0 +1,341 @@ +#include +using namespace std; +#define ll long long +const int inf = 1e9 + 7; + +vector func3(string str, vector &values) +{ + int num = stoi(str); + int a, b; + b = num % 10; + num /= 10; + a = num % 10; + num /= 10; + + vector vec; + + for (int i = 0; i < values.size(); i++) + { + if (values[i] == 0) + { + if ((i + a + b) % 3 == 0) + { + vec.push_back(i); + } + } + } + return vec; +} + +vector func5(string str, vector &values) +{ + int num = stoi(str); + int a, b; + b = num % 10; + num /= 10; + a = num % 10; + num /= 10; + + vector vec; + + for (int i = 0; i < values.size(); i++) + { + if (values[i] == 0 && (i == 0 || i == 5)) + { + vec.push_back(i); + } + } + + return vec; +} + +vector func7(string str, vector &values) +{ + int num = stoi(str); + int a, b; + b = num % 10; + num /= 10; + a = num % 10; + num /= 10; + + vector vec; + + for (int i = 0; i < values.size(); i++) + { + // Subtracting 2 times the last digit from the rest gives a multiple of 7. (Works because 21 is divisible by 7.) + if (((a * 10 + b) - (2 * i)) % 7 == 0 && values[i] == 0) + { + vec.push_back(i); + } + } + + return vec; +} + +vector func11(string str, vector &values) +{ + int num = stoi(str); + int a, b; + b = num % 10; + num /= 10; + a = num % 10; + num /= 10; + + vector vec; + + for (int i = 0; i < values.size(); i++) + { + if ((abs(a + i - b)) % 11 == 0 && values[i] == 0) + { + vec.push_back(i); + } + } + + return vec; +} + +vector func13(string str, vector &values) +{ + int num = stoi(str); + int a, b; + b = num % 10; + num /= 10; + a = num % 10; + num /= 10; + + vector vec; + + for (int i = 0; i < values.size(); i++) + { + // Subtract the last two digits from four times the rest. The result must be divisible by 13. + if ((abs(b * 10 + i - 4 * a)) % 13 == 0 && values[i] == 0) + { + vec.push_back(i); + } + } + + return vec; +} + +vector func17(string str, vector &values) +{ + int num = stoi(str); + int a, b; + b = num % 10; + num /= 10; + a = num % 10; + num /= 10; + + vector vec; + + for (int i = 0; i < values.size(); i++) + { + // Subtract 5 times the last digit from the rest. + + if ((abs(a * 10 + b - 5 * i)) % 17 == 0 && values[i] == 0) + { + vec.push_back(i); + } + } + + return vec; +} + +void func(int n) +{ + // 406 + string str = to_string(n); + vector values(10, 0); + + // vec[0] = vec[4] = vec[6] = 1; + + int a, b, c; + c = n % 10; + n /= 10; + b = n % 10; + n /= 10; + a = n % 10; + n /= 10; + + values[a] = values[b] = values[c] = 1; + + vector vec3 = func3(str, values); + + for (int i = 0; i < vec3.size(); i++) + { + string stri = str; + stri = stri + to_string(vec3[i]); + + values[vec3[i]] = 1; + + // cout << "STRI: " << stri << endl; + + // cout << "CHECK VECTOR: " << endl; + // for (int i = 0; i < values.size(); i++) + // { + // cout << values[i] << " "; + // } + // cout << endl; + + vector vec5 = func5(stri, values); + + for (int j = 0; j < vec5.size(); j++) + { + string strj = stri; + strj = strj + to_string(vec5[j]); + + values[vec5[j]] = 1; + + // cout << "STRJ: " << strj << endl; + + // cout << "CHECK VECTOR: " << endl; + // for (int i = 0; i < values.size(); i++) + // { + // cout << values[i] << " "; + // } + // cout << endl; + + vector vec7 = func7(strj, values); + + for (int k = 0; k < vec7.size(); k++) + { + + string strk = strj; + strk = strk + to_string(vec7[k]); + + values[vec7[k]] = 1; + + // cout << "STRK: " << strk << endl; + + // cout << "CHECK VECTOR: " << endl; + // for (int i = 0; i < values.size(); i++) + // { + // cout << values[i] << " "; + // } + // cout << endl; + + vector vec11 = func11(strk, values); + + for (int l = 0; l < vec11.size(); l++) + { + + string strl = strk; + strl = strl + to_string(vec11[l]); + + values[vec11[l]] = 1; + + // cout << "STRL: " << strl << endl; + + vector vec13 = func13(strl, values); + + for (int m = 0; m < vec13.size(); m++) + { + + string strm = strl; + strm = strm + to_string(vec13[m]); + + values[vec13[m]] = 1; + + // cout << "STRM: " << strm << endl; + + vector vec17 = func17(strm, values); + + for (int n = 0; n < vec17.size(); n++) + { + + string strn = strm; + strn = strn + to_string(vec17[n]); + + values[vec17[n]] = 1; + + // cout << "STRM: " << strn << endl; + + // cout << "CHECK VECTOR: " << endl; + // for (int i = 0; i < values.size(); i++) + // { + // cout << values[i] << " "; + // } + // cout << endl; + + for (int a = 0; a < values.size(); a++) + { + if (values[a] == 0) + { + string abcd = to_string(a); + string crst = abcd + strn; + + cout << "FINAL STRING: " << crst << endl; + } + } + + values[vec17[n]] = 0; + } + + // answer is size of vec17 + + values[vec13[m]] = 0; + } + + values[vec11[l]] = 0; + } + + values[vec7[k]] = 0; + } + + values[vec5[j]] = 0; + } + values[vec3[i]] = 0; + } +} + +void solve() +{ + + int start = 100, end = 1000; + for (int i = start; i < end; i++) + { + int curr = i; + if (curr % 2 == 0) + { + int a, b, c; + a = curr % 10; + curr /= 10; + b = curr % 10; + curr /= 10; + c = curr % 10; + curr /= 10; + + if (a != b && b != c && c != a) + { + // cout << i << endl; + func(i); + } + } + } +} + +int main() +{ + ios_base::sync_with_stdio(false); + cin.tie(NULL); + cout.tie(NULL); + cin.exceptions(cin.failbit); + // freopen("input.txt", "r", stdin); + // freopen("output.txt", "w", stdout); + + clock_t start = clock(); + + solve(); + clock_t end = clock(); + double elapsed = double(end - start) / CLOCKS_PER_SEC; + printf("Time measured: %.4f seconds.", elapsed); + return 0; +} + +/* + + + + + +*/ \ No newline at end of file diff --git a/CPP/pandigital_numbers/readme.txt b/CPP/pandigital_numbers/readme.txt new file mode 100644 index 00000000..5cf6ab1c --- /dev/null +++ b/CPP/pandigital_numbers/readme.txt @@ -0,0 +1,5 @@ +First code is of Problem statement: https://projecteuler.net/problem=43 + +Idea to solve this problem is: +we are given numbers that divides (di di+1 di+2), we will then form an array that satisifes condition and through multilple loops and by applying different fucntions like func3(), func5(), .. we will find how many values out of {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} satifies that and keep oh doing it.. (Also we mark the numbers we found as 1, so that we dont get those again) +Finally we get all the numbers \ No newline at end of file From 98c841b1138ee42645cbea3e6f8c1fdbc7dff606 Mon Sep 17 00:00:00 2001 From: Siddhant Singh Date: Wed, 5 Oct 2022 02:13:11 +0530 Subject: [PATCH 225/448] Create Binary_Exponentiation.cpp --- CPP/recursion/Binary_Exponentiation.cpp | 31 +++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 CPP/recursion/Binary_Exponentiation.cpp diff --git a/CPP/recursion/Binary_Exponentiation.cpp b/CPP/recursion/Binary_Exponentiation.cpp new file mode 100644 index 00000000..1da2cfea --- /dev/null +++ b/CPP/recursion/Binary_Exponentiation.cpp @@ -0,0 +1,31 @@ +#include +using namespace std; + +int binExpRec(int a, int b){ + + if(b==0){ + return 1; + } + + long long r = binExpRec(a,b/2); + + if(b & 1){ + return (a * r * r); + } + else{ + return r * r; + } + +} + +int main(){ + int a,b; + + cout<<"Enter the number and its power: "; + cin>>a>>b; + + int finalAns = binExpRec(a,b); + cout<< a << " to the power " << b << " = " << finalAns; + + return 0; +} From 83d18e0834a7e2656a16dcc51998b10728b3a793 Mon Sep 17 00:00:00 2001 From: Siddhant Singh Date: Wed, 5 Oct 2022 02:14:38 +0530 Subject: [PATCH 226/448] Create string_reverse_using_recursion.cpp --- .../string_reverse_using_recursion.cpp | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 CPP/recursion/string_reverse_using_recursion.cpp diff --git a/CPP/recursion/string_reverse_using_recursion.cpp b/CPP/recursion/string_reverse_using_recursion.cpp new file mode 100644 index 00000000..9e3ff5c9 --- /dev/null +++ b/CPP/recursion/string_reverse_using_recursion.cpp @@ -0,0 +1,23 @@ +#include +using namespace std; + +void reverse(string &str) +{ + stack st; + for (int i=0; i Date: Wed, 5 Oct 2022 02:16:02 +0530 Subject: [PATCH 227/448] Create GCD_Rec.cpp --- CPP/recursion/GCD_Rec.cpp | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 CPP/recursion/GCD_Rec.cpp diff --git a/CPP/recursion/GCD_Rec.cpp b/CPP/recursion/GCD_Rec.cpp new file mode 100644 index 00000000..af56c9b7 --- /dev/null +++ b/CPP/recursion/GCD_Rec.cpp @@ -0,0 +1,29 @@ +// C++ program to find GCD of two numbers +#include +using namespace std; +// Recursive function to return gcd of a and b +int gcd(int a, int b) +{ + // Everything divides 0 + if (a == 0) + return b; + if (b == 0) + return a; + + // base case + if (a == b) + return a; + + // a is greater + if (a > b) + return gcd(a-b, b); + return gcd(a, b-a); +} + +// Driver program to test above function +int main() +{ + int a = 98, b = 56; + cout<<"GCD of "< Date: Wed, 5 Oct 2022 02:20:56 +0530 Subject: [PATCH 228/448] Long_Substr_w/o_Repeat_Char --- ...est Substring Without Repeating Characters | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 Leetcode-solutions/Binary-search/Longest Substring Without Repeating Characters diff --git a/Leetcode-solutions/Binary-search/Longest Substring Without Repeating Characters b/Leetcode-solutions/Binary-search/Longest Substring Without Repeating Characters new file mode 100644 index 00000000..5f901af0 --- /dev/null +++ b/Leetcode-solutions/Binary-search/Longest Substring Without Repeating Characters @@ -0,0 +1,26 @@ +class Solution { +public: + int lengthOfLongestSubstring(string str) { + int n = str.size(); + map mp; + int maxm = 0, prev = -1; + + for (int i = 0; i < n; i++) + { + if (mp.count(str[i]) == 0) + { + mp.insert({str[i], i}); + } + else + { + prev = max(prev, mp[str[i]]); + mp[str[i]] = i; + } + maxm = max(maxm, i - prev); + } + return maxm; + } +}; + +// The idea is checking whenever we find any letter which is repeating we can find previous position and find the diffrence +// we can check "repeating" by maintain hash functions like map From 80cc61d609ce702605269cc66820133b22c8ff66 Mon Sep 17 00:00:00 2001 From: Pritom Date: Wed, 5 Oct 2022 03:11:57 +0600 Subject: [PATCH 229/448] Solution of the problem Valid Perfect Square in Cpp language added --- .../Binary-search/ValidPerfectSquare.cpp | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 Leetcode-solutions/Binary-search/ValidPerfectSquare.cpp diff --git a/Leetcode-solutions/Binary-search/ValidPerfectSquare.cpp b/Leetcode-solutions/Binary-search/ValidPerfectSquare.cpp new file mode 100644 index 00000000..62c45be5 --- /dev/null +++ b/Leetcode-solutions/Binary-search/ValidPerfectSquare.cpp @@ -0,0 +1,36 @@ +// Problem link : https://leetcode.com/problems/valid-perfect-square/ +// Time Complexity : O(log(n)) + +class Solution { +public: + + int findSqrt(int num) + { + int low = 1; + int high = num; + + int ans; + + while(low <= high){ + long long int mid = low + (high - low)/2; + if(mid * mid <= num){ + ans = mid; + low = mid + 1; + } + else{ // ( mid * mid ) is greater than num + high = mid - 1; + } + } + + return ans; + } + + bool isPerfectSquare(int num) { + + int sqrtN = findSqrt(num); + + if((sqrtN * sqrtN) == num) return true; + + return false; + } +}; \ No newline at end of file From 51d8a19e76f910819c11046db21e9d9305e73f66 Mon Sep 17 00:00:00 2001 From: Namrata Date: Wed, 5 Oct 2022 02:46:33 +0530 Subject: [PATCH 230/448] 19 remove nth node from end of list --- .../19-remove-nth-node-from-end-of-list.cpp | 35 +++++++++++++++++++ .../README.md | 34 ++++++++++++++++++ 2 files changed, 69 insertions(+) create mode 100644 19-remove-nth-node-from-end-of-list.cpp/19-remove-nth-node-from-end-of-list.cpp create mode 100644 19-remove-nth-node-from-end-of-list.cpp/README.md diff --git a/19-remove-nth-node-from-end-of-list.cpp/19-remove-nth-node-from-end-of-list.cpp b/19-remove-nth-node-from-end-of-list.cpp/19-remove-nth-node-from-end-of-list.cpp new file mode 100644 index 00000000..facd33bc --- /dev/null +++ b/19-remove-nth-node-from-end-of-list.cpp/19-remove-nth-node-from-end-of-list.cpp @@ -0,0 +1,35 @@ +/** + * Definition for singly-linked list. + * struct ListNode { + * int val; + * ListNode *next; + * ListNode() : val(0), next(nullptr) {} + * ListNode(int x) : val(x), next(nullptr) {} + * ListNode(int x, ListNode *next) : val(x), next(next) {} + * }; + */ +class Solution { +public: + ListNode* removeNthFromEnd(ListNode* head, int n) { + int cnt=0; + ListNode* curr=head; + while(curr){ + curr=curr->next; + cnt++; + }curr=head; + if(n==1 && cnt==1) + return NULL; + if(cnt-n==0) + return head->next; + for(int i=1;inext; + } + if(curr->next==NULL) + return head; + if(curr->next->next==NULL) + curr->next=NULL; + else + curr->next=curr->next->next; + return head; + } +}; \ No newline at end of file diff --git a/19-remove-nth-node-from-end-of-list.cpp/README.md b/19-remove-nth-node-from-end-of-list.cpp/README.md new file mode 100644 index 00000000..8d4110a9 --- /dev/null +++ b/19-remove-nth-node-from-end-of-list.cpp/README.md @@ -0,0 +1,34 @@ +

19. Remove Nth Node From End of List

Medium


Given the head of a linked list, remove the nth node from the end of the list and return its head.

+ +

 

+

Example 1:

+ +
Input: head = [1,2,3,4,5], n = 2
+Output: [1,2,3,5]
+
+ +

Example 2:

+ +
Input: head = [1], n = 1
+Output: []
+
+ +

Example 3:

+ +
Input: head = [1,2], n = 1
+Output: [1]
+
+ +

 

+

Constraints:

+ +
    +
  • The number of nodes in the list is sz.
  • +
  • 1 <= sz <= 30
  • +
  • 0 <= Node.val <= 100
  • +
  • 1 <= n <= sz
  • +
+ +

 

+

Follow up: Could you do this in one pass?

+
\ No newline at end of file From 20d227feb89f79aee0d9efb16edc2c57eca1caf4 Mon Sep 17 00:00:00 2001 From: DharmaWarrior <97218268+DharmaWarrior@users.noreply.github.com> Date: Wed, 5 Oct 2022 02:57:09 +0530 Subject: [PATCH 231/448] Solutions for 2 questions on leetcode The Questions are : 1st -> Largest Rectangle in Histogram https://leetcode.com/problems/largest-rectangle-in-histogram/ 2nd -> Valid Parenthesis https://leetcode.com/problems/valid-parentheses/ --- .../LargestRectangleInHistogram.md | 62 +++++++++++++++++++ LeetCode Solutions/ValidParenthesis.md | 42 +++++++++++++ 2 files changed, 104 insertions(+) create mode 100644 LeetCode Solutions/LargestRectangleInHistogram.md create mode 100644 LeetCode Solutions/ValidParenthesis.md diff --git a/LeetCode Solutions/LargestRectangleInHistogram.md b/LeetCode Solutions/LargestRectangleInHistogram.md new file mode 100644 index 00000000..398c592d --- /dev/null +++ b/LeetCode Solutions/LargestRectangleInHistogram.md @@ -0,0 +1,62 @@ +class Solution { +private: + vector nextSmallerElement(vector arr, int n) { + stack s; + s.push(-1); + vector ans(n); + + for(int i=n-1; i>=0 ; i--) { + int curr = arr[i]; + while(s.top() != -1 && arr[s.top()] >= curr) + { + s.pop(); + } + //ans is stack ka top + ans[i] = s.top(); + s.push(i); + } + return ans; + } + + vector prevSmallerElement(vector arr, int n) { + stack s; + s.push(-1); + vector ans(n); + + for(int i=0; i= curr) + { + s.pop(); + } + //ans is stack ka top + ans[i] = s.top(); + s.push(i); + } + return ans; + } + +public: + int largestRectangleArea(vector& heights) { + int n= heights.size(); + + vector next(n); + next = nextSmallerElement(heights, n); + + vector prev(n); + prev = prevSmallerElement(heights, n); + + int area = INT_MIN; + for(int i=0; i s; + for(int i=0; i Date: Wed, 5 Oct 2022 03:26:51 +0530 Subject: [PATCH 232/448] Added Sparse Matrix in C --- Matrix/sparseMatrix.c | 64 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 Matrix/sparseMatrix.c diff --git a/Matrix/sparseMatrix.c b/Matrix/sparseMatrix.c new file mode 100644 index 00000000..587fac70 --- /dev/null +++ b/Matrix/sparseMatrix.c @@ -0,0 +1,64 @@ +#include +#include + +int nonZero; + +void sparseMatrix(int arr[100][100],int rows,int columns){ + + int crr[rows][nonZero],p=0,q=0; + + for(int i=0;i0){ + crr[p][q]=i; + crr[p+1][q]=j; + crr[p+2][q]=arr[i][j]; + q++; + + } + } + } + + for(int f=0; f=nonZero){ + printf("\nSparse Matrix:\n"); + sparseMatrix(arr,rows,columns); + }else{ + printf("\nNot a sparse matrix"); + } + + + + + + + + return 0; +} From dfcc3376b2bb572903e5e473285eb7986d68825c Mon Sep 17 00:00:00 2001 From: rupesh Date: Wed, 5 Oct 2022 03:43:46 +0530 Subject: [PATCH 233/448] added Divide Array into equal pairs --- Java/Leetcode/Leetcode2206.java | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 Java/Leetcode/Leetcode2206.java diff --git a/Java/Leetcode/Leetcode2206.java b/Java/Leetcode/Leetcode2206.java new file mode 100644 index 00000000..5678b0f0 --- /dev/null +++ b/Java/Leetcode/Leetcode2206.java @@ -0,0 +1,8 @@ +class Solution { + public boolean divideArray(int[] nums) { + return Arrays.stream(nums) + .boxed() + .collect(Collectors.groupingBy(Function.identity(), HashMap::new, Collectors.counting())) + .values().stream().allMatch(e -> e % 2 == 0); + } +} \ No newline at end of file From d6b5fb04c52fe3e9d6936227da53db985c0bb28e Mon Sep 17 00:00:00 2001 From: Sudhir8787 <91399339+Sudhir8787@users.noreply.github.com> Date: Wed, 5 Oct 2022 04:22:46 +0530 Subject: [PATCH 234/448] Create 114-flatten-binary-tree-to-linked-list.cpp --- ...114-flatten-binary-tree-to-linked-list.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 121 Leetcode/114-flatten-binary-tree-to-linked-list.cpp diff --git a/121 Leetcode/114-flatten-binary-tree-to-linked-list.cpp b/121 Leetcode/114-flatten-binary-tree-to-linked-list.cpp new file mode 100644 index 00000000..88006722 --- /dev/null +++ b/121 Leetcode/114-flatten-binary-tree-to-linked-list.cpp @@ -0,0 +1,19 @@ +class Solution { +public: + void flatten(TreeNode* root) { + if(!root) return; + while(root) + { + TreeNode* temp = root->right; + root->right = root->left; + root->left = NULL; + TreeNode* node = root; + while(node->right) + { + node = node->right; + } + node->right = temp; + root = root->right; + } + } +}; From cac489726a9b49f0fc9a7463ba7aa3d5643d9c3a Mon Sep 17 00:00:00 2001 From: Sudhir8787 <91399339+Sudhir8787@users.noreply.github.com> Date: Wed, 5 Oct 2022 04:25:25 +0530 Subject: [PATCH 235/448] Create word-ladder-ii.cpp --- 121 Leetcode/word-ladder-ii.cpp | 101 ++++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 121 Leetcode/word-ladder-ii.cpp diff --git a/121 Leetcode/word-ladder-ii.cpp b/121 Leetcode/word-ladder-ii.cpp new file mode 100644 index 00000000..86aa76f0 --- /dev/null +++ b/121 Leetcode/word-ladder-ii.cpp @@ -0,0 +1,101 @@ +// BFS gives TLE if we store path while traversing because whenever we find a better visit time for a word, we have to clear/make a new path vector everytime. +// The idea is to first use BFS to search from beginWord to endWord and generate the word-to-children mapping at the same time. +// Then, use DFS (backtracking) to generate the transformation sequences according to the mapping. +// The reverse DFS allows us to only make the shortest paths, never having to clear a whole sequence when we encounter better result in BFS +// No string operations are done, by dealing with indices instead. + + + +class Solution { +public: +bool able(string s,string t){ + int c=0; + for(int i=0;i> &g,vector parent[],int n,int start,int end){ + vector dist(n,1005); + queue q; + q.push(start); + parent[start]={-1}; + dist[start]=0; + while(!q.empty()){ + int x=q.front(); + q.pop(); + for(int u:g[x]){ + if(dist[u]>dist[x]+1){ + dist[u]=dist[x]+1; + q.push(u); + parent[u].clear(); + parent[u].push_back(x); + } + else if(dist[u]==dist[x]+1) + parent[u].push_back(x); + } + } +} +void shortestPaths(vector> &Paths, vector &path, vector parent[],int node){ + if(node==-1){ + // as parent of start was -1, we've completed the backtrack + Paths.push_back(path); + return ; + } + for(auto u:parent[node]){ + path.push_back(u); + shortestPaths(Paths,path,parent,u); + path.pop_back(); + } +} +vector> findLadders(string beginWord, string endWord, vector& wordList) { + // start and end are indices of beginWord and endWord + int n=wordList.size(),start=-1,end=-1; + vector> ANS; + for(int i=0;i> g(n,vector()),Paths; + + // storing possible parents for each word (to backtrack later), path is the current sequence (while backtracking) + vector parent[n],path; + + // creating adjency list for each pair of words in the wordList (including beginword) + for(int i=0;i now; + for(int i=0;i Date: Wed, 5 Oct 2022 06:46:20 +0530 Subject: [PATCH 236/448] added java programs --- Arrays/Ch6_Arrays.java | 0 Arrays/Ch6_Multiarray.java | 0 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 Arrays/Ch6_Arrays.java create mode 100644 Arrays/Ch6_Multiarray.java diff --git a/Arrays/Ch6_Arrays.java b/Arrays/Ch6_Arrays.java new file mode 100644 index 00000000..e69de29b diff --git a/Arrays/Ch6_Multiarray.java b/Arrays/Ch6_Multiarray.java new file mode 100644 index 00000000..e69de29b From 55c3f2b028ec937eed8dbed03439ed852d0a1b41 Mon Sep 17 00:00:00 2001 From: DarkSpy25 Date: Wed, 5 Oct 2022 07:42:12 +0530 Subject: [PATCH 237/448] This is a java program for DFS traversal of a graph --- Java/DFSTraversal.class | Bin 0 -> 2253 bytes Java/DFSTraversal.java | 52 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 Java/DFSTraversal.class create mode 100644 Java/DFSTraversal.java diff --git a/Java/DFSTraversal.class b/Java/DFSTraversal.class new file mode 100644 index 0000000000000000000000000000000000000000..12b1d5dcaa97806a16e633ca38112d334fdc931e GIT binary patch literal 2253 zcmaJ?TUQ%p6y0AEn2=7TTtY8_8Z4J26kI#| zAskVlsyK@01k|~O>~clh(JQuAq^*|U5;%S%bC_vL+8$HUfldKs$FL1Y&kOi&tc9S! zA3_*C3XZEdfs+CqjTF$P+8Sno8OD)NFrwltMg_WDln4C_w3KDEr;_&^#8)K9 zq>2}Dj`c6HCuv8oXpY4Kor-x?@w(PHOC7-kUQ+O~ibG2P-BfZHG4_F#poo$ znzXv0;v!N40n-(C@5gAO4`GEdtzrhR3Iv(^ifokYA{}DaFR8eUS-z7lbi~S#V)Oe= zc9YHKG}F{8vNNx%xPmm9VVKP=NSo#AehWgF!<&-K8G#dCi&@2HmH0{!OFW$?dn!@0 zT3YAL+K7^?j*-)C*@zam4;2JtTQdD@?zFX(nB z1O_`fWP?)uJr(cc1A&lX+Ke_&4K_8FChQ^t3+0>(j zidNo?8umqjwyaSwHK$skgR_T^)l?I~nXa6a)QoJ`td*x#J7-s4a?vkq>qSbAW*sfJ zy{MJF_drRLh3<)Y{@uPlVVeSjG(F^q@Um95lG7Iq>9wPI6O2iAajq^~mSa1Fv#2|p zR^D!J1#4`ftl%R#K&0$IW6lk8$J*AD_0aX1TF`PN_O8HJ&2#K2)}3C_%zRO|2Qrqm zT`i}Ys^MX1k{mEx-Yx5gs5e91Ul`B2nAM8KEEiZR2#$(RM1$B7I8!GFR{%L?7F@3B zwS1fXFDwiVz#K+wr(r{9!Dj-e|6i5+zFsdx z$yXm2nvXxObn;kp-`4rgP0i;3|71T;a(t@t-Ou}2VhX%Xy$3y z9tkYp$LYvJ3;;F6>b`0iTRi&%#s$7cKObHZ_yyq_re>r`-^4cvCi-f4?cU?x8<2(w z2h367m#YgA^zj2U#OnmXPH~@IVv*<2??MZ~|2O&+Oq}u2Y6Ar?wLh6!kX}A{gt^uG zSlGiG8K&2{Si{wk8s46MgwSg59^P4!((9gdGT@(V3Acm;cX6KbaLYriN;Iy?WUD7y zYlxK5aBEnp;l`a7w&hpp>n7Dl{lwG&bQ#B($^g4FNI*k`HO%y5T$phrk-!CvV1Xa7 z3_G@pG2EoIKzRx0$d7T{CUn`y6S9xvXjQPOU`{+~=S70u;<*poDDvLT_Yw adj[]; /* adjacency list representation */ + private boolean visited[]; + + /* Creation of the graph */ + DFSTraversal(int V) /* 'V' is the number of vertices in the graph */ + { + adj = new LinkedList[V]; + visited = new boolean[V]; + + for (int i = 0; i < V; i++) + adj[i] = new LinkedList(); + } + + /* Adding an edge to the graph */ + void insertEdge(int src, int dest) { + adj[src].add(dest); + } + + void DFS(int vertex) { + visited[vertex] = true; /* Mark the current node as visited */ + System.out.print(vertex + " "); + + // Iterator it = adj[vertex].listIterator(); + ListIterator ti = adj[vertex].listIterator(); + while (ti.hasNext()) { + int n = ti.next(); + if (!visited[n]) + DFS(n); + } + } + + public static void main(String args[]) { + Scanner sc = new Scanner(System.in); + System.out.println("Enter number of vertices"); + int ve = sc.nextInt(); + DFSTraversal graph = new DFSTraversal(ve); + System.out.println("Enter number of edges"); + int e = sc.nextInt(); + for (int i = 0; i < e; i++) { + System.out.println("Enter starting vertex of the edge " + i); + int u = sc.nextInt(); + System.out.println("Enter ending vertex of the edge " + i); + int v = sc.nextInt(); + graph.insertEdge(u, v); + } + System.out.println("Depth First Traversal for the graph is:"); + graph.DFS(0); + } +} From c06654805c37b5960d2652e564f80b528cb7bbe0 Mon Sep 17 00:00:00 2001 From: DarkSpy25 Date: Wed, 5 Oct 2022 07:46:21 +0530 Subject: [PATCH 238/448] This is a program for bfs traversal --- Java/BfsTraversal.class | Bin 0 -> 2443 bytes Java/BfsTraversal.java | 58 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 Java/BfsTraversal.class create mode 100644 Java/BfsTraversal.java diff --git a/Java/BfsTraversal.class b/Java/BfsTraversal.class new file mode 100644 index 0000000000000000000000000000000000000000..3dcf6b331bc8822445056c15ed7c6604a7a7e9a7 GIT binary patch literal 2443 zcmaJ?TUQ%Z6#h;wOh|`PD520mn_f-Atpy8~04fMJ3cVNvY1KL;Ll_7%X=Z|@^)9vk z122z#>9bun*j8P>xR%SmqW*y{wSH%kLTITkGjsOrv-keK{q1vp|M&jS0ETfh2oJmp zd@B5?5!kb&t!h0v&CK?kn_tq?jzGgj*;t`G|Xi^Gilh446sK<0~#4n%Pa}(yEM6zV+l76!oG`$5!lD5LVHKb~f$Cfy^5yHKOnI#_y3@I2^ zF@hHb_PSuV#~1MDWws}%ssxD5$o?Idk5Lt4c!jlQb=P@Yz6yK=6OTLR3MQ4-Oj9pN z0?w#N;xz$}VOAqen)%{mq(O{hQYv^#prz6`7F+ESn+f0?|Bh1Pndi$|h)}wY zk=AVq_=1WzBwEGAl{017X%%nEo+ze%)uCE~6y&T-^%na{>KOJS%X%`bp2_NVBLoH- zIbZ{F*Sjh%<2`|(VcJYOP7hKTO}a7W1!AM@TE(056Gj41n`l-k+Qxxvs9~@bycfhmHL&!kYbC706q~oRCd(O%(L8hXeZ@p zjpa1k)@=o!3mkijtDPuNa6{n0|GVvGG zKjM|;T{L~?=2_zNFlzy788OJ`E;O;8Fi)l^-`%LkY3#u=JsRM7#G-f~27~|}vOLJ4 zt(4Tkl4VKtGHxy?_@mlDB`zA5iWXV^E* zMN^nD?%}WpvvPG0#{|AXy8Imz_yw&cbPe6XiST{&10@W4`+XrF9aumKFWo|4`8(t* z;pMXXNN0QBw+MB%ms7NFrdaopp8lXuC-d$yg)&{~)X&C;moU3_OJ2!#F0a3i7{*TylT?0mkR<;MEPh zK1noOQU<2w}kW-*ip6_h*JO^Y*Hs7cTuL@i1FI(!3oOXBqq>{N%Uck zSMFt;LYDRwQc;wr3Oyv~7Accn)F{X+7#Evr86?;O|9fD=;k$|JB8j-}K0kDyALCR0 N3DWu**6{^e{{vOJMqU5_ literal 0 HcmV?d00001 diff --git a/Java/BfsTraversal.java b/Java/BfsTraversal.java new file mode 100644 index 00000000..efa2fa66 --- /dev/null +++ b/Java/BfsTraversal.java @@ -0,0 +1,58 @@ +import java.io.*; +import java.util.*; + +public class BfsTraversal { + private int node; /* total number number of nodes in the graph */ + private LinkedList adj[]; /* adjacency list */ + private Queue que; /* maintaining a queue */ + + BfsTraversal(int v) { + node = v; + adj = new LinkedList[node]; + for (int i = 0; i < v; i++) { + adj[i] = new LinkedList(); + } + que = new LinkedList(); + } + + void insertEdge(int v, int w) { + adj[v].add(w); + } + + void BFS(int n) { + boolean nodes[] = new boolean[node]; /* initialize boolean array for holding the data */ + int a = 0; + nodes[n] = true; + que.add(n); /* root node is added to the top of the queue */ + while (que.size() != 0) { + n = que.poll(); /* remove the top element of the queue */ + System.out.print(n + " "); /* print the top element of the queue */ + for (int i = 0; i < adj[n].size(); i++) { + a = adj[n].get(i); + if (!nodes[a]) /* only insert nodes into queue if they have not been explored already */ + { + nodes[a] = true; + que.add(a); + } + } + } + } + + public static void main(String args[]) { + Scanner sc = new Scanner(System.in); + System.out.println("Enter number of vertices"); + int ve = sc.nextInt(); + BfsTraversal graph = new BfsTraversal(ve); + System.out.println("Enter number of edges"); + int e = sc.nextInt(); + for (int i = 0; i < e; i++) { + System.out.println("Enter starting vertex of the edge " + i); + int u = sc.nextInt(); + System.out.println("Enter ending vertex of the edge " + i); + int v = sc.nextInt(); + graph.insertEdge(u, v); + } + System.out.println("Breadth First Traversal for the graph is:"); + graph.BFS(0); + } +} From e04231d396a716cc9499d308dd4d9833ade50fab Mon Sep 17 00:00:00 2001 From: Durgesh Sahu <73772186+durgesh-4526@users.noreply.github.com> Date: Wed, 5 Oct 2022 07:58:02 +0530 Subject: [PATCH 239/448] Create Find All Anagrams in a String --- .../Find All Anagrams in a String | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 CPP/Sliding Window/Find All Anagrams in a String diff --git a/CPP/Sliding Window/Find All Anagrams in a String b/CPP/Sliding Window/Find All Anagrams in a String new file mode 100644 index 00000000..239ad1a3 --- /dev/null +++ b/CPP/Sliding Window/Find All Anagrams in a String @@ -0,0 +1,29 @@ +class Solution +{ + public: + vector findAnagrams(string s, string p) + { + if (s.length() < p.length()) return {}; + vector ans; + vector a(26, 0); + vector b(26, 0); + int j = 0; + while (j < p.size()) + { + a[p[j] - 'a']++; + b[s[j] - 'a']++; + j++; + } + int n = p.size(); + j--; + while (j < s.size()) + { + if (a == b) ans.push_back(j - n + 1); + j++; + if (!s[j]) break; + b[s[j - n] - 'a']--; + b[s[j] - 'a']++; + } + return ans; + } +}; From 3fd4a24b87c378721f1357d1ec53f9a2470f1441 Mon Sep 17 00:00:00 2001 From: Mohammad Palla Date: Wed, 5 Oct 2022 02:57:38 +0000 Subject: [PATCH 240/448] Update binary_search.py Instead of mid = (high + low) // 2 we use mid = low + (high - low) // 2 so that integer does not go out of range for big numbers. --- Python/Searching-Algorithms/binary_search.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Python/Searching-Algorithms/binary_search.py b/Python/Searching-Algorithms/binary_search.py index 960123c8..ea000683 100644 --- a/Python/Searching-Algorithms/binary_search.py +++ b/Python/Searching-Algorithms/binary_search.py @@ -6,7 +6,7 @@ def search(self, nums: List[int], target: int) -> int: while low <= high: - mid = (high + low) // 2 + mid = low + (high - low) // 2 # If x is greater, ignore left half if nums[mid] < target: @@ -22,4 +22,4 @@ def search(self, nums: List[int], target: int) -> int: # If we reach here, then the element was not present return -1 - \ No newline at end of file + From b5bc987e5bd5620a4564a782e08c8c5cb1973e45 Mon Sep 17 00:00:00 2001 From: JeetuGuptaa <92617033+JeetuGuptaa@users.noreply.github.com> Date: Wed, 5 Oct 2022 08:49:09 +0530 Subject: [PATCH 241/448] Update reverseWordinString.cpp Created a different function to reverse a string so that everyone can easily understand how to reverse a string, And tried to make program easy to understand, And done some minor changes. --- String/reverseWordinString.cpp | 41 +++++++++++++++------------------- 1 file changed, 18 insertions(+), 23 deletions(-) diff --git a/String/reverseWordinString.cpp b/String/reverseWordinString.cpp index 790fdedf..7a4c35be 100644 --- a/String/reverseWordinString.cpp +++ b/String/reverseWordinString.cpp @@ -1,31 +1,26 @@ #include using namespace std; -string reverseWords(string s) -{ - int n = s.length(); - if (n == 1) - { - return s; + +void reverse(string &s, int start, int end){ + if(start>=end) return ; + swap(s[start],s[end]); + reverse(s,start+1,end-1); } - int k = 0, j; - for (int i = 0; i < n; i++) - { - if (s[i + 1] == 32 || s[i + 1] == '\0') - { - j = i; - char p; - while (k < j) - { - p = s[k]; - s[k] = s[j]; - s[j] = p; - k++, j--; + +string reverseWords(string s) { + int start = 0; + for(int i=0;i Date: Wed, 5 Oct 2022 09:13:21 +0530 Subject: [PATCH 242/448] Create Half_Piramid --- CPP/pattern/Half_Piramid | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 CPP/pattern/Half_Piramid diff --git a/CPP/pattern/Half_Piramid b/CPP/pattern/Half_Piramid new file mode 100644 index 00000000..4046bcbd --- /dev/null +++ b/CPP/pattern/Half_Piramid @@ -0,0 +1,12 @@ +#include +using namespace std; +int main(){ + int n; + cin>>n; + for(int i=1;i<=n;i++){ + for(int j=1;j<=i;j++){ + cout< Date: Wed, 5 Oct 2022 09:16:56 +0530 Subject: [PATCH 243/448] Added Travelling Salesperson Problem --- Dynamic Programming/TSP.java | 65 ++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 Dynamic Programming/TSP.java diff --git a/Dynamic Programming/TSP.java b/Dynamic Programming/TSP.java new file mode 100644 index 00000000..29277075 --- /dev/null +++ b/Dynamic Programming/TSP.java @@ -0,0 +1,65 @@ +import java.util.Scanner; +public class TSP{ +public static void main(String[] args) +{ +int c[][]=new int[10][10], tour[]=new int[10]; +Scanner in = new Scanner(System.in); +int i, j,cost; +System.out.println("** TSP DYNAMIC PROGRAMMING ***"); +System.out.println("Enter the number of cities: "); +int n = in.nextInt(); +if(n==1) +{ +System.out.println("Path is not possible"); +System.exit(0); +} +System.out.println("Enter the cost matrix"); +for(i=1;i<=n;i++) +for(j=1;j<=n;j++) +c[i][j] = in.nextInt(); +System.out.println("The entered cost matrix is"); +for(i=1;i<=n;i++) +{ +for(j=1;j<=n;j++) +{ +System.out.print(c[i][j]+"\t"); +} +System.out.println(); +} +for(i=1;i<=n;i++) +tour[i]=i; +cost = tspdp(c, tour, 1, n); +System.out.println("The accurate path is"); +for(i=1;i<=n;i++) +System.out.print(tour[i]+"->"); + +System.out.println("1"); +System.out.println("The accurate mincost is "+cost); +System.out.println("*** ***** *****"); +} +static int tspdp(int c[][], int tour[], int start, int n) +{ +int mintour[]=new int[10], temp[]=new int[10], mincost=999, ccost, i, j, k; +if(start == n-1) +{ +return (c[tour[n-1]][tour[n]] + c[tour[n]][1]); +} +for(i=start+1; i<=n; i++) +{ + for(j=1; j<=n; j++) + temp[j] = tour[j]; + temp[start+1] = tour[i]; + temp[i] = tour[start+1]; + if((c[tour[start]][tour[i]]+(ccost=tspdp(c,temp,start+1,n))) Date: Wed, 5 Oct 2022 09:18:58 +0530 Subject: [PATCH 244/448] Create floyd --- CPP/pattern/floyd | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 CPP/pattern/floyd diff --git a/CPP/pattern/floyd b/CPP/pattern/floyd new file mode 100644 index 00000000..203a1c30 --- /dev/null +++ b/CPP/pattern/floyd @@ -0,0 +1,12 @@ +#include +using namespace std; +int main(){ + int n,count=1; + cin>>n; + for(int i=1;i<=n;i++){ + for(int j=1;j<=i;j++){ + cout< Date: Wed, 5 Oct 2022 09:20:01 +0530 Subject: [PATCH 245/448] Linked_list insertion and creation --- linked_list/.java | 71 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 linked_list/.java diff --git a/linked_list/.java b/linked_list/.java new file mode 100644 index 00000000..a9416002 --- /dev/null +++ b/linked_list/.java @@ -0,0 +1,71 @@ +// CREATION AND INSERTION + +import java.io.*; +public class LinkedList { + Node head; + + static class Node { + + int data; + Node next; + + // Constructor + Node(int d) + { + data = d; + next = null; + } + } + + public static LinkedList insert(LinkedList list, int data) + { + Node new_node = new Node(data); + + if (list.head == null) { + list.head = new_node; + } + else { + + Node last = list.head; + while (last.next != null) { + last = last.next; + } + + last.next = new_node; + } + + return list; + } + + public static void printList(LinkedList list) + { + Node currNode = list.head; + + System.out.print("LinkedList: "); + + while (currNode != null) { + + System.out.print(currNode.data + " "); + + currNode = currNode.next; + } + } + + public static void main(String[] args) + { + + LinkedList list = new LinkedList(); + + + list = insert(list, 0); + list = insert(list, 9); + list = insert(list, 8); + list = insert(list, 7); + list = insert(list, 6); + list = insert(list, 5); + list = insert(list, 4); + list = insert(list, 3); + + printList(list); + } +} From e51c507b817d983248b74c51e3c6f466650369b0 Mon Sep 17 00:00:00 2001 From: Om Prakash <114151590+itsokop@users.noreply.github.com> Date: Wed, 5 Oct 2022 09:22:56 +0530 Subject: [PATCH 246/448] Create Palidromic --- CPP/pattern/Palidromic | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 CPP/pattern/Palidromic diff --git a/CPP/pattern/Palidromic b/CPP/pattern/Palidromic new file mode 100644 index 00000000..cb89828e --- /dev/null +++ b/CPP/pattern/Palidromic @@ -0,0 +1,24 @@ +#include +using namespace std; +int main(){ + int n; + cin>>n; + + for(int i=1;i<=n;i++){ + for(int j=1;j<=n-i;j++){ + cout<<" "; + } + int k,j=i; + for(;j<=n;j--){ + cout< Date: Wed, 5 Oct 2022 09:24:56 +0530 Subject: [PATCH 247/448] Create 4th --- CPP/pattern/4th | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 CPP/pattern/4th diff --git a/CPP/pattern/4th b/CPP/pattern/4th new file mode 100644 index 00000000..abdd5cff --- /dev/null +++ b/CPP/pattern/4th @@ -0,0 +1,21 @@ +#include +using namespace std; +int main(){ + int n; + cin>>n; + + for(int i=1;i<=n;i++){ + for(int j=1;j<=n-1;j++){ + cout<<" "; + } + for(int k=1;k<=(2*i-1);k++){ + cout<<"*"; + + } + for(int k=(2*i-1);k<=1;k--){ + cout<<"*"; + + }cout< Date: Wed, 5 Oct 2022 09:28:23 +0530 Subject: [PATCH 248/448] Create 1 Armstrong Number --- basic dsa/1 Armstrong Number | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 basic dsa/1 Armstrong Number diff --git a/basic dsa/1 Armstrong Number b/basic dsa/1 Armstrong Number new file mode 100644 index 00000000..7aa534f2 --- /dev/null +++ b/basic dsa/1 Armstrong Number @@ -0,0 +1,19 @@ +#include +using namespace std; +int main(){ + int lastDigit,sum=0,n; + cin>>n; + int original_n =n; + + while(n>0){ + lastDigit=n%10; + sum = sum + lastDigit*lastDigit*lastDigit; + n=n/10; + } + if(sum==original_n){ + cout<<"Armstrong Number"; + }else{ + cout<<"Not an Armstrong Number"; + + } +} From 3a02838e08b7549736cd1ebc7e192586e2cd4c9c Mon Sep 17 00:00:00 2001 From: SwagsShivamOp <114857687+SwagsShivamOp@users.noreply.github.com> Date: Wed, 5 Oct 2022 09:29:43 +0530 Subject: [PATCH 249/448] Create Prime or not --- Prime or not | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 Prime or not diff --git a/Prime or not b/Prime or not new file mode 100644 index 00000000..2d1e1885 --- /dev/null +++ b/Prime or not @@ -0,0 +1,21 @@ +#include +using namespace std; +int main(){ + int num; + bool flag = 0; + cout<<"enter the number :- "; + cin>> num; + for(int i=2;i Date: Wed, 5 Oct 2022 09:31:18 +0530 Subject: [PATCH 250/448] Create Prime_in_a_Range --- Prime_in_a_Range | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 Prime_in_a_Range diff --git a/Prime_in_a_Range b/Prime_in_a_Range new file mode 100644 index 00000000..a10caee2 --- /dev/null +++ b/Prime_in_a_Range @@ -0,0 +1,20 @@ +#include +using namespace std; +int main(){ + int i,j,a,b; + cin>>a>>b; + + for(i=a;i<=b;i++){ + for(j=2;j Date: Wed, 5 Oct 2022 09:31:34 +0530 Subject: [PATCH 251/448] Create Sieve of Eratosthenes.cpp --- CPP/Sieve of Eratosthenes.cpp | 38 +++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 CPP/Sieve of Eratosthenes.cpp diff --git a/CPP/Sieve of Eratosthenes.cpp b/CPP/Sieve of Eratosthenes.cpp new file mode 100644 index 00000000..93ee45db --- /dev/null +++ b/CPP/Sieve of Eratosthenes.cpp @@ -0,0 +1,38 @@ +#include +using namespace std; + +void SieveOfEratosthenes(int n) +{ + // Create a boolean array "prime[0..n]" and initialize + // all entries it as true. A value in prime[i] will + // finally be false if i is Not a prime, else true. + bool prime[n + 1]; + memset(prime, true, sizeof(prime)); + + for (int p = 2; p * p <= n; p++) { + // If prime[p] is not changed, then it is a prime + if (prime[p] == true) { + // Update all multiples of p greater than or + // equal to the square of it numbers which are + // multiple of p and are less than p^2 are + // already been marked. + for (int i = p * p; i <= n; i += p) + prime[i] = false; + } + } + + // Print all prime numbers + for (int p = 2; p <= n; p++) + if (prime[p]) + cout << p << " "; +} + +// Driver Code +int main() +{ + int n = 30; + cout << "Following are the prime numbers smaller " + << " than or equal to " << n << endl; + SieveOfEratosthenes(n); + return 0; +} From b440c2dcaee8f4956d586a6cbe596217b67a691b Mon Sep 17 00:00:00 2001 From: SwagsShivamOp <114857687+SwagsShivamOp@users.noreply.github.com> Date: Wed, 5 Oct 2022 09:33:13 +0530 Subject: [PATCH 252/448] Create fibonacci --- fibonacci | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 fibonacci diff --git a/fibonacci b/fibonacci new file mode 100644 index 00000000..78b7de6e --- /dev/null +++ b/fibonacci @@ -0,0 +1,14 @@ +#include +using namespace std; +int main(){ + int n; + cin >> n; + + int t1=0,t2=1; + for(int i=1;i<=n;i++){ + cout< Date: Wed, 5 Oct 2022 09:35:20 +0530 Subject: [PATCH 253/448] added java Solution for Leetcode #4 --- Java/Leetcode-Median-of-2-sorted-arrays.java | 60 ++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 Java/Leetcode-Median-of-2-sorted-arrays.java diff --git a/Java/Leetcode-Median-of-2-sorted-arrays.java b/Java/Leetcode-Median-of-2-sorted-arrays.java new file mode 100644 index 00000000..b290667e --- /dev/null +++ b/Java/Leetcode-Median-of-2-sorted-arrays.java @@ -0,0 +1,60 @@ +// Problem link : https://leetcode.com/problems/median-of-two-sorted-arrays/description + +class Solution { +public double findMedianSortedArrays(int[] nums1, int[] nums2) { +int arr[]=new int[nums1.length+nums2.length]; + + int j=0; + int i=0; + int r=0; + while(inums2[j]) + { + arr[r]=nums2[j]; + j++; + r++; + } + else + { + arr[r]=nums1[i]; + r++; + arr[r]=nums2[j]; + r++; + i++; + j++; + } + + } + while(i Date: Wed, 5 Oct 2022 09:35:41 +0530 Subject: [PATCH 254/448] Create List in STL --- CPP/stl/List in STL | 52 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 CPP/stl/List in STL diff --git a/CPP/stl/List in STL b/CPP/stl/List in STL new file mode 100644 index 00000000..3ff73662 --- /dev/null +++ b/CPP/stl/List in STL @@ -0,0 +1,52 @@ +// CPP program to show the implementation of List +#include +#include +#include +using namespace std; + +// function for printing the elements in a list +void showlist(list g) +{ + list::iterator it; + for (it = g.begin(); it != g.end(); ++it) + cout << '\t' << *it; + cout << '\n'; +} + +// Driver Code +int main() +{ + + list gqlist1, gqlist2; + + for (int i = 0; i < 10; ++i) { + gqlist1.push_back(i * 2); + gqlist2.push_front(i * 3); + } + cout << "\nList 1 (gqlist1) is : "; + showlist(gqlist1); + + cout << "\nList 2 (gqlist2) is : "; + showlist(gqlist2); + + cout << "\ngqlist1.front() : " << gqlist1.front(); + cout << "\ngqlist1.back() : " << gqlist1.back(); + + cout << "\ngqlist1.pop_front() : "; + gqlist1.pop_front(); + showlist(gqlist1); + + cout << "\ngqlist2.pop_back() : "; + gqlist2.pop_back(); + showlist(gqlist2); + + cout << "\ngqlist1.reverse() : "; + gqlist1.reverse(); + showlist(gqlist1); + + cout << "\ngqlist2.sort(): "; + gqlist2.sort(); + showlist(gqlist2); + + return 0; +} From 39cfc9e9befa35e1cd5de9d04826d38ade141307 Mon Sep 17 00:00:00 2001 From: Rai_M <115033416+rai-m47@users.noreply.github.com> Date: Wed, 5 Oct 2022 10:00:26 +0530 Subject: [PATCH 255/448] Added code to check whether Kth bit is Set or Not. --- Java/FiveBitManipulation/KthBitSet.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 Java/FiveBitManipulation/KthBitSet.java diff --git a/Java/FiveBitManipulation/KthBitSet.java b/Java/FiveBitManipulation/KthBitSet.java new file mode 100644 index 00000000..6581c2a0 --- /dev/null +++ b/Java/FiveBitManipulation/KthBitSet.java @@ -0,0 +1,19 @@ +import java.util.*; + +public class KthBitSet { + public static void main(String[] args) { + Scanner sc= new Scanner(System.in); + int n=sc.nextInt(),k= sc.nextInt(); + /*Method 1 using left shift operator*/ + if((n & (1<<(k-1))) == 0 ) + System.out.println("NO"); + else + System.out.println("YES"); + + /*Method 2 using right shift operator*/ +// if(((n>>(k-1))&1) != 0) +// System.out.println("YES"); +// else +// System.out.println("NO"); + } +} From 56e8764efb76b705fd3109b7d5b8883698c06637 Mon Sep 17 00:00:00 2001 From: pakhi Date: Wed, 5 Oct 2022 10:22:57 +0530 Subject: [PATCH 256/448] nested recursion program in cpp --- CPP/recursion/NestedRecursion.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 CPP/recursion/NestedRecursion.cpp diff --git a/CPP/recursion/NestedRecursion.cpp b/CPP/recursion/NestedRecursion.cpp new file mode 100644 index 00000000..157e5505 --- /dev/null +++ b/CPP/recursion/NestedRecursion.cpp @@ -0,0 +1,14 @@ +#include +int fun(int n) +{ +if(n>100) +return n-10; +return fun(fun(n+11)); +} +int main() +{ +int r; +r=fun(95); +printf("%d\n",r); +return 0; +} \ No newline at end of file From 35f3b995e9ac53ae30d8aacd3ed67fc019fa76dd Mon Sep 17 00:00:00 2001 From: Aditya Raj <79006349+AdityaRaj-ar@users.noreply.github.com> Date: Wed, 5 Oct 2022 10:23:00 +0530 Subject: [PATCH 257/448] Least Common Ancestor Finding Least Common Ancestor using Binary Lifting Technique. --- Trees/LCA.cpp | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 Trees/LCA.cpp diff --git a/Trees/LCA.cpp b/Trees/LCA.cpp new file mode 100644 index 00000000..90355e86 --- /dev/null +++ b/Trees/LCA.cpp @@ -0,0 +1,77 @@ +// Program to find "Least Common Ancestor" of two nodes by "Binary Lifting Technique" + +#include +using namespace std; + +int n, l, timer; +vector> adj; +vector tin, tout; +vector> up; + +void dfs(int v, int p) +{ + tin[v] = ++timer; + up[v][0] = p; + for (int i = 1; i <= l; ++i) + up[v][i] = up[up[v][i-1]][i-1]; + + for (int u : adj[v]) { + if (u != p) + dfs(u, v); + } + + tout[v] = ++timer; +} + +bool is_ancestor(int u, int v) +{ + return tin[u] <= tin[v] and tout[u] >= tout[v]; +} + +int lca(int u, int v) +{ + if (is_ancestor(u, v)) + return u; + if (is_ancestor(v, u)) + return v; + for (int i = l; i >= 0; --i) { + if (!is_ancestor(up[u][i], v)) + u = up[u][i]; + } + return up[u][0]; +} + +void preprocess(int root) { + tin.resize(n); + tout.resize(n); + timer = 0; + l = ceil(log2(n)); + up.assign(n, vector(l + 1)); + dfs(root, root); +} + +void solve(){ + int q; + cin>>n>>q; + adj.resize(n + 1); + for(int i = 1;i < n;i++){ + int x; + cin>>x; + x--; + adj[x].push_back(i); + adj[i].push_back(x); + } + preprocess(0); + while(q--){ + int x, y; + cin>>x>>y; + x--;y--; + int ans = lca(x, y); + cout< Date: Wed, 5 Oct 2022 10:27:17 +0530 Subject: [PATCH 258/448] Create AES.java Added Java Program to implement Advanced Encryption Algorithm. --- Java/AES.java | 89 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 Java/AES.java diff --git a/Java/AES.java b/Java/AES.java new file mode 100644 index 00000000..2ac347fb --- /dev/null +++ b/Java/AES.java @@ -0,0 +1,89 @@ +import javax.crypto.Cipher; +import javax.crypto.SecretKey; +import javax.crypto.SecretKeyFactory; +import javax.crypto.spec.IvParameterSpec; +import javax.crypto.spec.PBEKeySpec; +import javax.crypto.spec.SecretKeySpec; +import java.nio.charset.StandardCharsets; +import java.security.InvalidAlgorithmParameterException; +import java.security.InvalidKeyException; +import java.security.NoSuchAlgorithmException; +import java.security.spec.InvalidKeySpecException; +import java.security.spec.KeySpec; +import java.util.Base64; +import javax.crypto.BadPaddingException; +import javax.crypto.IllegalBlockSizeException; +import javax.crypto.NoSuchPaddingException; +public class AESExample +{ + /* Private variable declaration */ + private static final String SECRET_KEY = "123456789"; + private static final String SALTVALUE = "abcdefg"; + + /* Encryption Method */ + public static String encrypt(String strToEncrypt) + { + try + { + /* Declare a byte array. */ + byte[] iv = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + IvParameterSpec ivspec = new IvParameterSpec(iv); + /* Create factory for secret keys. */ + SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256"); + /* PBEKeySpec class implements KeySpec interface. */ + KeySpec spec = new PBEKeySpec(SECRET_KEY.toCharArray(), SALTVALUE.getBytes(), 65536, 256); + SecretKey tmp = factory.generateSecret(spec); + SecretKeySpec secretKey = new SecretKeySpec(tmp.getEncoded(), "AES"); + Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); + cipher.init(Cipher.ENCRYPT_MODE, secretKey, ivspec); + /* Retruns encrypted value. */ + return Base64.getEncoder() +.encodeToString(cipher.doFinal(strToEncrypt.getBytes(StandardCharsets.UTF_8))); + } + catch (InvalidAlgorithmParameterException | InvalidKeyException | NoSuchAlgorithmException | InvalidKeySpecException | BadPaddingException | IllegalBlockSizeException | NoSuchPaddingException e) + { + System.out.println("Error occured during encryption: " + e.toString()); + } + return null; + } + + /* Decryption Method */ + public static String decrypt(String strToDecrypt) + { + try + { + /* Declare a byte array. */ + byte[] iv = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + IvParameterSpec ivspec = new IvParameterSpec(iv); + /* Create factory for secret keys. */ + SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256"); + /* PBEKeySpec class implements KeySpec interface. */ + KeySpec spec = new PBEKeySpec(SECRET_KEY.toCharArray(), SALTVALUE.getBytes(), 65536, 256); + SecretKey tmp = factory.generateSecret(spec); + SecretKeySpec secretKey = new SecretKeySpec(tmp.getEncoded(), "AES"); + Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5PADDING"); + cipher.init(Cipher.DECRYPT_MODE, secretKey, ivspec); + /* Retruns decrypted value. */ + return new String(cipher.doFinal(Base64.getDecoder().decode(strToDecrypt))); + } + catch (InvalidAlgorithmParameterException | InvalidKeyException | NoSuchAlgorithmException | InvalidKeySpecException | BadPaddingException | IllegalBlockSizeException | NoSuchPaddingException e) + { + System.out.println("Error occured during decryption: " + e.toString()); + } + return null; + } + /* Driver Code */ + public static void main(String[] args) + { + /* Message to be encrypted. */ + String originalval = "AES Encryption"; + /* Call the encrypt() method and store result of encryption. */ + String encryptedval = encrypt(originalval); + /* Call the decrypt() method and store result of decryption. */ + String decryptedval = decrypt(encryptedval); + /* Display the original message, encrypted message and decrypted message on the console. */ + System.out.println("Original value: " + originalval); + System.out.println("Encrypted value: " + encryptedval); + System.out.println("Decrypted value: " + decryptedval); + } +} From e4ce10a270d46fde6492e137b420c68152de6d7f Mon Sep 17 00:00:00 2001 From: Rituraj Dey Date: Wed, 5 Oct 2022 10:28:21 +0530 Subject: [PATCH 259/448] Solution of Symmetric tree problem on Leetcode Signed-off-by: Rituraj Dey --- .../CIRCULAR LINKED LIST/test4.bin | Bin 47407 -> 0 bytes .../doublylinkedlistpractice.bin | Bin 47707 -> 0 bytes .../Sliding Window Problem/subarraysum.bin | Bin 47561 -> 0 bytes .../Sliding Window Problem/subarraysum.exe | Bin 47561 -> 0 bytes .../Maths For DSA/powerfunc.bin | Bin 47385 -> 0 bytes Leetcode-solutions/Symmetric_Tree/Readme.md | 3 ++ .../Symmetric_Tree/Symmetric_Tree.cpp | 33 ++++++++++++++++++ 7 files changed, 36 insertions(+) delete mode 100644 CPP/LINKED LIST/CIRCULAR LINKED LIST/test4.bin delete mode 100644 CPP/LINKED LIST/DOUBLY LINKED LIST/doublylinkedlistpractice.bin delete mode 100644 CPP/LINKED LIST/SINGLY LINKED LIST/Maths For DSA/Sliding Window Problem/subarraysum.bin delete mode 100644 CPP/LINKED LIST/SINGLY LINKED LIST/Maths For DSA/Sliding Window Problem/subarraysum.exe delete mode 100644 CPP/LINKED LIST/SINGLY LINKED LIST/Maths For DSA/powerfunc.bin create mode 100644 Leetcode-solutions/Symmetric_Tree/Readme.md create mode 100644 Leetcode-solutions/Symmetric_Tree/Symmetric_Tree.cpp diff --git a/CPP/LINKED LIST/CIRCULAR LINKED LIST/test4.bin b/CPP/LINKED LIST/CIRCULAR LINKED LIST/test4.bin deleted file mode 100644 index 3c1f12372ad5f3390b793770b2f1f60765cc71fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47407 zcmeHw3w#t+miMhrhcqOl6CR2hwPAvS1A$<`prGAJIuFUqJa{NrUZ$&gC`hn7 zN^MUZX4d(}-EnthaOPuo-5F+vMSKhs2qxg5Mr1~2a9kYG=@`ag9K-;Q{r%6qRb5@_ z1pW56-|ySs?i5t2?*E>9?m6e4d+x1U)m0^TZ)b6gF)Q|Pn6Z60(&prUFaM_l*~!v6RES{#inj=Zu;M{{evCu98h zap@ZCayMhe(s(xJo0IFzp^Fm{S1NQsgqjb(tS7&~DTa7@AO#7=+c95~4>VW%VC zQjkL8S6+$h#h63TQUNN1O*@E02V-ps;`BfA*ZMSLQ${GbX)DBlD5Gr|if4m@%oDTm zhXf*BBTC>L+iF(6I-|Zuslj;~0Z#1Dna#r_`?u>RpxQiOI96RyKiXy@(=$vyj zOc@7YHTERz+1R5tqRXiDdI=&KSsVR{-8!h=Mo}-fVFzez*z?S^T)y0jDnhxfw&R5K zptgva(RGTm>n?D~Jj2$Mrv)GBQ9edQq=@#6=5n);o6CF3EK?pr^ zjMV?1Gyj>iU|zZ-$bxL~H(;UlrHi|8@UC7QkAuDQD8%Z^OXr^1XH8E;GUS}an14vJ z2MVEACy0Izv}?}|q(Nr4|4`aNE8DK67e4_uO3~u~Mce`^C>H-MPJM4hF(sD?4SrQ) z`macJb}M^P8)bz1_l297bR(5t zd@Wb28d#JBq+X~|uu@h)r9c)DSh?Ps1Os0Iv|Y1-j@dOn(KSy6ACOUPq4BA@6z_j7 zYSbusji25Goezfxj+pZjspLs5?_ZJErQEH<`VXGGgeO6L%>4+h(E!}oI^@TN=CJ(&xSURMb6hKhxpodFw{rPc39~I zMQ0*rsXd_;AW_rOLj!cw+sl7uQCD92EZ$Zihe}imN%$bh^3qdwSRt_gl!Wsnkj|hw zLes&+e`rz9cKA2SkkP}FPeZ-Xi)MR@e6pOD{~dFFczVhsPS&+fw|{s#Lwb8;LwhVm zgQSqH%fbHKOm1s(p&x^(21C0SMaIrHA-;7Ys7YIa+tglCai#|TfD_wxGN{&hUP+}q z8x^#s?_2F;;a}~TLOI>atw3BT6xyWM`vPiZ%48~0M%-ZE<${}fu=AKQ76qtm_!v&+ zPD076;lf>>p?mIK)dMyA;;GK;X->9(F8&N|9ULFgl}@0q|ICyfT(EA=jSJMjgY<$x ziBw^N5avh^r(fnj|^ zw5W#<3|&9-pxS@nltt>7x@R6x53BC8LHF6dyiOi?M=PMZZG+GDxz7pK=f-ZC9CV)x zq7Wpr`rSj4-+fLRd_U+O@*i@_t9rOLDShtGBC-^W#@Zyykl+28G#Vud@zbFDvm=82 zB(R5xw*=j`+uWaR&c@N-Es>c{!PQjvkO4GdXsiss~zjL<7(}=k{_Y;GU{-}=i{m0 zTkL@kEnwG$!AJERf+A{fX!~>wM|mvuK*)OFlr^*h@pR^)KKE&ctUM6d%(v}rrA5k;zT|0#sz!e*APv5!+%if%?Ynu_=@in|K{T;as&jsBzxxp9Km0G z#qT>ljcUp4hD-n%RpZKPTgRp9;xw!T~DOdlv|H2mg69-V{Tis(13@nD538Pc%L->KOqJ+>k#U8kq zoS!$b}vayNuXbRzin?JQ9tj4ek@Y2{c|B+*ch|SAzTIqw1pcP!hPS zC)A5tXYe1Exc3iOQJyyt>?lk+_JG+_QBxH{=LlZ^SzQ1hkDPy>`>yzcK|)# z+d+us(}U<*j83g|$|R-Pf7pfyu=Na0rx6A1KeVO?pGrTB%&mL);hpY@%>F|-k3fmw zG5s_t{bq4`Wa}lO^IgZ;TBwE;erlyt$N2+XBInK-=t29yyTkrH3Tz$grjyi2Wp;NS z+Zex(t~_};CnP74#>P{Td;W~TrfoY?oa71^f3C-jtYLe&pCeu6)}Yg>PNrNq#en}% z(w}>%y%5@_1h4I0j4p90tW51ZsU(Fb{R2-AO1^UlpR2DyZ1sE!zdkhOo}SE;gBG=? zD_06m>LjYpW4^P4M~wcuV-^HL?Fo>H`1i#VK(-%zf@A&>;DgnkbXh0z~Xu5~A zLxo^J0x-DKBu{3y(H5jHmk(Afgn*&P9Ed8{I&q5e5T>5puss+@j6S~}(w?zmESUuo zG*A*|VYXndRn1Bd_XqE>b)NM7Qs*)th#}!U_x3EU%sfx?^E@y`xfG!4S>XEh5Q&`x zvGs8<3xzwo)gHw~N@y(AI3&{5Tx;lkWbe=fRJo)&Nv8nrS>WRjCaIMMYRZ~8?V^~unOh+gOmn%P1p zDfw-36~1wQ*+CaZXgS-J;H5iWmy(_iZb`Th>sszaNKFbY!^I^vqpF~zq@`035B(Vn z522;V5N=t$OnrT6rP`zZ3Ue6DLehyXNa$LC(|bXRNI_w87htf<_75Sx_=l{%Y3e30 zR?@9>;cyJ4{D+Fg*dDn)0sY*rCU_FqI*DyldJ^&F4h7Fn zH2+1X@&o@xtFnXZA{bB~n;XsOO{)G3{98x>{cU6!QUz8?hgCw|7!Y=><{d#v(B>ce zc2&ZZ@q|*t%-(>ce<azP)Dl#$nkhSY4jDhNJ=&yZmrLF5RI`dz| zMBrPX@n3Y<184Y&%^vtEPGA-*l=&Kzfo`N4)+yj0yf(q!n-N@M4Nmm;*y6rH+`1s3 zlRa-0rPI2|urz22>h@#)Lk_f9PvrVm2tE;E`$q^b)anbU7k^LpNBeW%CWZ|dZ^mqW z1y`xznIB7U5L>l4J?(i5iL?tM4J4u%x}kk8UyvRK`6^|q|Ke2pw+`C(9+Tb}+(YAQ#|DXYwON!a)U$(o z(H<|5(RrcFV`_g-=CQ$_nZ_rmy%MtZV$29Sle(5mUDkg<34YzquEOzvns3_|2c+|e zGOhEZ`kTIdY9{vZL=itflsa)K58uN@*vDiZ8ikB_jPcJ@AL36R#k58C{Zpvd!!aEG zORLo1+5ct4t829KUIX-+z8aJ>4_SC#ZM42Ns&`+tLyUF$J( zzgjPfwL|Kr0lEhAUz%eNP%rn>HOHsOvG2V?{jK`xrwEbE33-32&Pv}_m7X5@6#}c; zix88hB1RoXYG$u}FLFB1`<|pIL z8C{EJbcU6g3kTJZ($smrYpvu9k!Z6?&^}ObL9Zu4`#QtEw-7fSL2&T@&SBp>X3;98 zX3-WU7Z-PdZr?{(h{BLd*I*6XZ(Et3rj*(D%Ov5z|AN>4Y&IlQKOOi0=a_$h$-qIJ zYU2@nF3G+(UjnPa-Oz`wN2vnecfqwQU*c@3cCbU`+wFT3PAg?E{<9F(Uph z_!V&byhHq8r(Y1O0>O%;+KKAzk1xhwZj{#suQ&V&s?X}0mEHLVW%j~L>R;@ECEyMN zZ4UcRqcuZGS3sGUbpw4q83uZ}^AEl^ha1QqScHNQGg%nv!+~FM{iF4LU+6pd8a2GW z{<%zjnf!NF$E_Lg-AVSnh}E~C{ZQqkt_P(9p?LpUS__3pcX z0eaDZ-5W~78FWjV*^99%;3t~?nJ4^*W@+th-&-xIJslTs@}-FW+Jp9+h_v!aW_RG2 z^2^|+^ht=-=qH0oLf?*u!%X>^dO`hIJrTm{3NCPcA)TXr|FSSCbcyuXEKOBb!<#3C zrXxP9Ftk0;hYb7P5^C6i3ovQNmN2sixbQCzez0Br)y#JW?gCTIzd9~t*aI|B+xH*v zhcdXjkj38lEU*Du1@BsAp(-Ft_a%}=xk>%);I|^<)BbA7|FVVFA6}*s`#GyIpPm>P zqO-kj3*7M@SZETwb1-qczXwjKOtqzDs}J>$+bW$VAQi zRza76-QbgXa^U+o?7M@2@6y>lboMQrb*+j+EpdZSi7>ZpsoINBkC{m@Cn+w++GXve zD_=N-6?0D&UHF?55u&=48))3FOj2`gT^l9o4e6r#5N7w=`mEbQj)_$Y@3K8O;o*-4 zZE{0>?ly^E)5V9*Ku*j%z|e|VHI*jv-ta>r@E*R19_!hPCafBW7-EFplz9=LxD&$kC^ane;D zUihZ(UHe{VSgk(1&Ak(iyc5;i7Ok{*wu2y8eb~O&w-Z;ty;$$C@3kzNV}GItxlbIh z{lfPlG~~rdDEBj14ujTx?xWBH=6NZ|w*H=V;B+&VpzMKENKc}_KAv1d?Xw5=!6rfX zGnA=t)lh^e=BHBm?w}hhb+j^oB_)gMe%6SOw5C#M=WKexn6p70${7E{wiMsHUH2vh zOZsVn=Qp8D-kp4}+MioGCg^@v_3ZA-v)Hv(e&#&2GOvf08X2xO=$fE&6X&=GD)W{n z4|q>HOQIdblna-qp>NU@EaELIIUn^bP0%p7jYqV_6enE zF?t??c~W|43$%qjdeyh>fdZ;{)lvT?i~Wgi``&JUNSfM%B`tN;(Oph^rvi@+uG&Xq zKiyQC&YWc3J!;?Jq>v2~b#`M4zQp?QG)!aC)n8DT2}4@ym%evG$-E*?vE?204a~sa z4x+Go59XhAwH*3{o75hdLe*67QQK^NPE>9$SK zvkU8J`hr=*cGc5O#%cyX!$`M$LdI6#;hm}v3t$wUwkR_eJ*3T3vLC+NI4VM_q*^DL@G=!Gc7Gc=1_i=+-4yXG%mRQ2B#LRq;}nH33PAEk$hRbITl^Bfn?}M z{2}5j)cY;>ar@p?#{(z3+9favTp(k7Joq@~0|jyFZ~T36gI!|$IUv1Ars;Jbmj?SA zwr@jqy{L7Jzt1vYL#JOf3k%aAP={z~8ERrmS}1i~+G6j#9ze$i3-e7F=tLIhNAq3f zLG^%r?+Qzo%K|#(Ovj~%l#LyiHv6jmA4$HSp*Xs+G?+m0+V_%r{sR~Vw&jFdoy~r(cT4rM$oQ4jwrebz2d^)l}7)CWRMTSxxz{cMU^eS zGxohX1P;DOo%?>=)kL2-XAgWE7fM~#CqgR1D+C+pht%rffzKhsd3S$`z4JG)m%8e3 zuY2dpKKC=Q7#r}S&l49P?nwlz_u z5+D8h+@us6*iL4R6S1Xp3N@^I-#`j4dJ19=RMF|?L!DvtPnbS5jzkdyzVD^r80Zjw zi;PIq2E@U8t(a>M(mBS5lAQz3!0vjK`8ryKNPj}v!$Qp9HaHVCC5DrMXQ{EO`!Oea z>Q9lem7I?zg&&0M;A42(ug~%Un*#7F2*B`unghZ6$-xk3$ic+)=RFF#B)@R5Ye=(d z8%_7PzSXwSwOIE>E0NwSsXF)Jf%jlA``#%y-L`7yz%P;N*nFJX1IJ*}MYGh8?VTsk zbOW>S2f@Nd-DC&2sMSZ+*9U4rWWGMs?yt=X`X&We*@Bz-%IBwjG;k{Ox8D8&Mtx;G z+9?-`_l=<>{2*A8qF#hGGH6+P$f6!lu0+UH5A#WIUp_R#!t6on|Nh^nD5q6u;5kjR zoA)tYF)a0?KSH~bQ@meV)r*66em^E+u4~NZin65deYNBi^{ZFMk@13_(_mu{Y#?v> zSS>jndLI!!SaN!x0fCrmjJsjjuhsZ5`Rn_W(#}K1=IS*4G3nB|`zAU2PIB*sMF6+R!Lq zx(nD&p1^vfUVt)|A%mt5dOhnYjn?=sj=}jx_8a;J>(1J*-TyKUZ$)Dzspo zOj!VIj_(8ebE)cKewu_yn*F&HI#u)ULRjA-*~{{du5WMoo(2&$`xXAb#?;_Z*WL%LjmjbMwZpd$_q>Rq2JwGIC4 zm9&Vpj9cg|2z>t@bf3sP-=Jo4x#5Ij;0`50bS&G!OBHLcb&Sca9LOWLD#Q_*QAEJ4 z5b~+BqB&M7yix3(8zbE^wy6eIB9phtZ3Py4C#}CW__tV@z4H`KquqEnP2*AD37WC{ zY=gmuh09Qa#tb;azyzwKz^cNW&lOn7`}qCWp!+l`9ms&$?VbNZf1fM)U4#F^9AzB- z!kXXKv4w@;rt(y|m8@kCJcJatdEfz@sb>f7!-3Wv^^MjYx1On@2B}J?2dc;`Lgyi& z{|r{E!)mW`Hy$=vlGLE)j>+sEgd^vU!Jyf&*ov-#(>KuUm~ZD<7h%khe5ZnW=_%>U z{X;41CiUgoaQBvNJw)vJT_((Lb8S)S&|ff9#luGpRNqjX8mDB2J_NKiI}t^cD?`6U z!k=wXUJSj7vp$B^8#egEP%lqRqQs66EoS#I^hLU5II=$134IXHdKLLUrq24wX3;hO zjny&qcO>)B1m#%h`iNvvI%@?Z>qSc|x1N~=ZG(YyCk_-#{5T?-;{HEQ5UBW5bku1m zTG24FAM=wA;Ftv~B|$u|W9|Az`18*{|MZQiuWbEY2R3Ek(}Nuy=#znQRPGJ-hW|v| z%pojVTCeFqoXPD#n7RG=m9QEjUIJQla4wC1U%>2NK_6lE!cCOA)SymEpgRoKu1B~G z$ENmA=OTRgPb7hF%z;pfzXyXZJK#SVH}g`LKaE5}#Q8ZIjoQQ>2!K=9t|`DVn({7; z`!%#)_cf4Uhzx})(V55}AEgJV74JSe^gTKWe`%u#MVjPWw;m#6Y8|;@`+*NrsQ1uA z4tzeYrD=l2)1ik@LFReQe-4J4knH0R9S{CnNY?VW*ZlzVh|Ke$Yk&>@ePn)%r9NA5 zWqJzMZNG}!!l)XHA<*e>>Ga{$pr7Q##dJNy$7Qxf#oC+go}Q4E*Ml(@Poxf>G2$us zO#wd#_@!%wVW<{R(=Fg`#ZCd_+u%t{>A1fhqN}AoMvV4B$ME2Q*}tOrO*Z&lr}Oir zgdU7A;0(L`)C!RJcbIyS!MO&?dwpCvvN9*r*Vk|>ka|2M8yD;#o&ATBdO|lucnYCD zjM$6cuf%jFohx~MLmBC_41!}4af|;&vR2r4&EPDZf5d=a!Tb=lOcX|jzb@=mxky{y z*6u0nCE-HVV=+usjv}3k*%+ii?wc{-9I72(8Ye$E6 zOw*22wBsc0n4}$T+VQikqW*K*@r-s1X~$FA@onvRTswAa$CtF@KJBN;^KO9iPyS+qL7@wBt7I7|@O#+HsS1JgOZJ^CR6mqkouBt{Qmkmytn+ ze6scmC)>T)$!McAKl#7-17~IEK4Io$>^S)RM|k{SRQFfX|3VgMYOGyTS0{Vr`t|c> zXJ*tlH8ELk_pE93DxP+^0l(w%$c-%xtw8HNBjKFEeX}zch_ZLClPk2+xlJ`*ug5Et zB_E>=@rO?(tT^JTfbJ7B2X-g+4(uj^VaXBcFH3`u-hm%0DUHn@M?+0xlds)#>p13cENyI8d^JsX`8@3#d4{Ln(a_rN zm|pLw-KcoHjvB>LQ(xci@p>K8+rSoOs$1@FXNyoH3X1(J^RVuq>mseT@S&vw4BpnURvCm;18(|4KK!EvP+cqyC^g z!q`dNM|5cCA8F?sfRDx8i17bc8_n@)lOC*K(k7d9O_J5R4MNd{1wHU`>PO-5_esdy zWQV0{ymP&m2B&@#m92(alTDsEcXI%y_^e4 ziPy8(mx2~I-wa-*LJ!J6ioFo|Bk4)`XRuRwI*-V*{PK2K1X7}JLb>l!u+{CC|5)6k zR)2ilY>As&Sfn5^?nrdnl{lJx(>1<(o(qQ)$oEzy+x!+wVN!fjXPkx1YqQ8b$=1=z z6HamkFgc!uBP&f#SqUF>;4};SQ^50aBzgT7IQD(xl5H+9bR}|MTaK*5py9T_`Dpb} zKJ71oHWx?gBh~04g^8|8Mw5g3BFT{s+SNFk>nTo7D@t~hC#R93{BLe@613$N(=Q$v>05}h z2shDX-N}w(NR_LR7A1O<(+Z&>=ix?<&ID#-r03Jvw}a1jaE#ct9JU1uYf+*QWQ`C( zLzg7p&C`th{S@}IDF1C7$(A*+r7N+K6Rg5{4zU0}njOdnv=_e+4&O;UO!j819uUd7 z3HfKW{7!0*$Iu=rk6K;Hll<`o$*Y$qSLG(JZXB092^yxLeUe;#FxSfz{OXg-k!Q*0 zhujfJU<~rHXRupe42OR~{(E1t?J=t7(KuIfir<=>JlAr1960xYb1yjeC0p-=4M)>! z3RsX{hh7SYn{ec@*u{-AY8jG&%CMh>!+%T1qKNNVipFV8>Pqx#XZhrmk6IXShboY- zMY%dE=Z=(vKUfNlR!6@_b_e!nLHlngOZJYjXKr$NT#E!l!3j*Z%uTeE0L~i*yAmyA z)>v4KE7WeE{X87Ldi467mZwK(7gV=o1eko6`T+fu_0WNEcqPtB53Rl67k(=#?nHY* zgGhV15|M@O8v#&^e0V$fybV4@IFItbf@DW)RFBC|q`34F`Nl!S2AiPeV`#1xJL}`3 zVrMR=KLh&JuY|+zfn3-cW3Co!E%{O8P|67sT2y!Z!We(dKIkYL=7NQZ>&-qnnm zBHu~}?{gHKc)Lf*@{@5rxxFqC_Fai_NUnFn(;-# zd_iKVksvmswIlfk?Nx7v!*s1BYzF_}Ga~~2y8TzNz=jS(l1-0dY}|@C7==9n>@cwY zC~V4OSSJEjj9uSm0V{t5{Voby4QwT_k+u%tPh#JVeLwbBu)mG{4EBrIll<@@>~pc_ zV80jpI_!^Pe+K(cuph!s+i@J<(at}_@gnwd0miPzJ_Gx$*z>TLV!s=E1NIi|4`L5s ze;oVYWB(rZXR+_az90Kx?8mUbgFS@(W9*+}w{#)|sW=Z*tE%mugtzHkC%g^&0+r3JDW0S{)u)~p3yl6!LtEK#QkEgh?w!Nl( zBMV3c9woQ6xw)pLzPPak1wJRFxW=ov+uK{)aqVS6x}>$<*W@V#k>E)fRqqnZJ@5`o zQ43_RX~OEvaB(x@iaj;!VqlgTSKL~ITDc^URIyfil=pvb&7NYy|IU}zeCFFQRJGoHd)!& z2IM4@>pW-+#;%oQPkVbyD~(EWLmO7XJV5Woxv#0ItwvePc1Ut#Yb|3xz|mVL%Kz9R zx3+KwFIeO@0shHCm53T|v)0tMwks^xT7!4xP(62A;UHK=W9)uw16mRh!P>AMj)SwE z)@Cj5pRLWcUZr(?9abKHWNr2|*R^d#tgyCw1i>$?sDjqwnmp`PtG97YOARKnzp=tl z+)nS(S(67A_={C(ZE9VQ7O=*zgIw6II6p%k$9Zq>DDH%yOGt|DNo66Z1u{uHC|8VeDB7VI(dDgvKCEQ-`MJ|We*Ia z$sz~L&2+B=FYicsc_QxbZB4tZwAVB$0Nn1Il}3-dyb`Us zB}KlwQn|UV5w>`QpJ&yz`p^&^sOUdoU*fJPbr;_}kFOkqfnRP%88lnnSHFr?Ra#vCuej0LH>3Tp+y6)lNKZRi8umqa@XNa0 z`9IPI|5KHw>of~j-pcKxMqE0OGYJ|v$nO_Gv|H}rYdu& z6u&RY%hviDo9YcN`W?&Jb?vQQ@9Y-b6QBL{M5=9 z9IO)M@cIY_@>sDH4grVlO(%Weo10jdbB4x3}3-!5@)&#DI$rR&cT-?+#OC8n46YH3zJ{K-N#!8iqGhOsp9v5WZ zjb0i4)6Oif5MU$9jVMF4Qy#LK@I(Z&yhl%pjgwowxOLAg7l(KyaDSe>6iGJM+y@`B zd}aWREd>09fJ9kbQ(4>+Rc5g!(2ae5Q8ca<*L^MZEN&5(3n~0(af|g7i5Pdgo`R+< z&PB2&%JnrHn;O@wRhV@p=b9+fLkth%3X54+NlQS(m8y(GgPnv963QqK@>a0kE9C-C zG+1mFEDR10a}J4mfi1j1!rB_|+I2NevclqTBE=HcDmAq-p)7vRUa%ZveF=ZZKY>5L zz@AKh0KS2PT@ZU7VDSsyMS6_&_xL-WRJ()|PAcffMYzgst!Q@`KK{k;gGOX{9x&kj z#{gR-Tf`%{*Qd}WaLbz3Ho2y04YQJ@wrfKe&Qe=i`QnUkAR|(?R6Hkx z3v0+W77Y)%Y;p074dDdoKj1LNnveF2qi1;&p<0^<&+BlNylhO4M1&f=&cGkzI9{G{{0WEt3}di(sypFjGKn?5r4=g~Yg$-BFSUh@#oYpGgAYi( zEGwaVAMx;sM_gp`UzTu?7_fMe=sQfsn2qY9Q|@$eERM=eK$xZFo7Q%@uGOn}vGAR6 z^!r#Tj>j`JEa6olRFkKMCA>!GR&@Ht21Qe zDoA+a1+YsI2p*kb32zcfdVGE3x<)K#Bpj#w8S%}n>%1_-uSnHJlzI>;9@U)jP3T_q z?2{L^I6;nxHe@-nqeXvrE#ev+_airyOV_UovooC8=gXh+5WPRPpm zhBld)v4nT2$XZGZ7QdtXCQ54sP7|;pzPWjWR^kIH5#WF*^83@E*v0{^%m5+VDRCTRSdU4#M2Qpe4Rvdg_>2;7$2WK% zz$#M0Unq5IqP8BCz@!1_dz#X;TBW5!6TJulSPtJUV{u$>SBnRW5g~k0`2gy^l0V(b{&c|4{fJtKGhU^8Jb`vED566wMQh*RR zMHnq}l0@)iPEPYccx`oF= zSGWu0Ja@UfG|yd{y8@$tQL54{k3wZJQ&pB17gZ6bN)~72=wme7EtExpF$O_?HDt;yDVJTPd2&vLs}w|d1Tf+96brJL z?eY|rWh7)J8#|25Ra_la6&q({SGZl3m1VhdQE8Q2RYrD#Zth~17)z30ZlXvsC|tR@ z)g{%%t}3@&R$Wz4R#aLbyDA{Zc!Q?AqO7>ApxP~0S5h`i=4Q!8w!6G2Cfjaglf8=F zE|f_z!1C(KLb-(7nxz^r@h?V`BbQAu;JmWx937r$z&dqVIh$mlIx*1623qdQlPe3$ zDyroC>eAe*qOwwUg*msvT~%FCTFI_7;QX@c3i-}zGVq~GYs+PGbAZvv? z-wjV8%jCFA-T6hi@M(6HL0X(!uDQ|G28hPXgC+Bd@>j5H448~nRGORT&Shx^iWYVk zxGUtme3WqW2B>7$8u?}ARkEv~nq6l=uBBx~d1QAvzpO%b<>ghd>y6yX;<9CO5!xMp zN^YJVK~LtWbQR{a>1HgqxGIm`V8(K)*o|hSu!x&0zX(FiFlSXpWz95a z<>yzp-R0~i19dO2lC$UDoPCR&TULsIP+C>VzG`GIb>~)y~JObU4 z2PV0av_WSnX0r_n0;@}Ps}z^PEzq1rCGeq)(Woj>ANs3CHpfg>?#f*P`)aLFR9aaY zp`2@`tXfg-E_PQ|q8Y%il4Y8+NtU^C&I-AFd07RUXJnE)RzPS3Tx!KiiY+h#yZJIC z`4wd)oG5EVA{ch5yP^`^vXad=C`42@xf?>6AVwoBFeu4WL_^5Y6t|2>5n+&RWb-aj zURhY3pTia!u*OpluCjZ%JGYvLk6R5Q(JQiYRv?N}JSbWYYu*-}zkJ^O1*0|dqRSAP zTY9mHGIL&bq-Ae6a* zVs|NX85xy@Mfp{kEXP3Zc2lQaUWHLx7Il^8v0Nh`eY&I!_Ru;Z1sj%UWaqmot2A3N zw*g0mMR{38QI(tJ8<{+0lw`_Fi(E21vcSkGEvtfc%UwkkE({c`(8$qe05r!CV|h_j zrY7TEJQ}b&V{;0N#GGP@k)=6pr@ysKhBt1M;9jJ#sBJ#LEIzKW~X z`!Gx7v(RPQ6qC;-8$2}%egT3@2``^VifJaTFAke#UX+sYOgm@os=!Q)1|xI2oD8qc zDK!!fW#?dNfhL+9TuwbjOdNSSr*fIAT$?9yfXf^&WWEknYIAHcE#`t5GFvSqR3c5J zBbQ^iv||YqEu``la(yeVQ+;%?hkNPrTKu|47Uazho|ZZgW?CKshcVU){GE&&*>WBI zqDPxr-xj|LZ@)_|EfcQEQZWr74fE(=NzJ80Txt#-tf`enbc|2Us84J#(vX&T^T7+5oa*>mmTI?=xA#`vKNvY9;8|I6Al37lfm>nWf z2`@!(ptL|elh>BfHaG6kA1z$EmjSv7_I|k0ex}O1-mcb2OaCigC#dK#LF31d| z)LrN*#w2)b6jq5VycIbWMR^5oTy`0>g|5nFZcO45qp+N^Qan&m%#xz8%A#V-X}Ij; zqu?c_#poXfyUHaiNJrVVbouDPLruAj=Z2jzV~FZ6`P7_mJe;R$og!Jz$nF zbu3@*=j9q(>RRcBSPaoLPGqBCdKTWR_r6m&Pejb+Ar}v5q32B>O9Z%=qumeUi`xm+ zcNOt2FxE#=J?^S&Kw=X&Mq=-dSgh6tEMVbAhAj^Av^9A)ICQ|O-z-XrWa-G12x7Xc zlwy@}BM9s;2V@pUoGj}L!ZNeXfFK93bA`ez?#DP!#1m$%ZFq(V0}pN$u(5*@kpQl1 zdQc#L;z&Y+4-Y-j&8TrVg+VdK8jl-*SK9uF^HiMCeHodqcW_CJ_${+>bH)G$m=_Js zC2$HANK76ZA4l)UpK=4G>`3(^_18^GWhrA)r3q4;?Hb#3+e9qBAv#JpOC%%(ZfQwp ziHWx(3HQ2z6-~r~{6vr^Cf=HOTcU&{zI_m9qeRifY&=pv#twQSOSmF}V|MnE1){!Er#mrbscETy{9Ex*1UyB>I;+*cDiZi++ig1SnZoJYBrP=(xRZWZH1%_Le^c)4w z5WnecHds&wlKNu?xS`6}n%bt>^lSpH6Y#C$vS4N43yf{vxpTe294E}V9_;BavVRQot(T2hU z9v@O_@ve!Mj5@is_C6{_r8ytYBFO(zxZ$GX@6*^Rj2p-gk#g!Xlb9oHhk(sRZxp)g zdWljb^K~ePSw+;Qf3=k$UYCU8!!}*_h|JQ+1I*hfw+}mUh?DB^mpB@m{^eIfpa^K{ zjLfLB4{%PuAQUus;qI_4;|&kguD*q2@~>1AWxc*Dg>^31bEAH@{kap;qP{GJ2IOD5!RfOMM> zdNJ}L6Y?7%hfRnT4Sv*wWCH0oA$J2gZbG&KIblNn2?+HKL&9S~PMMGkKu((wdM9DX zgcJZdV?rJPa@K@A3FMp!`8kjw6Y?RD&rHY_2}r`v3<(zlv6_&2Agf^`9$Szz($)%^ z&vhD3uo1{A=%z(u`b`h;9~+1)D|HR>+-Z=BXh;HhE=pyYkbeV0Z(A2MdSnywKyHcN zW0uUz>VNde2642=rso((J+e6fK_u{rRZNds^_0(Pp21)9mceH`@Tl1&A@QMFV|jf* z#UQER^A$?PY~(5QT0G)_Q3hvFJ!;c+@8H%TUgFEv>9?!|AwUC}k5^!uku3Ukt%+vA z3?wx~`_gv@k|evqd3g+HC5Cfb4Ck~j!MQ4ib6X7OrWnp=&{#rdCoLmq%$-Z}()+|9 zv!=zi7%j?U>Y{i22|k()v)0Dc)&C{x+8$F^aZFunW9q7pscX-dsEc|yX=}7jVN6~1 zF?FquscZX}sO#yNy7FS`S{+l@%9y$WU!tyEF?Bg(>RK67*YcRUl*`lwv$5B~bvLie zfh8(J%$x2%f(CY$=#4RW3;(d~*Wgo*=Y4o&y9^&eLwx8BF;F0C)8o$!U=Ul28&L$> z=|`w*HI@WMtBc5JLb_e2!SDI76o*)QDuU>G2|iTUQz!)mqBcEdrT`;JM~Y**%(IYx zIhiLxp7JD3W?sjQKu$#vT^@R|8JRCmdJli0Xw;_HH5ZtuizG8|8Mzfz>C5xz@hM(f z$UGvAi%L@sqtg_-sN|?LN|QJJ?z`_!0}Ye`pV)@aAR3p8^BIkX>c}GdjE}ZY1=+`h zc!6|aSmW&;iEL*h7P}FRWFAFyi#bt)u$Tj9vD-FqUJY}YIXmFyqAe2P^HWX5bk3`R zj@It_SeXPSU;z94vxx^K^md;+L8~h=e$9Z{(J_t4Hoq#Szn6oviDtn{2qTcu$Aavb zy3%9nDvznFIHoS=P78Ett8rOIlBJH z?L{^e?RCuvRuuMefJWG73eIB5s7F@gZwMOFi{AQ!TQO0a9>;WzM;r^<>uZ!6T>VAlp$HSZIUvue8M>yF zp9$n?bTq>nIY7>ukSZX~uSV0Xp;9Jf1Cag*64C2MDn)v|i^jk`wx~^;!Oo{|9-AZN zyhzm2Y4T!dZiu0A#?Yk2&@76fnGi#h9YbS_p~;G&p{q!f7W3!E(0m+2Gb@IMe(7Q6 zGb4uPofw+*7@A`-G>#aW!!b1UUMo}W3--s*Oo^e{8$&ZGhUVGfGz-2r9GRaKQ|j+y zXlyYwj}NC=5Qsq@9FENY3~p)Gv}HKWf`;M9{Btp-?v9~36GM|1LlcUjxiyC7R1D44 zF*I+-(2N^Sv*02kib>P?$74!;IGiS{A3gO8O3m+%;d5v>pZPDv(EKEZhN7sct_9D; z(Cmq!c{GM*cMQ$C7@B8eXzq=n*%d>R6GQV%3=OT%o3xn!bPP>e49!z9G)XZuPsY$( z9Nr7&KM_N7CWdBv49(jyG+&FMc_oHsTMW(q7@9x~4XxFh?b8uM^JEOorWl%z;WSwr zVth5G)O;ElO|>t0C&tc)V`z>Kr^z}LQ&&_eZASea@QJyf;%TYJZ<_h0Vyw)@^bB2< z&mOQo4TNS`P)$SV$2YtA>YM|kCog9DqmQt=I1P=krfiMK#4tWYa~Sa9h+bqRb6rI90rq;d4*r8r z?5t9sIh;jNbGw%gkC5|E$I#3$XtbFX#Y|ooRnC412{-7qN099?$WswSlV=`T&Lq$L zFL50=uRNyImsnZKsv54>{N=;@&MmWsUsq;rh$*!xrqt?4DN_DVu!bHta0gR+c~xi@ zwVOW29t(d@(fpab9BalvbQ=ofHX!G;+67V!q|H?7ULg7$K+v=Rp^Z`k*$ia0snpki z^lKgk3B@a}*lv@A-vNz2S_wXTh%-*9y#&$&p=7vE@<8d;xN^2#bs8vNv~^w z=xYU{6g@zruWSpX5QrYJ1tJ5XjV@ON(gH*uJq6+iGDT}0fqWZ?KB7_Uh!={TGHLMw zXttYVeiMkfb$$;-pP>;Sc|((2$72|()8sh^8ro=OThyMEge0z?3}iYX@CyUE0|@nU z1G$IOh;=Q&r#S}M5`%mlh#u#42_NLwriO&y1M)MSq!r9S$ zb^{SBRG^XYbQNkHzV(6T3CLr}{97P;)K45XM<)eZ&SU!ZU?g5#Q82DO<-x*xebW9 zt_~pjRV4W;-e87@Eon2X@i=G&HO!>p`K{0U#SpG{=Bo86Zl+ z_kqAdQMI1~qTdk{eBz)&zp3`|q!e~T=C2?%!(@${fs~s{Ee4{`SE0N1!}0AVnhMZ# zm}I^e2(4KeR`mig$Ea^mDHETkfSihWi!9z@!lRAhnLh*#ZAM&uf%urTI07WwB+m&T zSX|>hQrPEx;$tdx4#B|m7bgU5RD>)4X2wEzv>>9gC432^~QHz6e&A48s1Kxigo@M#3H z)?}Y;rc%_K=)IXwN34P3?C(KSj-zN(-a7QEMQjG=AA`ow9q&YFq8C-}i|CFgrTJ?u zlTeEE7P@z%)Lf(t&wLZe43mWK0$FR4=VKtmz$g`uRlsKr|IuD`xh+yV=-F35<1lf~ z1ftLMggi@t>;o;0a{`fpm`6PY$Se~dKafq4+NrK@0D00R^LK!d9}4fK*NoOvB!TA{ z{``H=JRRYK_e}6tb8d)efqQSC0qZV5H76@&I#Zs^oy4s}0 zR3O_-GA{&j!cFjxoW>bNvk3@>lqlqHfGjfA{vQBs`_@L0e;lr8Qa@blCO@Xy{78h*9GZvK*k&>%-H}K=i9)QTr?) z>)mAGd?GgXhk+wi&sHIsL>Yh z1EI}8&I56p>WartopkROGN%AJY_j3iKvpA+81~5oqTlfmrEUj8n?X|v#5{BG0127& z@@l0F3BL|xn~COoF*Gj#c^VZNGqjh1`(Htm7SZBGq%u5f#n;tXM!l!jw+2IgP0Jem)>KRKZ?5TCwYBY@ zb$U({-c_xi^Y61^UZy=QkDsMBD*Oor{)T6MhT*hQsln&V+L*kov84o$FGNEz?=Eg= zp{u4lb0a^kK?)DYM}C8+Nv)y7i%09l*Cf&(eDFaq#CwE`GZ(fsdg?su8}XA<{s4Tt z4{xv5@^0p#y#|lB)8t1(7hnXSwoalW8Fr#&U-F0@i9C8Dk81AOr?Dzz2qnwn_E+lC+{N=-ol(YAHTrzY!K4Y zc?+x_fwOU_Hi{C4*lWW%D>xP%1&BE6W!TL+se6B|6y__Fq>iqD=y}H)6 z%jtfL#;<{18FyHQG1>s^WYs^m!;F{t;IV-@usuO zFx2YBOSS4Q(~&YYvbLIbPs^9%b~!Dwgch|m^;GZWD7AX|(DTLhdfP6~ZGNO)#05M+ zdKr!jwDu6cL2Xnn*T|ZX{MWTQON<5e9tA#(QAMuAxQF*pHu7KKDtHH&h-mZaN2K!_ zX%xt+gDdkh4rU4v!v>h*vlD#W>$ALx|v83wS&tO^4ZKEoi-ZKMJPcvS&jq9Y@~ z%SB*n@W&hEFlem5}X=*ajcs-u`H6XvjRpOTE^)WJuM)Mvm0n0~! z1ed=RnBULJfYb2#lz2WpW5N9SH_vC{VVj64#aCa2MZvhS8K2gmZKotGP!c}FPiXrIX|r;{^1hg^P-wz z(@pe=2KoeXOEW6QTvB|8BFe0hkGzmoso&sD61u{|9#zICRCx7x1WtV8L9PLJdKO5l@Yf4d9Kzc&6i+i=6v@9M%=2XYDvoY?80rh8aRfvx z!f1LU+=&mxXlYbqd>ux|zVO>5@^ClMyfOOIGCDKuqc3_=|JDdv7}KIJ`;`*C4;d~b zLIqtYG%4PCywO|6l%g)uzWjC4qK?Q{R*WyGko=}k{_w^f#U06qTAS+0dkimHi*-I( zJYdN()_ZF1&wxV?3nt{w1iK4m5rA^s1x2O2{WSj{eqp8e0G_R_QtF1&KdB?jxJ@42 z%%evVJ>cnI>oL4-t*53f$_s@e;``uutuZ;Vskdl1>Yz*1w}UjnU`l+WNdHn2^~_iV zBPRJPz3x_vPr_j$-`GKv@!>)ts@H=_^kzo!EZ+INs(dGX0B z@m|+v58jP|K3*L4eJFClD0^_phDY%tyw^zAE+R|BHzCdFzJS^=Qq#zfx47%7MThrD zG-Yzs$G3RL(A|-LIY}F7bTLd{o8sdX|4K9-M13)bs`qS&C==@!{A)?NU(hRhb?4J70 z*wf3ebq^6=o8rovha`IF#@xcfXGi)zm|vKxIWLdPUlvLP#(mDA<`KlZWJG9y|m*V|K#LzZX#PF!|`>wsunKLJo zP(S_uKKJ+k+}i^u=bZ0ed#$zCUVH7wIde|&U0uw=7_(vzhZ)<4BW+Ip_tJmbk(_kx zi%D$H_+MPN&s6k_>na->y^hwlmUV5_8yvOO&CM;cqsHTC^EEpfn;p5O6^;!pb)NKz z6DOpptjpYt6`3Zo_ip{9hHYkSwVAP#EZ&r0GEZX}AS%I5*d!d2u{*KTA36t4dYiD* zk#EVk!iDo;6E7EI4na#9C=WLEATHV&n;kDs|CYbjCm5SLN=A7*V;4ukH7H&7Y?g8H zSUUcYLK)a2g}^zswXAGydR?_#jq_;)II*M5EDL+o=42V&>1~4WQL4-`?8Iw96cJ8A z=bWqNJuv~mTI`9~Z^a(95nXzX*GmxT$Xe-7?AA_l8--kM!*W1{L3JCoaXPt)%XJX`1a_jM@ns7LYo%pq3kJ>oh{P`R?M07*giH;kI!~74YTW||M=lYR{ z65U3fhR#rqY$NiYf8{?tEts3;2(lns@@-gXQ^}G}9K36n#NlA?I1H8ga?`kH_F2;s za2e{K&6t1KWDgXeTpb|#J>2dcEXPu#pRw{14(5P(ZQdA93n? zH;O5_Oz3`%=}&Og(Jk+VG)f5f?+ara+}*hsSJArgY`G$v?-#_6>O{>Jx(Nw9=fHYo zSI&06d;{fQay2hj6|g7`sCc1sH}PW0D^a9C77|~)s#Oky)Gz7|>Hm8#**0hiXnuTshCGSjY<*c%UR}XD> zvR#Qp0AmJol8NqSWacCS%OLDpBUVOO0#A-=Yq z4DyKCPAi=t>qCfHN>6CuMjWQ4g|>h+QeXbli#v1EX7joNIf_KNaEa;#S#DbLPAe4l zpETh-5u`IoM(97l%YSfjPZ#_fdC2JDDJM|8&`U;pigdD^n*Ptm^zaPZLr&JYQL}$| z#xS^aMK;vOGE_)1*}4qu10?vgm0aj~FjZlcZmCGv)hg7tP6joVR^T?Jmx?$`1s8B) z+b)Kpb)1z`D9uJ0t!ew#I$8Lgol_~LTfP;D3zz*iHXM$BWl@qZ9pEHWvX5ixAnriZ0 z9&{&@D?$$GT?$hSAYidR_Ze~-u9V^)(zO3AK+>KX2DBfZ$?IBKb2{iw^@mKixz9Xk z54wkfPAf9`!DH}aaoN%By9|Y<5+*B^X;u=J4q<~giu7RBX|C>2kaWd4{tj`FE`wD= zl&YG*e|n~>*BSrTGfd7!;n1?IX+K^25UO((bc6$Pk3ozeNg05MC}Q1+q0ewt&kXME zdab9kD9wuI8ou`;+4)ZYX-BAZ9QR;eb05JTN)If7#>!Cm3kau>!>bO)9pWZFO=8h} zS*Lr5B!Bsra2N$36t?2Z+#+IKBC!E(OXbw3sTR~stEdHv{1aiLeIQ_P(3Pv!bXH#^ zCx9>i)B$%3Nl4*t0hjb|wV8a^Zr_?nqgdZ%f`A4hQ2F`GKs@gv!na0E8WAB9siH&F zQ;@rMg=aK8MD05~qfR}pR*x&xV;>ElKb5KbgCRs+=qEko56Bn<3q`c z`%q@L+MoJ+P4-tx!X2+EZ^+*E3tzVfI#B@oKkPxy_6s-I1JB{I{lbm*fRCR{w|9)k ziL(FgbN0Zmp_=J!{{d5Pc6jxo*L|P+w;n~7*Fdn_WbfFIBls(?`+Y~Jla$PE=me0F zIN!Ia8=}DWPsFBQ^v4>r1HR7}xewbPdIjXcs{W26_Ktt2Q}>Bo6tIKtle;MH2R#Qn zJ!e+kEg{(O{=EIdYM6{Gzs(-l&reqQRtjr6>>baN^zP2h;h&No^1RLmZZ#?WdOY@b zn|hrn%&_nCz-zvg&N9=EshQmazk&~Sk-o}-&TLb!dE4Ocggo$Cj7p;68&B8tKkxfI z=st>eI)7(B0=$1AhBvQ5A~}i^M

$Deex0HJ3H(eLooXM-58Q+tqO{5Oz}-j|RkawoO>ftC zY5IxEnr;s~hI~|6U6kK<^akbiNG%Qg7R{~mPE)UGx{kd8Z0AK3Dag)R3!E6VLB^u3 zhueHXcR$M8teoe>V8;gj7l?aN8uu}3ngmg=8gw5LLGm!Q>3gPvFio>>Xw@)vA8M77 z>>G61rNqv>8f6&BCDmvc<383K&l`S(`;@&@C zMSfmEu%j^P`29-%fDL*m?+&==@blyx%>U*`I;)2$TpO(M}W7ZWgDnZNETt zzH2yJGf7D1r&c<3oZZhga_*Xm7PJq%+wD&-p~J=*q&2QGyE~3-iQ7l>44%&k%}J&4 zag=4%XB64QwlmpDu7IBUT8t3uyTbh(=|qo%UTX@a!YKy)2NOT*q548-n;N{j{dP2o z3t{=Xj^lD-IQ9GddeG!MgZMdg6@u%p&cd$`PF>ZLd3?~U^mOK!f~g%u)p5i(H29j{ zUU$xhLXaL0orr&5906qe!AD6$F&|0u4_o9^kR|hKp(#b8Xs^LaKEksGF=;_h%De3X zlr)M?G<0>mOtCrDzoY>|%*c}_Pw0!|7m(;5Hp`PRk&(adKbXoHthyU=UPR4}O$+Jm{wjsAI;sy2rZcecvApIly=(1qvz#T8fP;hoVOgfv9q|6Q?wUJTA|v?+RKJ>PN4Iw&-koL$g7G3QEMN&=$z7#gm+yJuNN=2@CA<5=!Bt+>SJTCeJJ|BkvndJPo%i)H;@tW;CnveBpNDV&$t?!h|xi5|k zOYJ`S0LC)LvzW*nK`#HnBGI=;=1ZW@ z=xl-~fvuC+Hl-yJU+z%w>}i~RGMe?mC}wEc(?Z+95co9zd8hm%|9Pvtlb1y>pf;8f z&FGgT{xtksXn^wD$TCzESY;-x66!{WuyZYM2y(nS{@C|u1xy)7C{@gy2XN^hj(_kZ zAJsYh!wL3pg^&=OPbnQ|?H&I>S68>w)p2{rcDkAvz|~7T2zt#Pcm>c)L>^+e{|Lh;E6+s`7rP^~YZR{W&qkM3#PsHy-BjJy;{%o;DxRKVOyNKXt zAfVbt=~q)#eoljV+QKu69unjA0)D)+YzZx=VltE1Hf8$&o%_eLIdtR+n+9j?2e4u# z!Z3~CMSnx?nb=O@Yxpm6rhoXNd@G`TfqytG&+!j`DKGf7!~TME8Z<~e%e&NMInMq} zWm+O%?&|4_OLbyOjqUhHgYSzgC>#z?38A459^OgGgU^$`WYLFEEVQ{_?jMZHe9ixv z$^VflVt@N9$(W_j3LHlZJHJhKVu;xBn(rF_`5Wb2|M{=WUq_Dft3XAA$|Jsam3{ufd4mnlPodr==RlF@ml%p*#FPv()q zpBefm6niyv>qVatbS8GLFm+nLj~smJ#;(9|zmjL$X93djnmoPZxbj|K9#s>2aI%P> zpO`wZv;g13EbLP<5A{NNJVyU#kcarwM=@=&{gtWI>fsm;|AjTmZ|s3;YBm?<*aItY z5`=dthrZ}X70l$(a~6$BXAe$P{&EJ1W!CLhm53D!m9X(-g$0L%5pNYu}5M zj zJTxCA0lpuAYiFK`vnA-`VZAro(qr z?RyccZ$bS*WNPPqrv0Hf{}8QBPPM=CcIPH6Y@mJE1C8V(=P-N!1B~5%Zk34d?dNWk z?>-A!lRO@+-yTROM|c&r6Ar+MaZ8JR0k-5O_KpKoO{rNJDq=O-$zY-= zZ~KE`CjU%1r+lg$3t@Q$6I@?N<7j_nd6)`xfy%Mfbe+5w-kchmf%vSz(Dpzd66|}6 zsbUAt!KCfm!pt7v%D+1JahLMWtoH}*1XI<&+Rvri1JqI5U)k>urSsxK7kkIkzy@el zzH^P4L_nAB3#5yDqw<@#j$~5I@{|u!yQ+_LaFf1 z!Gtb<51dk-Vc%;3e%az}zCWVI$J_Vjn2<8~0sZ-?bG>OG6O#9>L0JZ#1E0*}13$!J z-`5HF0iCU)v+v@pbBzU3EQ61WFt>b}(u+`!kx4K+(UNWLw077)3Wu;_?5Us$e`hj6 zRJVLR_1hJRN{+2_i^=r1>AZ43M)y1VtTfTbz$%$H*&dwm@JF3CxuG_8OXYLAxX@|n ziE#%QS`n+R<9)asuY4N%B@$?uwiMz-Q0DcIl$A&sd`GpvSkF>={HL3gs{ZzmtxEAh zd&e>ae8sby^7l+a?^M0{z^sE9IwryuZ8VjqQXK>t9ltpqNB2>sm(~=- zl2_=lb5w6w<+6AD!3=lZ+OG^L=R+TW5p|F6qCWw(a=!h|cCZK*A5?}yb)>%gaIp9= zhFBeYk&WtT@m%?e#jE8hLEq7zzl?DKAAfxIBYPkLH#V?bKpISfCZ=PHdhGuCc*u@oIZV8wi3`hwOWOyDEC9_N41mhAhW^X|l8aX&5aycf#k&B^x* z`wPp)1>H|8p65Dq&33hxpTY!x){u3-r`h)=Q^z@I-%AcgeTfyyY#&uO5%bz#kTjAw=n`c5kzM99*jR}wjBDL zo75hdN@A+^D6O_WC&XZ`L4UC7VgJ@KYBM?3fzMILsA<+pQYYS%eU5clh z>Tv`3=|;Ncb27H_K5tZgSOBB&v`wD5_?CAIS|bD(=iw#k>(n{C!gHjsq!5r3#S8*;zvK5E~) z=4jw}XPXI30_VsWpALQt%P1y>qy?t-3)}1+*8*tYY-YYm106`>{Aj!@->2-i?_Fu`beTaX zpKiZ!zr3aW!d73E|Boi$&yXF>*fbbV`r7wW@%;PI3+%`a`*0hBf^yK;kFZ0{;#2>d zrqJ)tV|8oTr1<&~S)fz<*Js-UFCf?>A`M=SuDQbll*{jpm?Y@w9!LQVOh1rE(QA0H zgIfQ`RNq_Cvi17T{|rI9>L{Y<185cJ1~1p!FEoRGP|g*WlPRif^PRTu%_ea0BWm31 zahDZs;*34;Jxr83tB!>fgjXmw&=0MZLjzwzhqLbfWP8VZu$QvtP_KK}>OS{VuoxTg zqRkT*AMQy6tM*~)k$_ugLHEAUE^rBMeYsP@jo^!<@+7Dn%(qeqngmAvt%tEhqO5s& zpqzMU_t%5PHVV+)U>@{5H?S3H5N;I*ozScwI`redxBNn;ECo-@dr&fB3yXFUlu2P)}w>%opN+9ymOnn0?E4&V23a2(1IewU0$!v@5`yR8^& z57IgMhvHoWPr>e5l=%nL3X%RBC65R(gFE0%RF&vX2A-zMs_Ms>=C`c`s28WesU zvV)KAZNDDk9X18v*Aal>{WJ!G_mhJm&X9wN;m=1DbV+~VU{_Jes%$jeY_?_5RxIpf5GJ#unVlS3bY!qmEOazy0=C(Cf<+QBOH2c;7g>gdYTp zla=$ZMmiW{l~>s>UyhKg9O8rEzC4r&3$q8P{ri8PET2+P0?#QL-TV&272Q(L{t2Zk zKFQmqRXIOs=l5eG=DNygt|&|Tey0?lq;~a-31qyW=M>o31DnZPK2?fOg?@(!A1ppK zP!GgVUcT&<9F)@>YT1%7;^Tw8J=c@g!8~hl8G2sa5$l{rb4d2!6~R24|4*i%b*kEc z8mJKAu7c=b3vK;n&Li&pkA*e=G$M0SGJz2SKJ?NytdvyjIrM|*aT--Cz!;~wwZ6m zfDxzm7u+A#Q=9w%Vo`&*Tl?nVHF~_R_n%*_9Fiy5Unnzo7MQV4CNBUs*Y~mgg%srw zKTX6S&Hh3%oy%t^gZxLLOQJj&DDzyt*BALt*&phJ6fTl$^#S6p(CS^B1%0P}N>2|e zL-k4$SY{rnSCTc`U@?`g&Rj0`6S76i|tU4uXq?a-Pr3f18LxzC^ z$QtyV7`PJcS}$K`-j|Eqr|f=OoWVfxOQn|=BgBjGA=Z@6)hlHv-Q^rkA=utQH%8R) zwSPYnO=M&$`Y?*F9GW%kAC9ws>wPNAIoJrcxDIs0p4zVlC$u8Ulgu zw?X%@%(L}MCf6HIC_3&?B2>q+9lTVw_FBgo+{%G8a;pLyQ8J1MxD`S^H6*HIwahEU z-mxXpEMu!`U^NnXo!pjhws+9_YrTJ)mDxK^;xyWgpQB+sAao!dX190zEB$?;_``btxw-NL{Dn2Yr(ufO#Ge8c%l^tep>W9gbYrKZC3A$&X0` z-?;suWPcAjUAEtU+%oGzr+*r$goyKVR2tQZJrDq=&fQaiqc`PE824*vz3!VJK^GYc zRiH7EKR%ocBH6o-4t)=&;xBC!p{OKz*6jz$m}*0=@7n)KGPNFh$bpZ?)oU7H@$1n2 z5RiFR^`8TwCS3OMhoA@lBP6M5-0OaXaYW|X&{e<&|7T=;i={qWaCKTT)@^UXZDEMU zVhGCgk97KAO3+VwVlrI^^)byhD_DE8t?CI`xg7MdctUpYv>s2vZz}jXz%NbB3_~@8 znr;Di%XSJN-vdutO2_^65Y3kQ7%|$1GKL2SjQ$nHZ;H50;$DAvkAd=DzpD!Vo&J$2v4EZClPz``;{2Zr13(Y z-CRoLSq{Z9h`7c75?L$kyJ~Q@#y?`fuVH)$DU*ef;jfE&6|T~@6Y4z${`^qrU!kFh z6Y8p#7U{$>Jj3~rxIeU5JuXy_S?V!EJGD&#A|!)#GmU_>_8lLOnjN9v@SWkE+Km z_4rNoxI;Y#)MLAPd_X;JR*$lJJg6SK`4QttdLW_rV$gk&CQ5i<^P;*0!p|_m!f5j~ zdJ3r*XHqh9Wz?N4tc7Y*EhFp zYId}GJ-)gYN1LaqrM6mbYyr~NBDd7GG&weU+PnnJs7oiEE|sUIQFeG6@AGK1>1>H?l6MK4_yhvGyUx4&&afgMk0UjpkIeneHoRrUz`Ms}il&9Z-lS za?`M%d^Q~ZAt{)X^{NU|JTBQ{_B~+!&VInI9@ncmP>y(> zz`hlEa8p(1St80!=@+rLAbm7@QaViqDLM8FL%fnWG zoMn!QS8E@y*!%>`Yth%Pgt6)|P33#yg>X0?da*T0How_ikQkTPVKEakn_22fvW}IX zaMJ5(OnPSH$V!ruSHssGIL*R-5V%%{elr@-Jrj~_E--W@aGzcQnjz3|Ti|>wIh0QO zDbVKNNNuqSO|c+hEu=9y1lqMY8s!uvO)E@tlqF50g7UvPNr@;e7fiooVN~8$4KeCFDHZNYR+UY`mOLAp1V>`Dc|6w{0103l`SG1fj?}p@NDo zO}L9+Gl~xqN@+)dX<7~T~Zm+%z6Bf zGYSceK|b~r_Sr9m!*7uP-jif|gycMIaU~`DtvN{<=2H{Exd)tk!MQKVdIxMcR=K8v z1(oac%i%D^Y98}l+&E+AAsr~s%%6qB|44ZXBfe)YoS;^zE5WOt<&jf9Yz93@E3tPW zUoGWxNAkfR%msR_Ge)|!V?PSo|3F^R{zup|C#lTRY=WWS1O{8?B$$f<=Z=6~31%{D zEG+b*dQ0mLhp!x4p40rqDD?tyOGkmpcc~4~Po_`r4~JLdoXVlr7yQC+rGh(AUnoJO zzFY}NLi3FP$VRs70w3#vaJUfXQT~^o+q&7sp zRRrE=C^(IX`{sX}(38{a5@Fw!U@0>jbsLMXQ{{W+&2Sh`x<%WsAnByJEa@16^+~fi zIx6KP6h_4;S3(i8t;OE{Ryh15j!|`B;E^Ads~`c67>RSPgjM)_^?rwZhZg*HfF>K~B!|b(Wjy5FsZ%1Z zAUPMbPlJ|X_Xt{y2G!ooBTguO$e=#~`WuKIt_z0L-SJpOK0Ac8dnwHjGihWQ3G?|0 zCHe)Cj#ZE38?-lDt1QGeSpZi&KH0P6)3C^o`wB(>~~;ahW&2r_h6T?KZyMs z*uR7QaqK_B{tWhg*biWT6ZvEb}ydIXp&+{7FymDS+lgEYT&yf*Y@iW-}d;Y&h_s=czit*xbvu@p0|i(Be^O`ZY}37&+Jc$Zk(VeEZ#VKa2EZo*2; zNOjXKMV{)7F)+)t6tz@CD%S*>%GL^xT-DsbrPR4M*LqsX3Q!w1VBfV?HhCd-S#^`o z!+vH}SDv7S3~Mp=a}D8ZQS^Eo$t$nx>6HH+mf`-BX6i~Y_4uw=VhC4 zy`e^`^|eVGsyE}t4X#@y$dE7y`hP*f5Mg5BTLn-t&+T@707WW)p}4D zj9qP#JZ){wEz~U$9FBKiW5VH`cbv0-cHL{}+3-4vV1!?W3%BvoheL?V$C_b+tF$gw;@5 z82_)j(YkjR_P=lcJuP5*!pWv#UyKLstX+Tiga1xmK=UUvFR+#W?Vs*sd`+8QiMf}V z(F(ChSK+@O{)<>(7s{d5zln-O^?x3Fdiq@P-`iF@7k7xo4Z*ph`{1o7>Q`!83Qgr%`U0OS$+xNuIaH*Vt62bJ6Zr&Z%u{@p|Vp*n;h2{`Zy__aSHe%Nd?CPUqLiG>OmR=sF=vD9YxXQz=V|s};ET)Z zw%Udzjq?{SaLie!{V$#8n4|6WTpQdkog)h4m{Z@}GRG@d*RG#KcV#ie#$+Jz(gqM& z=cU*FUoJH*jhL-*7Yo;-)r_Mp3*&Od}z$n>aL~U_REzRp3{0}EfwDR-1 z7GDj9y=K!m8YVIe{WKZuBXm|8ru*ud!*t|*B*jUsavL)prE^@=LZInaq=q$)4_2A! z9ZIsrN%c+D>zL_XN=w8Q=3n@Y9bF|O8$=OP)2|6gMOI%uZd)_cdvrZDPLemY);Ht9 z0%kf+?544C*4uH6&nql)Gt-IXB;pkQT);k_P2f`r)1QWLWj4o&;`2gU<9R_0rkEgM zvQx{CCI#6yb}DUjhSC3z($l?kcXsG8j_muLOf;N0e>MNK@xK;v)e?%%+`3ism~`# z6Iw72Y_4OL#au63;Xku1(XL2E%kA0~O3ExQ(ltS-o%&f!7MAwkQqjc15&sP;B&tZtHI z7Iz~REWSamu8|03adY>Ajw=(57j=$xJD2o>mFd+WN-LQl>-?cQA7_mL)JtG`3J+)|93e2vT#! z@hdhi#n;@1DY>UkqEr^2vXKWFab-)vb26A{L$~p$c<5!b#9@&MC%FCt4&$tOs6Pum zJDq@{wR-Tp4lk0IjmtI>p$c!*@kcmLQ(IAVoM2kLZVO9{@3{}`<7f>a{@`aY28$!v z@vo9etZ~gPSlL+D%;I~gE^N$l3#fHIAoa4W`0jng!zUhZk;s2p`~hOX;>1PYA@=ZdRrRAKKHmMeqR4*2!;}8E3E4XoZeul;WLMYYbsb=wS(zz9lzOi1G zHX?+@zeR{mMbHnSRmS%dmKe9e*CgX%B`h7pzx^WEB?|;ys*VF%AHFD9tn1AY+>=gCa8etscAw@ zRzvgSgcVWrR)G_5K};D3u!PVC!M`PBbzFU`M9f(H2b86Ot_6z^DZPoV)eNTy*c`WE z!)7(d$CM+$0g>hRr$DiT18SZDLb~Gc^p%=tkn%jn0g>l4aebTvYMwt5vYWV2Hn{~Q zhrgh)#Sc;DJ#kH$Qf+l@gGa6HPYK-@*EG+7en#laanyJ`a&3cDgN2v%EdC6^-Ea-6 zqUvT(i_gm&7}4MfvG~s^{a_rH$C{CeoPx!FLD-?VdhQd$ba6PY9{E}PIlAbNt4C$B z`15pe6l7SRiN8P>$KvX18*p)vE>6VNd+)`nQv6@&>f~f~eJGxp22kEpbWN*Q>UC(c z7a;%(DqeYmtm zrm7&4DYHl$&(oMGl_1_exx1*T6L_jsr24SDh4verp1{*>B0XBmM4pgnN<}-WljQ34 zo@U8V2NO9#vPyurxsOI<=R|lG-0}-FZW~#PS{HBeR%ZDZoO6&IjDu!o`MCy?r>Y&2 z@F*eNw(|BWUnH(3we@tu&k=0Kq}_8W+^&M{EJZKNM)0BIJdMa zTZ1R-utr^4#!_`uBL+G}N6TEfQbj>&d8L$BRgzO#SX#m^Gp3fiE33*&D%j;ZoL5>^ zF5OXu$}TD_F05oz^(0hR<#Ja!bS-!1x#1~fnQV87JFhSYKFzMsNsDsIR5!X(2T^&s zuw-sw-b!|r4wJD8OLB7EIc%DaqK4i1?s6$N4>{bt0xH z-iT#avKx#@K_NF+ULlm2X-uk!N}6R%%F8QvyUW;(I_h3gDJ{&ndEqTmPH71OLP=!> zyGc)8=FX`sEib&wEeY3Sv-Pxmcm$dy4@^=8l?IKah|SR{2&^j6tWs18w?K6k7Q=_q z$D*o$JhWGpY_5^4%$2hg_El@4u%x0SLYZNttXx^yzkL2ZbwO&D)~WSInEgV619hd!G`7P$$74dO4U}(t;11aQCePJSm|bYdLj=Q#hKEwLYD-O%-2&& zN-JUAGFM@_3mpY3&{MP#0F5z3UtSoMsOoqpj|S|H*pz}oF{W6mC#eM@^RXfw7Oq-U zs&N|l5|3$wAbKm$z=wy9AHMZhamts=mc zDnKJ@F6}B5zfu=5Eh;^d>FShXSH)6^tI0E6BLIGWE!UBsI#Mu*B(_oxoT&mm#C6QF z9Tm){Xlv36B!BO*#zkToKyP9%9Zwq;4N89h9ei}|%C zCV^RABW~oRV7I|btF0R)Ji*ge4R33ysexD4MZ};buCr0*Df$W$UpM88dhuV_?!6K& zi9nHq@dO5i+%*bw3|JxVS-?$oqQWcy<|qJDz{ z7&r^-emYoE3O97Y;dLkn!<~7Ukm*Q?yTDb1LGbt}tO7HyqQiBVWZVG+hOT=$7l@Y0eZv=5zK#nP2jM#;5o#r({9XexRV4YZ0d zZPJl^HwFHbC}imZ%#?Hj^h)T1*yJc^=|W78q9}@U^IXN58E8K`n4Jq%GchF^0nNj7 zXasaKra>d1EKGNzpi0i`%8}4KOmuXryJ*0diCK;g(ZcA}QQZKGzhb<7Dx8!rGEk6Z z@mEG6Jh--zoAP@|Qca7mxsDzU+(Am8k=id=!RGf(R5B^qhLA&@6}r0Nt`Dj z=JJq>2e#1iW{f8S+{;n#2l2)2_^LY#c@r4#qo{7V;wq5X#Ep^IyCY_+wH^ytxRGJA zK%dqo&t``PShbr)$&n-tnHoV1ca@T@5^e;69masn?663ZwjeAq+e|33A3HBlm|333 zc>=783azH3<*i&<1FpBJK5Ch>B^3)E?oV6Go`TPaVe%r zCX4MV+YH-eEWRN+nsAmtNHW~goW>FoZpS6u>v~o=84L20L7tFsYr<^_CS2lM6BZj? z6i!}|{K~H4ymql>&FD6srWTGB_9YjpXiX?sgip6-Zbb<=R6;2jF;&l);7wjfZ zG2L*5$eI+##oMn3hh!_)p>VRMMaoRDoQ4dOxOQV zlMnZ9F0B?)M-b9;2Y)>ih@zirxO4_Qswvkswxldp!dX55Th~IQJ2P`N7m)c_nxS`6}x|*gr^lSp9;ZjSh zrHj9LOGZxm{X44W0ULhfxdSC~sNA$?f$&p}?ew#`+LU!A6lRc zIz7Rk32=~yVr#&D(tvCx7_Mr9cbJ)^KBDc=5%uBjj0mEA;g&MOshGvI0BO)$#WU>=edzLGRMDS-l3tuMk+6x7<1rv#1A>R?qi8aLIDqK&M%c5VE;o*P?*Q3tKwbj!v;jE<7k_n{WfZPS-r~%my z90r@$QVFU6Bkc$T7 zvUps=&vXr!0I?d7Iv@+vwFqg9j&KRSZHmx1F#S`(5r+=Ytc9&bjH1LJ0D0Pg>;v+t z0eKI|v#^mG)#fRmf@l#^=!5c`euAQ4 zY#p^}5fbXC5i%-KJ=G$l1J_Uzd}0f)MZY>q=QKaUU*nd}M@?wC5j&IASY96kwL(+D z=W9kL>Qy01O7E~B4i?iw{MGqr^+jG;sng&LnW8q$KFP2n<+d>K74@`RrUHQ(b!2`6 zm>Q6*CS)-n3x;4EfjDXTH$5YRxY9ekz*+syJaIP4N{x|K7bB}7M%JFMAj=UWi%M$H zdH&iMS#>e8c1L7srHJL67{hsW4Cl2moWB|2JhsJV#+1SqBWp#Btkp5HTEBv3u8sHo=JP5%4*Qr*e3dfEFV+jgO!q zKJ+w8W-gz31ia~xrqCiG;)(S?XJ7-ng$va27HXRp}grt z<8pC6W6==Zhh(3KH3-3y9&1g~>_fnHK$78lyxt>mtexi~={KN~j4@iXm=n2$#T+<` z-4=lJ5X@oZ{2Z4>oD<;l*BP>DoYw*!tKPMqC>dq}1MvA50}r~;>b-jsNhdlj@}EX{ zG)BmxnD$hd_l?DzB8X7qmX|&lE_3y%l`U;Q6Nh{aI zNV&8W{rG>gTvT6FOQOD3py`iZUt~j3Uso9`LRE|G&d$IxWN z(9o|n3>wa#9YgcS7@C}&49(OSntd@esWCLq z#Ly(i(EKQdCNYNQ@sTtOzB3Y;PxClqDQLCAfXt@=Y(N$~IFe?89E0355}AJnZfWF0 zYb8cx*+^vm>6l!1#L&XVSh@m+eLvtSS!zlfek;weRF}dCw zNt4x&mTKS=n`{2Q7(RPO@|nLUhUUo_n&)C@=+|dP=}*VdY>c7V9Ya$eL-SM&O-T&R z6EQUNVrU+Zp>f2}JQhQf7(?@D49&%n9zMS-hUSwPns3I?oQR>J`$Pt-E;t-R6NsUC zF@~l+hUS?Vng?QNo`|8@97D4shDMH|X&p(EwK>LDV{*+u7{lkyn7ZhWp*c8`ChK5~ ztf*Y-h??p&=B|gQxemWP=G!gkE1$rQ=FCSAjOF2qMp!7Cic|n;g$k(WPYKIh$5Uv<5PpD1F^MYM^`wiEJ~;Kv53y5#kevui@6gq#>zlLq+BEmLyZx9 z0I-dq+3^+D{Tfg^_zym@qe^Y$5Q3UUpT9jOik^s}nX1#MBP)u=Tox(F{Lt_LO}aK8 zoJUqM$eRBZ=4kWEVsd?jRimuRkvh*W8`&;y8GW*LFG(7&Dgt978A%>AXY806L%9R~a40nx@p2f(n|4fH-j~+6A896t9gl!}%zX*%2DNSFWiEk22Dx zTjN8}=!m4g{%)Z`))%0$MfebP9EzaLnx( z5WS?$ppgy8eL&I-$iqOidw-%_ud1ANeSQUm#w0rD4}fU*zeFyERY}@JE@~&rfh#(~E7Ua@LJA}A_Xyaa?VHFVCbc^i(qKz{J%|8K|YS8(4APojtFB1)1 zMcjoUj-LaeV(6Tc(EO>X>VD{;fWVwlG;@GZf1>BQ4T!cnC-f=gxuR({1JSG{X#7AD zajJTzco``xGwA$nl@I(1JuI!Q!o(xCAA#m@#PXE*5)cQDnmjxa14NtE3hBQAk^vgM z6?_ilkU{z+{7h%2fo3|84qe zE-G|>3W(<20(ln53WLr+1)|LY1Wi8>?Y@jaeglLyy`6pv#5hi{UWPu!P_9WpXwx-J z2hwh!amCQA1S0OX!x}t)9gxL1RqGv5i(Uph9EsROB!fnq+0pn=yh2qxzoGH@257QC ztJmO@Kz19f@jMV?>+T2AZJ-GO=`xhUgop5V8<5L^%#7$v8pihTGeKjt;T=GnD5h@b zwLlWVSs#yW0YY`E`)UA)!_ZE@55(9ie*z?Au-FSgHXC&Q6%cJr*vvk{Rl27^d|`~G z*LiAu>(EtKH?PC*E!9i@-7zhxrl!raQA=sU`B0n#|6&?_e{0>dkT17`@k1iLV@u%H) z-+kmX6>?GLqSi)Ft!Gmses;+p0&nxx%39jZJS11+5pNo_sOSPjZhCW&$iGm++tBzc zj&NPF2x>L^q}t7!i{@q0dx`6-=@m%y&K>;Frm3-Zi(BKJfkb@JjlYgZRV7ny+d?n; ziN-Rj>+tk>1j3t&Gw0)1NS@6?TY6-@Xg=QC?e%cZqoyxtZt?nRykiqAgowrsc!|r{ zB)8D3nemYE*c6!=?i~E&v9_(TRUVsaK7SSR*y#)LQ$uv0p1QF~Zm!<6e(cn&b$D6W z*va!fmrl=|M?Z;b+R}_4hgCO?%_sBb4b}8MCAEtGIw8HQr>5mAa3n&{S0$`z+4R*! zdoD$|NR*|zS-9t@PL!D?h)BI=yjJ`YViyQXG$*_}&xcn_{dHRWW^bcZy%Ascy98|( zzU~LsU%}=XDy8>Qew3;4!&~QSTUsww_FGhb_4IOkJXqg!DdL;4EW_WV_SYIrrbQBz$< zaxX=x%H>_pUzh7`y)?J^5xIy9co_2%92cndA%2J1C||0QRVDc^Of{D13+g;Fd>Flo zRDpgE?_zA^ze1Jq9xOyOzOJ8!ej=+G@ASt@<{POuFkWTO!w-@?Z8F~4@2RdUFXN<~ zPER2j(FqH*EUhhGd-rcpjSM1;1?4|o#VawJ*L(2uEU(-OFMw!I zdTlEP0rb@Ybg>(8Ce^n3B<-yUTr&deS|s|mCSGn?N58l-LgH~^qT13d;fXh%%ZXo2 z1CpE2T~Z#pkT%he+VNABO>zVJ^tw7}y=M#O7@OMW;cpj=Cg3@x%AyLI0aH6eu2v8I zL`+gYP>K-=dT$yrXrrO8Hf9V(6%@D%@4M^mdFQyd6#bnX<}O|4_y#5`^T)cQN2)cpQgXPMb_6 zj{2mDGm8um{flRn|JX{ZU*JGCluoRosCn?ck;tb|oEc2282bYyTrRhdDu{oFL^J>n zkNz19Now8z!I95cMAm0% z8!-JK&om~`M^f7G_E1XUZwIEhhL>H)o(*`74czBEmh+tO4=)v8x-1J?W~h5wv)lc#!pIy_}Wlc)Ryy9*={ zCbHf6g(cjus$-6vtZ5>7vbtiaSwj1CjU?g5cC`J+ZsJ;4(!PqLy8$|_)+qN71rguf z#_NK~y9{ou-fTl7^<@|v%_wyS+v4Lu+9!&r4aFkp=*Y9^y|QW~5k3(4xDDlr{yY)| z0o6@n>y&?$270MHjh-mh8hIarfhj(86Yb#K(CW`eRsNCh_eA7rU%HX-S|Yq|HL9_5 zovQI-Uix^Bs95y_L)58@@dJMW>IM&9GJ)1s6!qaH@;SY{qHrVQX(3(^q!lM3JmQQH zKX&Cq8ahzwknuWntt`=jHWJsE6!ldr-V!wbi(#i zn?AaO^aa!^s3?XqN`^>HFP_%CNPPK;+sD|S(4#cst+|?0h^im$TU~l(s0-w}3(^XZ zSE}1IPqbIkY?L@7g8OJruYHh8lE}v*#f}QxWIa@pR-#cu<|y5LlTlM!B4idV2{Y$ruirDC39JQ15C*=^e|6=4|LHy}lN$ zr@Z9g#5fhvWUB*iuIgVKlVKJ$N{0we!YLccpoU;fFSEv~Abrh2jApnP?JH>Fj-omT zKs@0$-6$AGH_%A8h0)P^ue=^F@q$3DDX;gmHG7)yZr5sn(JeR1&DH0CwEjY`>X>dL z^6@|Jk1#U2m)Jt-t}GlS@+r4SNH)esLuJvFP94@%ju>)s+l)DaymT-bvu_>QJ*mDO z)s2kZ-)Msk)QE0py*{F6r~D?WI)x;IFaf1DBCWJoFIK7(6I-f?JgoEm*WTyMnUhJV zzx%u2@7~{cd*I}p{oiY^wf5R;uf5McXU-|TcNeoT#;n-GVaE33NSl-Yz4D(%F)u+;K`Ug zc~ZK{y28y^iD@$1JTkAIZDg#)%-CrbZ%Qzk(^v+GO0W|)1;=FUPVDrD&ViHOChT?>Yvx2J+LnXAW4?6OarI-o}{! zg2^5zLcO{`^ght;eK%7LvU>f8(+*kLE;YUM39ylim;Nu}7EnO3^zU%$dozkDxlHI` zjp@H4)zvHaKpJI)2lt1u4e#ylK`L4oUMyb}^ZlIoQJbj6LboA!8%mu{i* zORwkEssR?I0aY(_@m5|fc@?S@SV#m`UT;-{p)Ud2rP@Hl>?)sV$=?Sbkdd^|HFu0VZt(gGJDhA!A`!rt z!MtRmTY$oxL|~bO-Dt!r2ulDK%D|uCG|nM8^tH(ld**Ct;zZ=6Q4aC7?Pici%ywJp z1VtZ#;!0m=Xf_UM>7gwkjkK44B&Rz+eGYFckfTae3duQCYp_Y)ZH2=A(lSe{D*V;cEP_xDRdKcoF6P9xJq%UrIxnYC zo{b7x)Az4+vhc5VPp6z-`3@j16bdD3a(@h|OrAz1%84878=6Hr*_1S`pp~2l$ zFDR5i0>8lpT95Xr^s@%s=SZyq_Xz%W4!9|BA{C-T(0%q!cjC59ICiIY3B+a^3?>KN zA=9AZ4k6<<_c?#B=}vd@wh4asS<~>V(U|Y2-R=-MRJVJCq}M_^T+KZatU=jx-H8#V zM}lnjA%%GQ-RDf4(~h8fQq{+DSW&i*q3mqty3i4d98D?$__(NN);?T?aQhi5jc$Mx#5K|QWjkE{8yahLc9 zrB+Y}C^;WT{m^U=d|(FGZVU#B=P>G{^oMrML_PCa%E6HJ;Av}U72@0M!vpR!4BLSF z1Rc`bgCRu+{bvQo=Fo4|B+li5Ny+MkP5>E+^L>rNFm>#|CpLp(JkppQ@_n+zea!yo0gwl4 z2D^^iyZ((%-EZxofE9F~-a~OO=sDc&Id|Xv5;_|n&pI!!hRL|{+wFma{Nz60Dq&5B zz3Y1>8?Y2G&)3fu|A}1y-kg;Uju?}C*J&5|YDwjAh*s-C11aUuV<336Klpq>a zg6<;}UV`pp)K4Fn4#ITJzM=arQutJxlw{wc%PuE&=GCafP(G_=L=f38M zvKrjC9aD1BLy6$7oK!BUoxy*^#JzvWit@aHU`Juni3gRzAsh5i-W+n#;q{@pAOh&6 z!|OxGNXMt2Ua1_yl-0p1zWMaZZ)Oet6P?=wL#SI-R?* z@OJN1X8$gnN1#OTxOSSDzCfHF-Eo=dd^d2mW|EN1Ppx$7IDe39 z&}mhsQ7)Wf$bUHT<34IHgtqCy>)V&2OI!}iGrCU6iQ&|5^7OFDcMehX?6nB7zx)(_ zeR%qPeOaf5%}QT)o++5xMO0nKeP@S{>iu>194G|o@z9C*55y5bwjX|iR21{^bpHj5 zoC>mJ-YhhwP89t$Sj}fR)*vSBN_D!8JhBKijiM7BU7asdY)FFy}|L2xR-px7{^iu-rm@%*Hvo3kt_o1N# z7|)_WLDit?7t#&|ihU2j@E(IcS-pB&P<^?6uwoGu3_b2ZRJq=XQ<_4ZlIJ$=3R;NK z=Ql#z5i7=$IUqp;C1O@&3+7psh3VnJ;C;5PQ@&qnT!sWOG`#QrzU5U}=V`v252h%W z3{*J_T)RFYwG*MXHXJTQ;jUh#Pj*oyRF;YbiF75;8u~r5cdH62TvLrC&lYM|wLB|C zA3&f94}Vo1xYYI_f8xpnSEoCmkR4u=)q9_=k7|mo;1!&vnc}#7bTHhI!^FSOKnzqm(RmM@3T22+2B%5f?_?E1d|biJ=v^*rR4t zWOS6YbPD33kFgLCT8<3imNhGsUo5Xu`jlT`4ue@pI*9)M}>~4l9fvuC+Hm4`@!33fdcy=0RpNwvu z9mNbiJ1w*W41uTlFFED!_%B)I-MlV>0rj!WXhv_4_!0QG&;a$fL8g_e0;{CMDxqEs z2)ozvjv&XY^N;;|t6<7FLaAZqZbs67A^wrmd{*c1Ur4ZjHH3`dBFgDHZ}0kBN?pH| zQm5=)J18}|6RDpB2s&yH902qaq7LTSXqliZ51jpdi90TnEW2N!B2$A8Tf2Y27^wb+ z{@Q!0Y~7F3ng0?d0#Aa*f5~AF&;^74lFc6YH=MvMR#fIIs0`{xRb!!H_y?CJ*n2aA z%dEkv{yv-KYs9S^3Od=3tfF*UHyM@&O+npp+<(}C7VC>#ZwkeyB5Z#T;e}d#G42+eOl%%Kq$V@8jg-SySD28rm@5xp!1&H_;pbgLd zlt@h%IWZYL^e_>>4UL39&i<3d7U4!(hwdeUpMro|8?|3aP5H@Z7~5$J&#Zn_%-bvY z@t%sMw48_wn#7K2JBH}oKatI)BhT10Jo_Mkm8%ejX$CLG8*dLm!$=^Kbkb>fl|+o^Yl-xet- z91c%Ai;g;cY&T^Of1mUvi$02Kq0hZ>a5ygOsQ+V=|6NnW{`LdOxJsQJIE5Z|X}j#i z6tU~5?*{*+TjhNJrMu+2P~y^kprT3Tao?NDAcDF7qUjNkuaRf?FU_z&dC1;#-1PeJ zJ{n&;H=9^@yIHtr3T*r73a;y@d{fscZ8!z;W_9Px>I%!VmkcW*xw-3n_j;2rM5@gtMF&8^6}^!Z9q0=C z-bCDV1i``oJBPhzLe3hwHfOt>hl{&FukR077{ZWC*I4 zbS^YgJ{@`w=a_$h$I%9wh<3Z-Hxffr+yv>0k%pyX-yj zke&hQ)5uhiKC}%TBjWFZUm>^8+r$rcdX-oe3Ra}m9*DPpbt(RGqr5hJqwY_r`kd}L z*jY+CcU|4hlleBw?fv zhJMBCA6?(yi~0_~Mh&m6N3Kv_CjXt&c}E6(H`U&QSbaO%4k_WnP$jq;mxU`nTXE{3~dh#Aj95MN)0=75hm^29%l9cSN`SU_jW12n*H|B zJz%Q(SLekHdw>RN`+3S0B1Gf)00CN=&Z+WhCAK|3#Gz4hZA=B`{0!FOnZ+7_*FUEeSbiUPqg>s znUFL54*hwzdxL2x3zGM*L0yJk0H3T=L*K?>|6K%pi_Y$&vnO%Zy~YA5mf@#Gm|L-2 z=|`x?%p{nbXvwv9Tf6AW7Y<>?+*3gp{`ypes9yPI8n>$wl{{Pb7L)09(#f3(oC*~bsXhp1=!N+hpUim2W1~O=xwhZD# zQ0DEAoK?sf{*`Kfv7V*$`A3?Sn!(QZtV-!&d)IOVe8sbu%J)sd=vra&_a>{$S$}f@ z!}?)N9TVY-HoBCjS{()%9ltUWNB0S(pVkz_l2_;{EE(V$1ItBSADZE=+Xj`h%B9dd zU_`^?n;1_(tz7DStrIMQrH7TXp$1aleJogd3{$MG9u%WC%9$r$le1c$7WAF?*?!Cm z`26GJ@7Mzgao`KF&|nHQF`Zn}XZJT^{U80a^WwanrF-mwawI!1uJ)x5xpAh}-`-P% zB?OSz0~;pre0!h{C*2j{C2#oNvG+K`O3jg-?mcMaJrHlpS#9s?070 zC)Iy3nOs8|um|?TCPDXelqvJ7p$JhdN}=+-K{r;f`-9uGNLV}IDz9k zmxtvvdrvYAoWu4WaxfZWv^)g!#Pra1)E4&WSKhJ*3Q6#qWB$u#`xCwPo?d^*G@}no zTFRPZd!6ctd%ne~yIFpWu9UZpM*hPKo% zeQ$@7xFAlk{cYuS%)s6XqOf}(=AU%69QuTt)E<~lVrup&?Y03Y#Nb+k{$SO^{?(Jz zXY#B=pP-G=(um!38zt!3i*+<@!K`tY;^`%0wSb>)q}x9sV=Hg-PBnl9FbYrG{T`B8GGnMlyM;QAY!nz54FeXlvt zyEE71TiBm#)@nACg!&PGs5l35pLCzF_pCV)IMv-@0+YZ+GR8;4U&VZ&(4zdtKVTW| z7UR!B(@)4W{q7T{;lajTJ0Y$gQYZKa%tJPG`kXmfm`=G($p4xt^!_ERZe1`bzClD5=+t@F9DCqJ1balJ z;j1w;cX@zv`TY@-1U5Y7SM?>9)gNVf0U! zJ~W9`5d*&OrQihAA^av8k){oZgZEo8*B+*Gj1Q%IhMt4nwJ7tqXcZ#;0cDR0F~d9I zOw^PZPKKVR#;O^_oapI4MaEWgKAIH17qWwo?rpz5%Li-{^2)b~v>!@ZmHk$77`qtP&*JIrmtwi-+P2$`~hTet2>^;+Qx^vB*p|H0(bVGCS2f@Nd-DEeoC^g5FUkufO$asCI-d~#&^rZ&Z*n->m z%IBv8G;qp`c6|BA81?1JXs0|>d|(14;RnIeWaSd9kwMGS7tG2*`D%n*1p0Ct;(fgJHH{{C_kBt<%*Gw4N#v4*T9m26}@-a2UD=Fx|iABE%B~ zC=OpETZSyiMKkxwlc<+XgWgIXRzN6YxNG|uF&dDoCSSnend~rDQ6p%B(Tgn-l!yNw!va5nG@M8bb-%b zO$d%^ThyE(t6zgzZ?NW!Xpw#@0F)wVXaEI<4xwn!^VZO{=+}Dvx(hyE;yz>d)8Y&! zik~a}yc!{1jo)ES>0+Z&f!bZo;S_@HU36naonQM8BGW`hrm9~+)s-W&FZeIS*}wWW z)#V~=1Y67i9dT$>?)hAcPJ66W7!T~ zDqH*Ugh8}hIgm$gRfHpIMiBwGLdd7iiso1?^G30EZHaWt*rpmY+PzZSHbD) zXm-rE^Q}1;GfckI!Tj{(^p*Y#$s1D#@@%+!%XSc?66RDKg9iqkT0fxRvw+zRw z&kdqJh-dw>^dGCvrfEjiRsW5xW9aWm=L=KhHj^A}+ zlZQS%)Y*wX8JI-nUT3fSPg-VQz@nw~x=zHIyiSCfFaKyYtcHjej}{%yr19@BF#A`~ zN0|NiR!UuNR8r&V4uiG(QLe-B8G|#q3LpFvY2cf1FqG`?!=TF!`cGMAU+(s&kxGa- zKSQHYo7e*ZaO&PW9XLi)-i2|$hSux80ul_7p->e%6Zzv~^gy%h-A{*s$5Qc^Hi}SG zlLG6G!(>dgBRB3k_(3xD9(u@u&&Sm?O|W=6^e_Zuomc(mP^cNn0sav1@DD?hn#aBF zJD5jgoey0HZ1^7{^II(S*@COnld*1l8*U3jG!{cpr@y1qM^b`*(i0cc4NxDK*=7Z6 zZ?^mTLRKyZV=SH!9Ujr+DfmqXKL_}wtA$~xR#4L|;9l8I0puItNlWRtzaFBir2$5a z_M?vB;US}cMe&=a^SeRg=SvPf6k)&_cKfLnpz-f8^&*4w8p!Vs@XC>uIhnS;hFgKu zkx(baRBKQ0jw-z4-k~OlQ)0CC_gzr~0gb;+RC-?*9o{E9|>&c#g(D zV!$t9eh4X3g^}T}OZpYA()PF1dkXydq0qlTLlGy`RV^*jiDP(X(WB!2P`-L}s>dAl zn5`Zcs>e+AI7dCsQjh8C(V-sG)Z=vZn5rHV)uT;4ezrr%Kc^l?)MH3Jo>q@hTCaVjhVRmmX3~46-GMw#DIO*aB!xpZa86>o#td~mpU13l;$V@ zg@4dF7`khiIT;H;um27@{TG_!f0XFvrn+_Y^^#X=*ff7`Rz^c}Gn1qa&$=eB?CFpi z@jD)m)YRJ82DHI57S0(wFgI(lD0}xtsZuSS*IeuMdc4A%O~pm7CgtbhOEB^=-|Ljh+rK0W%viNS`Z} zscVuQ-lm5<8f^w!*W6Zz7R#L5LTWFVPg3b}2tP}?k+H(OygMAT3d?F{I~Hdw$jBso zd<-=&T#?b%vCaXSxxB#KtVqf6%Y9M)f2AAU7StZJQGbvhWo!ZNTRPP9`_=Q!z`w4Z zBkTXkM%NUynI5WSrmZ&9b%|E%PAEkeGW3AW>FYyu2jm!%0@&&zq5K2aYOne$@9nv2PuPJppVd zFh0k{InnLK9*Dxm(|Z=^NbmKaeFw*gZtlk{eyjP=q&`=_>t$3jKY`N~fn?6Vg~Pn( zX!Ur22pAhr2Jxr;vs2;lbvQ<3toUN(MxfhwqRW||$16`b>E*x#d=8GREGc<4{LX>Xh1j!!7vM0=lG3Q6{BK@T zB5KP8)2}KR)%Og_BE&?ObtgGWpjDnqTAbibN-IJQIS)5-G$t?`_tj@me9n);;s34j z;kK=SZNb7?oFEigCsa_;WeNB4G$VgMjr}Vq{|zb+ZEImmS3(mfScCIiVgYnXC{Gj zA2|1e^FWgIZrE_VdQArls@K|=!eNS=JpQ`4amFn}I#8LXQReTcOmW2b%*B(`CUqrv z)w2R}%E!!%w?j3^tv?Ni>#3YOQV#xLF49|_G18?Idl6`Vh_Ynw7<=X=Rajb0Fch4? zV9UG&b1C5bQLrn)OlFOR#aKe^_SDb9;cLg2=QKYvM!P`VvN2%tUFrk$^VPKn!{OC9 zr+TRE1;6lHsp3ww7ith`FINJx(0wBSijfcR0-w#`Q;hQ{|0_&#v_t73p z@zhnc{fd%Kn=6t|B3Pd`o1>#rUP5tHjB+KEpx9dM=fLAx9HZL6z@sp#R8ayPF%suo z3HRv=M!H|YK z9;?V_8<6)Pu&O3R??oHL$U^PT)^re*yae z?5|*d3;PK6OV|_r@F(n<*mJSpk9{Nd$FM(#{Rh|&W2fx|j&G~yAK-Wi`=kJ4*J7WA z{SNH;*vqiri@gzhEB1%52e5w?`#)fR7W?zqd$1qCegyk*>~CWaVgCsG=h$ssj7`Cw zhW%#j^Rd(B#BsHHF5?)$z6<+4?1R`xu&2SEv#`_lR~s<)3zqL`_Q;;RjwZROzP7o_ zQ%`FoY=pU6u>v(3W>=fso15f{j<$NNwXiv+f~MAnyyiBqhh_5ff~F3yT+r0)aUle8 zqzo@w5x`ngL5Igv(p1+`+p&cOOobjfudSt}wzZ+8sTBo2C#0m-E4w>7+Bz6ZF(X~t z*5GUQ6oE+aB#gwn#BvY3!(7}7-D{h%Ix||`3`>cpc4G|8vMeQSwUEj+fu^#x$|Kjb zuIEx3+?(q??PLY04I8j0t<}w5h+SUW?DMdnTGiDkXd%N|jQvbQ`1%z3A(OmvM}w~& zFFK*KCag6zW5zE@>pXHxZBuJ)$2u?Dgmg=tRPXDMT531rMh4RDlH_UK*wldrU|k~J zNN?<6?C+8CdSt1#y>0NOQ(GNl-@(yaFUo)4EVZ?A20u1S?E?IhnS=<5cUo)f+B#&GXRXD%a!AhIRyYV& z(HPrcZA42VB3K(Y!Etc5$J(Oi{j;^D&MUWVs>jOX_pB|RmiqQBh!xfjk05x}3K6sx z*X&_Gw|bk_wbo)%`x`3^#qIPCoi%%4fj?X2w&u1?XaQ^7M%1gRRc^#jq~gF@Zi5i& z!!u!*u@^>h34pw@mQ24FC*50C1xIyPHW820Jl)ppbvLnkJLSpQO>JJOuGZ_xTIAi* zS}$#ClGmdt8=BhOb?m`WGz-ZA^RnC=$Mn_!Da`T4^7HXj`F!OV zEK|Xg_7?BP`VLv3vylF;*rRpGfey5fu~yD1fM01x88ln{ZMR`nl@{0kJ8rc0y$kza zxBry3r%Z7tB{hFx)b9 zxT+lUGv;SAQ)e~&)XEnhtR~9I%gPe>H63$XWM8Xi={irV2NPW+Ydh-KFKt?sz1T5# zo%X+czGJSoH*#%o&vdS+jAL$NYuj9}TwA|kF5Q{Mlp2%0&>6rG<@|DRlIT8=SW z<1o`?mJxm)?`x$wDsDIvXg0@t*JD=fFrv1&=C;;#4*rLeC0hA;Lz}M-(_FJ@0!{Lm zg?^d~_7OTOP0M|a%wanIHnQTRcDaL@PS80L^$=+KC8=SJtZf1IG1&KI=KbNsjWRv)%gXxcFkusa(MD=+kt?|4f22)IuaB)-5%=ILTCpI#3 zLmpgwf|Z0#GF97(p+J^&vwf2IRXtpxm;fCNcgQ<>c+5@xo>(~W(8Q8cLy*L|%G%#y?P zLJI$xWvP}T6)j)ZQm84jxJcIosiAgDbJM!@GPADcToWXEh~XhzVKM6((=yQTN>y3V zV5d+A6UxXB@m8?jZ^{FlptIN}Sm+!c;T#gQ0^50k`1Q5k^&4xOC7H$DN)?M=FW1&d zgtEAKJzzP(`V#(5egc19#hyfe0KSfcT@ZU7WO0k%L3)Dqef*tFRlAH6PAcdpMYu}s zZD@BGKJF*q293z@JgCD5jsrHEY!Q#(UY|^tz^&`r+NIj&b<9ed+O7{_I7?}5XgSr`+i*%tGa+ zAk5P8Oh$Ke?o7XNdhRI{g+#lJ@9R&@HNMp@d35ElOnLToC6 zaR|LKevq)lxE5ctjE9x5R1p9AkHIckAb50!#lJx$>2VEB8=J745r2a6XT`O&ZS=wn zzoM$lK{9|+k?T&S4bhML1)(Anb8QsI4Z z%~?`?ZT)(W+S(rxx<9UYz5)H1(3j$<^LXU?^->)cS~jrwa|HLoHK>VdTRm+)FYjPP zgD1q|KcW1?aaay(MImwu7XK+>N8%c}Ph6nHvA9N*XYm&)F&Ni~#$@rAC~*R0SdWRn zOo@|mjrHr1_>2;7#Wi{##41w!pDA^Es=6K&&rCz8?-@$dYL%J}P4yxKU^&Dqx5%m< zCKHt$(Q?RsYL12HoYiu;A=NA^&pJ019X*;?9EUG(7$#PQiTc`j-e;*Qh-@k>@+R^; zW=bW9_fPIFYVIVSYZbXZEN7wrM&~E+e4EIR)-sW2B$`suj~XPoc7vx?GPJ>DPLQk; z;BDSx5!pEro`tsj9G%-n)}r3Ud%Trd{u$>SBnRW5nOT0Of#j*`fMhv=^9k1NV3N?Z zIeW2MyQwA<9*&z}r2rvtiZE(ss)^ufoSf!?@Y;qZ#1;|e<2RV@#RW{tN-(RgDRWCz zc}4F08q6}HunJdYb+M~Ns&p4h`R)pLS-!h0Zxu!Xy;PN38i&ekq^hbYDXu0?Rm`I2 zXk`mZT!marRkf?6gjscp((>giSzJ`wU0PnbN-8a`Ds@%o6-lDN1f8Iu20G=HR!FY0 zd?~lmRR$tF0vLZ~ip2|=?aCBY<)ma4n>dQhRZLE+;#o zZtfD65KB@}VW3FVDO`DZHKjEru4=bbUQ=CIUR+ivxhkQ@WSyp>vb?0cu*NObR8cle z=4MHHw!5M@CflxOlf6pZE|f{u!HSxyBB_+ynx*J4@h?G>BbQCl;r#NNTn(P8!y0vY z1xwXYjTq=O9j$QXOI1bXmDN%~O<7)bad{cL%9vZ}uCA#pt72E{a6x%ZrF3@<8oQ*p zw78m0*R#-E)hk?;(6!QC;D)D=WpdqR?t)0ZO=e15~l=_5AXRYROet!*0+a*Yfh>e6qV#P+lpy z^7AX%je2fXN%;z?810Tfr3>a$OEAYc+1YG{o+H?TTq>`C{}b;#?hiNVG-|U{Rae3$ zXoWB7S?E@-lH$TLH`RSPq5`LZ4a+6Xi>g?Qxo)5_eSm$-4MzIF&bg9PD!33 z8bXSuxP45D2!m`rn|Fzds-l{LT((4qRi0XKmE0@cc{MzI+@TYRUa>HD6{0A`gW{F2 z=AF^`E9Wm-JYF;BT!GNo(n}4LS@W|aE&F9XM~#0gimQvL-?O{)ELX`2*QzS10D~5W zI2Q=u)Xb?9)RZCAmr%DXahEZdo>5g)Tu`0Ga&_chH+9;T)flxUA*(E(<>~q8)1~FG zhuR4#*sy#(yTDadt=fvYbvP<4N-HXhtKF&pgD#Z%ZsBjRUPl)(SY3@n^ROQ<`m2HEVV*pK31Z`!c|Mk)d8}KmFjuq zoGbH+3UgVR5k!qLS-Fl;J%q3SRp}(c4%{z08a>OEe|HTUQuqy9u4j~E&R1N(yDA2> zsxr1h&nrROF;`62*=i=G5@;eFxg5i#9gCl8rYc`0HMHS6)khb5xR)-i$FF-NLEh5nX{`rg zmib|Dm|(5M-)Xp!E!ER6deo`)opEdMw!M_Ha^adR1=A3!VLlzqDS33Tq~y}Uno?Cv z$GDVyew>hk;RQey=Bs%n<+-_Tc!L0JDfftziQrr&sfkG`#h8_^6gdegCGJ8OLI>xN zm=Zm>VZO*GnH7|Y*&z~D@KOW^O50NkFq)|I^W+p7^9qV9;W(6;BC4{IkB^-76i&fU zr>3}C}{5!LtgpJIr_WoU2kwOI1a$)^v#!n;xZ51iVJoDgs=q0yLxM(yl}G zt921+QTdTV*Qb=as+LJyOp+uo zpQ>P%I-Dmo)NR%uVQ8tv+Eu-ch$v(6!ckcbBFnq6W1$pV(8F`Nm|tsR5}4&EaU&-M zyB064wr-U0#7;*oysfRS4qn+15rdw%&PIi&=_^Ql-IOot#eZsh@LISe0!1F?6POfo z*C@_2V8ys+0XNl&iWdSfM*+A5tS+u8h4<=2C9Y+-Oem{{FYBO62mr1f124q7pAMFl z!wp?5~HxH;u6ehxbBmq;ALec=pQ<}s%5LFj*@Hn%0*f8(N**;nrM~avPnk@-4ys! zqL5{aaiydaU{t~w#HL0;%d&BK6h%>*U*Iau%0&Os!Q6bPnuSZEQP6x`4vm5q;4)|w zv=Em&QBXDKb?s!XGN7Jtn|`*b)dUu2*l%i^z%LU?fP zAUEarkfgdcUuy$BU=}}PB46(3<(gXS+vtW^4AD)T$VS2REWB6ieW!7rfSAieE*{WA z&zm`s2yib)y&uFEx8rN>Ddt^ZqK~4w|*eFpvH5-qY zPq2fY$l|Yx;22*_rsAnYJ#hv^Oj;Ppy6c*pYtSSr5LY}^0EsgoY9824o@Tn`8c{SU zj*GY73=YXwu0!!uO^cLSV3~#jQ@D0<8a`Fk4xCB5)TksXJ1vS$9I1EJ)nG#!T|JH6 zg2VKMtdL~HnGpm2|JzznB{M6=Uz6!_(q#NK;a(GN4>Hr0?|?@=0>D`082~EF;>`3E zf#q3~>86`jEz4ZDbk(ZNd0)QiCbJ3bt3YCAr6gdqz~~1E)E_m^)gL`T1a0==-p!TO zLhdL+dhXya7XnfAQw>)xfX6K9QOu0>WG9^B&Y?KR^R>8PE6(ZesW_uMq6l|L;KnQ6 zP@2o{Th+G8USPOoNzYN>4Dp-J=7I%fAgMiOfE%iet*dLEOV1`y9+FyKJth9bTQW-0 z@88ihTW#uZe;q0}?O7oFJY)y`l&#a!m}Kj9C0P&thsFK1;D194R6wU^_%i_x@=$E+ zv7a^|n+b-ini$bY>Lb|>9Z?_V&Ws@17fz`lx(TzG79%hE*)qnouZ$86d9lSrKZ`SN z8T{!I@!`(T!{`PkL>meZczj5%!@DM0GwP+bx(BEfmF9dniy;3?;fAY@zt3Q&Fs>ut zMarq^Olpp?9R`+(-YDv>)k~Bjoo_%n%qpTb?W?T>aakr5AGK+9kLYX~dw_Wh<@RGI z4i-}b{t`!h)4u#l2r2@adOb7h>^+>*uL%VWUhq3=%Xpw3zj=tZk7oHdfC|fdeRZ`R z9kpA$zLt#oc04q}w?E-8>BTv7WHRJ<49J&&;Nkfwnk*m=AbNYbfRN|ueCRdt%?4yE z5E`>|8u}$09#D@$_5dN>becXOvH_vzi^!*Sns}IXs{xq}q|<=V8xR8qqz%YU1M+ns zUojvr0NG_gegWhO1M){8PZ^M_q1w|1#0lgX1JVTKIRo-_AbSnSPk=mcK+XVp!GPGT zxWjKi<^v(G11aC}dk!Ek8IZpL(rZBIMa+i{$ZvogF(6hn_%Q>L1!T~G+zaG{0oeiM zqyhOSAk;T>4UYpkZ9pypIb%Q^6YyIu15yZN#DF{qjVAEMMx4aj>yh9ig;>jY=i#Pok4AMfgp+O${);cBdl%2ZFaSm!_* z%)uwN8d@A{pnOjA9R3=&3_kxsUyfLeq{i}kkBY&3g3p(XOw`m=8=^Lf5(kSZ8-H~^ zn&rvAsv|Uqks|H&O|y>;ZBL~wOneVJ{r1(cBS0Nlgco%ik%jd8Tm#MGSxBmg`hDqXM0nXJioZDkKH^*=ufk}kUPFj4<$jl^5&|A%54Yd}@ARtt?PeqI@ zdJ~~qcm7TB^o8qVWDR}+S<_==mBh$eA0w+FM%KPBAj=UWt0+cRLyWAoF|u}j0a@f5 zMjPhG$XXjCYjupQz!#8}86(RXBWrbxtd%jcN9T{oVrtuLp#E0H7g9=1#T8x?n3~GahB17y}30Y_HMACS&sDuYJ z4lFiAVlR)!?GZ%NNAMw8Poor=Mr~SLO$J7q3Vn=~({!GL{443and}phPC|k}+7mSm zHGOt*8j|%cXwc+QnwSCJE!yl(>ldxHNLJ zH~rpw?@a>@Dg!=7+fdmIqH(!6pYdpj?kTcQ#2SS3kbNd=_95g=AjwG@qFJnymm=x6 zpplFtjbPUqP?yg(?Vn)2WW(SrsFJ@ zjM|i1QnV@kC?$4#k05j|(Z67XF}7k7GDYp(V{p-IC}^lHwAR&`#o92o-b7smS}$asaL z#WAhMV~zzK4YhJDt{EfxP=txy0??;@mR3{Be-cP0I+}>9gnS1`rvcdyWYB=TN~La# zF7+0WwGl+K;n|yshU)bW8UuIcqBiv^U=e+pS;RvXSv)@ywKSUi7@C`7Xq+)LX)!c8 zF*H+RXtHByY%w$oV`x4{{S38Olo>_2%7@D_ZXwqY7j>phAVrY)U z(9oN)4AK`Lh@qJtL(>yOlNv+w{AilR&yGeGCB~HchZq`L49!R%|es5ges;n92+y%a<9gBTi$q6S%upNpZ{7en({49yEMG#g`Ro{yoq zKZa&+3{7qf&2up{w5o5Y#iD0oXwqV6o{phOjG=idhUU`fUa;ti7@Cn7nq4t8Z^h7j zC5Gme7@D0iGzVg60x>kS!fUioXAI3#F*I9aXgWvJEZiL9t1+b((a30!zWD7JJ0FRm zIWd}M;o%rrQKi%w^*@47%v~5yYXg1>&9@IRR?fln3|*Da9kvH`7w|KJlltJG!=XQ8IC-OENt$VF#jXlCg&>dcB_CYMDD zvL&d+W=(no*%gC49YIum=9A?N`Yiea*KzYJVoH61m8FH%qwBS3<>>5y)jA+K5K2BVI$+ZqV?CM8+HjJKqjO^Kiju84zuTMtr2r%~Cy&VGyV4 zvl2A4(aN?cMeAqu@@O4VIE^C;*#m@Pp-%HNm5U=Dd zagWT<7FPq&)}MvWP9Ue}M0;HYkhct_8h}_quKR`;h-^UoK*YTXhiZ-Q19{58`4Et7 z)SY6lkbVlt1%s^jfru4*jSs`R*GU7PR3Ku73N$7>lQl+My$v)^Kw({H7Z5G-3+ZJ* zXw%zbI}j~K37UTdqK$e2c^=4T2AyA0`RMg}1;}1C9*R;Qsx-Q+PYE%2iydozT8t8< zW&;^9$hsZKPJ=bvK(rZ}D76O2pn;|h2t@Ih;}s!|H113_{;7LrM?E5ucJ~> zKy9yQfrJb+KLpYYmb#r!05Qrs14O%uBwxjQ&+v#QZMro+0*#JH>TCS64YK0FHrXI+ z8W8PzP}FNCkj(~~#XztO5T#);5XPKQ(pLh}?uZFK>wv5^NPmz@Vb^tj9I5>Vnr{F( zeOq*I+6_dTucGei&&?f%QazyQH0VshwX6t2Y2io*S+6Tp-y7eR6HJqYltXX z3oe=;3Z#L@cs*))z^9$_(Y($JWR^kJHX!1j6e0lUr~si&v<@By#&2p%tJee3>;Ctk zkqyYVfutLd@2h-teGUSlnT*co=RnpQ>@#90MZJmMwwW2R28y%KK~sUFXj9%g^nylg zI_GIvhtunhHz_pJ>n)2Sb;tA7{AHMlC`I)abx%jBOr&(rydB6agNAM(7b1K>%$5To z270L`AkXXmqrM<>x}ntLpm7*DKM6#e=?Q(l2V_5((>N!PJ|MAc_Nl4pNa6n+bQ@9J#CR%;Nf|0)yxP&vc7~; z`mBkNEFjv9TGYY?gf`t`GLW@~T66)KZqWIgK-L>%?d5!uqxc*If=Wci=QlWwGm7Rk z5DY0%$RB{@7^Hv3OGVS%hA^VpM$}?45N*v05lOsMl~out%%|YPHwQ*oTBC(QM{TP> zLstrVjA{kq0F@?>v4??ZSI0v7E+FKqy3g+gqRsFH&5wZ`G3fIqkXeRO?*o}`sQbr2 z_8IhRqJ-Y=uL0R> zu-I>b+;8CgArNCsNW>2idJU!0fjniX`%)k;7?3I;nTA@#&J!9yW3>EZK(?Y5dh0w5 z#0JjP4@FIX2!uRA_xWBR;`tWM&h!g4WA7dU5;EBNV<4Rdonz33fLoshWZfvEirn~bZKgdA}kJLwgxuan>dp0%UhpPOs`3@i6d9CIx;Gw-155?2uM@1K71fX{<37TvP z?~mgzg+jV)3Dj!!N%fmIm(0(iH#axd(o3W0Ek*cgQgc)N7PrPb6Pfq~9)E$6DlSXz z*g~&HipDZ)8}Ph-1j4(UvliiZTb|8ATYAX9WD(wM?)7laW9BbzZNrnb-th^tA)=`T zue}+c1VExmzCZQ{R7NN+c)Yx@EmiO};!3G3Q6 zeKFCVD-kXcb*XI??m4CtWi1p$q+TmtynY3-iv=aR6W%uH!^^n-GA(}PxKXOzh;JfZ zfp#Iji3rwTz~-4MrT0pHl%?^*d;03z+OJgi+f{yz^!k7N6ruS_#0#)Y#NR#lmpV+A zN=QGjyh63-3o;Mh+;v4dRc;;LG>Z45U4fx07q8-~zd}dKQpwtDJ3OsljN6rJu~5{a zuC{^XUWrnb%ZHx7EZ5t9Wp0ZiauFBs0O=JtE>_z^{BpHPzEUHrO7h?2YAi7pGpgx3T-@ZYT!tUs&!_)lSU^yTh397i#jEXF zB>XM{yZDVnMN?A~6A<)uslMGOX>W(%nh@B~Cee39@e=F%+C)Fz$4_!L$?Gu^H#A5aJX<)&*xU{ee~V%?0WT?4msHX9 zFZB+TYWL7j;Ux8Ate8h&%%yQ&o5Osuna-%`kvj2dqz_c!I~Sy!kWDr)ruZ^?B)_4l zgTE>@0<^Vb3~b_+7aVZ$++YCk_5uVqBMDvS0mXH2CFMnS#_uLHl8K1L>=j1aMFIu!wX6|g=_FB7P($IEr$Sxxm`?sNP- zi*1dhFQ&(MUqB146UZ5j8T7rE4!jtZa`=mnDRkjI9M2R`lu% zq-hL9EcB@LMuZffuu;>7S2%0fU;Ju{G};YRZ;bxvjmAv<9F3OLzJh`l#?kM2e5 zv6d)_hd5crCQt2#3^?SdU_$Opu)9bS0Vvm9SX{>2Pxb%N7jIe*;MwX*sAf3rV?UCF zTk+A&Jbon60-p9AA>G^7durRGyiim`e7PJiTqY+r^cMAIAnFqJRU=g~m=a%4(!SwD zJu?=;h)MoRFXC0>lW>^G*MAUYe7G2i>h)j}{Xr>;HL8;typy*n|0WMgt3r$pFV-;m z=!A(XJ_QurkGP@LAK24Qkhu4;NNl5{DNK{tT~@%JNldu@)wiGgOA}g zDCo}7!Jb~rt$B#}4i>MhaY&*EdyFkCe0Hoam+6*O7u6-aH%zz}t@e1OhE4NDUnI@O zh#_Kp7|Wrx&vQuoL@p&$3tgq5> zt3+FOtPqq>-3H1qn}Mh#}Lnbu*hIB_vvnP}Rm^KY*F zUz)GsB5I6L44j0wHIa!85tQEHjio*Mh=rKxa537)-o(vB^^yQRo!^0@aWlH-MaCM; zoHlsn4S07M1ZtgOgQug_(~MWz)&h*~l2QJvK1!qodA;#tVtwQrhuqO%c8m$JmC}7w zxK8AYbz0!0So4MFE*RS~;RE{2hnpxS@)6I-TxG0p)u|U)+MEX$lIoPFdep49(TD5g z(elQf)LuC_jXMsH9=p^|7B$91^&-4vk;0b2Sh14; VtSa)`o6_i(8#m_gHc=m)_`eI}fZG57 diff --git a/CPP/LINKED LIST/SINGLY LINKED LIST/Maths For DSA/Sliding Window Problem/subarraysum.exe b/CPP/LINKED LIST/SINGLY LINKED LIST/Maths For DSA/Sliding Window Problem/subarraysum.exe deleted file mode 100644 index 828a476df314e80121a94d0ae351d063cb8e9ae8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47561 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 diff --git a/CPP/LINKED LIST/SINGLY LINKED LIST/Maths For DSA/powerfunc.bin b/CPP/LINKED LIST/SINGLY LINKED LIST/Maths For DSA/powerfunc.bin deleted file mode 100644 index b36443f41ee646750777fc8ddade67cbc068234b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47385 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 VR{QvEM`>iujTv)zov4pA{4Ww&M}hzV diff --git a/Leetcode-solutions/Symmetric_Tree/Readme.md b/Leetcode-solutions/Symmetric_Tree/Readme.md new file mode 100644 index 00000000..403bd858 --- /dev/null +++ b/Leetcode-solutions/Symmetric_Tree/Readme.md @@ -0,0 +1,3 @@ +# Leetcode question #101 + +[Click here to view the question on Leetcode.](https://leetcode.com/problems/symmetric-tree/) diff --git a/Leetcode-solutions/Symmetric_Tree/Symmetric_Tree.cpp b/Leetcode-solutions/Symmetric_Tree/Symmetric_Tree.cpp new file mode 100644 index 00000000..a5225f06 --- /dev/null +++ b/Leetcode-solutions/Symmetric_Tree/Symmetric_Tree.cpp @@ -0,0 +1,33 @@ + + + struct TreeNode { + int val; + TreeNode *left; + TreeNode *right; + TreeNode() : val(0), left(nullptr), right(nullptr) {} + TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} + TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} + }; + +class Solution { +public: + bool isSymmetric(TreeNode* root) { + + if(!root) + return true; + + return areMirror(root->left, root->right); + + } + + bool areMirror(TreeNode* t1, TreeNode* t2){ + if(!t1 || !t2) + return (t1 == t2); + + if(t1->val != t2->val) + return false; + + return ( areMirror(t1->left, t2->right) && areMirror(t1->right, t2->left) ); + + } +}; \ No newline at end of file From 9f365bbe812e5206e9e6b7cd531cd101be209624 Mon Sep 17 00:00:00 2001 From: Anshu Pandey <72062616+KryptonANSHU@users.noreply.github.com> Date: Tue, 4 Oct 2022 21:58:32 -0700 Subject: [PATCH 260/448] Added Linked list Code --- DSA Javascript/linked_list.js | 230 ++++++++++++++++++++++++++++++++++ 1 file changed, 230 insertions(+) create mode 100644 DSA Javascript/linked_list.js diff --git a/DSA Javascript/linked_list.js b/DSA Javascript/linked_list.js new file mode 100644 index 00000000..c440d575 --- /dev/null +++ b/DSA Javascript/linked_list.js @@ -0,0 +1,230 @@ +class Node { + // constructor + constructor(element) { + this.element = element; + this.next = null + } +} +// linkedlist class +class LinkedList { + constructor() { + this.head = null; + this.size = 0; + } + + // adds an element at the end + // of list + add(element) { + // creates a new node + var node = new Node(element); + + // to store current node + var current; + + // if list is Empty add the + // element and make it head + if (this.head == null) + this.head = node; + else { + current = this.head; + + // iterate to the end of the + // list + while (current.next) { + current = current.next; + } + + // add node + current.next = node; + } + this.size++; + } + + // insert element at the position index + // of the list + insertAt(element, index) { + if (index < 0 || index > this.size) + return console.log("Please enter a valid index."); + else { + // creates a new node + var node = new Node(element); + var curr, prev; + + curr = this.head; + + // add the element to the + // first index + if (index == 0) { + node.next = this.head; + this.head = node; + } else { + curr = this.head; + var it = 0; + + // iterate over the list to find + // the position to insert + while (it < index) { + it++; + prev = curr; + curr = curr.next; + } + + // adding an element + node.next = curr; + prev.next = node; + } + this.size++; + } + } + + // removes an element from the + // specified location + removeFrom(index) { + if (index < 0 || index >= this.size) + return console.log("Please Enter a valid index"); + else { + var curr, prev, it = 0; + curr = this.head; + prev = curr; + + // deleting first element + if (index === 0) { + this.head = curr.next; + } else { + // iterate over the list to the + // position to removce an element + while (it < index) { + it++; + prev = curr; + curr = curr.next; + } + + // remove the element + prev.next = curr.next; + } + this.size--; + + // return the remove element + return curr.element; + } + } + + // removes a given element from the + // list + removeElement(element) { + var current = this.head; + var prev = null; + + // iterate over the list + while (current != null) { + // comparing element with current + // element if found then remove the + // and return true + if (current.element === element) { + if (prev == null) { + this.head = current.next; + } else { + prev.next = current.next; + } + this.size--; + return current.element; + } + prev = current; + current = current.next; + } + return -1; + } + + + // finds the index of element + indexOf(element) { + var count = 0; + var current = this.head; + + // iterate over the list + while (current != null) { + // compare each element of the list + // with given element + if (current.element === element) + return count; + count++; + current = current.next; + } + + // not found + return -1; + } + + // checks the list for empty + isEmpty() { + return this.size == 0; + } + + // gives the size of the list + size_of_list() { + console.log(this.size); + } + + + // prints the list items + printList() { + var curr = this.head; + var str = ""; + while (curr) { + str += curr.element + " "; + curr = curr.next; + } + console.log(str); + } + +} + +// creating an object for the +// Linkedlist class +var ll = new LinkedList(); + +// testing isEmpty on an empty list +// returns true +console.log(ll.isEmpty()); + +// adding element to the list +ll.add(10); + +// prints 10 +ll.printList(); + +// returns 1 +console.log(ll.size_of_list()); + +// adding more elements to the list +ll.add(20); +ll.add(30); +ll.add(40); +ll.add(50); + +// returns 10 20 30 40 50 +ll.printList(); + +// prints 50 from the list +console.log("is element removed ?" + ll.removeElement(50)); + +// prints 10 20 30 40 +ll.printList(); + +// returns 3 +console.log("Index of 40 " + ll.indexOf(40)); + +// insert 60 at second position +// ll contains 10 20 60 30 40 +ll.insertAt(60, 2); + +ll.printList(); + +// returns false +console.log("is List Empty ? " + ll.isEmpty()); + +// remove 3rd element from the list +console.log(ll.removeFrom(3)); + +// prints 10 20 60 40 +ll.printList(); From d6fecf7bd30615a91c381e2b175ea5c846cf7762 Mon Sep 17 00:00:00 2001 From: Anshu Pandey <72062616+KryptonANSHU@users.noreply.github.com> Date: Tue, 4 Oct 2022 22:02:23 -0700 Subject: [PATCH 261/448] Stack Using Singly LL in Javascript --- .../Stack_Using_Singly_Linked_List.js | 83 +++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 DSA Javascript/Stack_Using_Singly_Linked_List.js diff --git a/DSA Javascript/Stack_Using_Singly_Linked_List.js b/DSA Javascript/Stack_Using_Singly_Linked_List.js new file mode 100644 index 00000000..fb1c779d --- /dev/null +++ b/DSA Javascript/Stack_Using_Singly_Linked_List.js @@ -0,0 +1,83 @@ +//Stack using linkedlist +function stackUsingLL(){ + //Node + let Node = function(elm){ + this.element = elm; + this.next = null; + } + + //To keep track of the size + let length = 0; + + //To keep track of the list + let head = null; + + //Push data in the stack + this.push = function(elm){ + //Create a new node + let node = new Node(elm), + current; + + //Add the new node at the top + current = head; + node.next = current; + head = node; + + length++; + } + + //Pop the item from the stack + this.pop = function(){ + let current = head; + + //If there is item then remove it + //and make the next element as the first + if(current){ + let elm = current.element; + current = current.next; + head = current; + length--; + return elm; + } + + return null; + } + + //Return the first element in the stack + this.peek = function(){ + if(head){ + return head.element; + } + + return null; + } + + //Convert the stack to an array + this.toArray = function(){ + let arr = []; + let current = head; + while(current){ + arr.push(current.element); + current = current.next; + } + + return arr; + } + + //Check if stack is empty + this.isEmpty = function(){ + return length === 0; + } + + //Return the size of the stack + this.size = function(){ + return length; + } + + //Clear the stack + this.clear = function(){ + head = null; + length = 0; + } + +} From dd3cddf98ce1ff102cdacaf90321a4413aa57520 Mon Sep 17 00:00:00 2001 From: Sohan A Date: Wed, 5 Oct 2022 10:32:44 +0530 Subject: [PATCH 262/448] Add removeElement array solution --- Arrays/_removeElement.cpp | 44 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 Arrays/_removeElement.cpp diff --git a/Arrays/_removeElement.cpp b/Arrays/_removeElement.cpp new file mode 100644 index 00000000..d85dceda --- /dev/null +++ b/Arrays/_removeElement.cpp @@ -0,0 +1,44 @@ +/*Problem You are given an array A=[A1 ,A2 ​ ,…,AN ​ ] consisting of N positive integers. You are also given a constant K, using which you can perform the following operation on AA: Choose two distinct indices ii and jj such that A_i ​ +A_j ​ ≤K, and remove either A_iA i ​ or A_jA j ​ from AA. Is it possible to obtain an array consisting of only one element using several (possibly, zero) such operations? +Input Format The first line of input contains a single integer TT, denoting the number of test cases. The description of TT test cases follows. The first line of each test case contains two space-separated integers NN and KK. The second line contains NN space-separated integers 1 ​ ,A 2 ​ ,…,A N ​ . + Output Format For each test case, print "YES" if it is possible to obtain an array consisting of only one element using the given operation, otherwise print "NO". You may print each character of the string in uppercase or lowercase (for example, the strings "yEs", "yes", "Yes" and "YES" will all be treated as identical).*/ + +#include +using namespace std; +#define ll long long +#define pb push_back + +int main() +{ + ll t; + cin >> t; + while (t--) + { + ll n, k; + cin >> n >> k; + vector v; + for (int i = 0; i < n; i++) + { + int e; + cin >> e; + v.pb(e); + } + if (n == 1) + { + cout << "Yes" << endl; + } + else + { + sort(v.begin(), v.end()); + ll maxi = *max_element(v.begin(), v.end()); + ll mini = *min_element(v.begin(), v.end()); + if (maxi + mini <= k) + { + cout << "Yes" << endl; + } + else + { + cout << "No" << endl; + } + } + } +} \ No newline at end of file From 7fb44d8fe614a67d344e79ad59a9402ad35f5de3 Mon Sep 17 00:00:00 2001 From: Abhimanyu Chauhan Date: Wed, 5 Oct 2022 10:46:15 +0530 Subject: [PATCH 263/448] M Coloring Problem --- CPP/recursion/M Coloring Problem | 51 ++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 CPP/recursion/M Coloring Problem diff --git a/CPP/recursion/M Coloring Problem b/CPP/recursion/M Coloring Problem new file mode 100644 index 00000000..ad10972b --- /dev/null +++ b/CPP/recursion/M Coloring Problem @@ -0,0 +1,51 @@ +#include +using namespace std; +//Code By Abhimanyu +bool isSafe(int node, int color[], bool graph[101][101], int n, int col) { + for (int k = 0; k < n; k++) { + if (k != node && graph[k][node] == 1 && color[k] == col) { + return false; + } + } + return true; +} +bool solve(int node, int color[], int m, int N, bool graph[101][101]) { + if (node == N) { + return true; + } + + for (int i = 1; i <= m; i++) { + if (isSafe(node, color, graph, N, i)) { + color[node] = i; + if (solve(node + 1, color, m, N, graph)) return true; + color[node] = 0; + } + + } + return false; +} +bool gC(bool graph[101][101], int m, int N) { + int color[N] = { + 0 + }; + if (solve(0, color, m, N, graph)) return true; + return false; +} + +int main() { + int N = 4; + int m = 3; + + bool graph[101][101]; + memset(graph, false, sizeof graph); + + + graph[0][1] = 1; graph[1][0] = 2; + graph[1][2] = 1; graph[2][1] = 1; + graph[2][3] = 1; graph[3][2] = 1; + graph[3][0] = 1; graph[0][3] = 1; + graph[0][2] = 1; graph[2][0] = 1; + + cout << gC(graph, m, N); + +} From 84e6354f73bc77ebcdcfdfebac08390a0dca9bb8 Mon Sep 17 00:00:00 2001 From: Ronica Singh Date: Wed, 5 Oct 2022 07:20:46 +0200 Subject: [PATCH 264/448] Added Average Salary Solution for 1491 --- ...ry-excluding-the-minimum-and-maximum-salary-1491.cs | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 CSharp/Programming Skills 1/average-salary-excluding-the-minimum-and-maximum-salary-1491.cs diff --git a/CSharp/Programming Skills 1/average-salary-excluding-the-minimum-and-maximum-salary-1491.cs b/CSharp/Programming Skills 1/average-salary-excluding-the-minimum-and-maximum-salary-1491.cs new file mode 100644 index 00000000..1ab320cd --- /dev/null +++ b/CSharp/Programming Skills 1/average-salary-excluding-the-minimum-and-maximum-salary-1491.cs @@ -0,0 +1,10 @@ +public class Solution { + public double Average(int[] salary) { + Array.Sort(salary); + int sum = 0; + for (int i = 1; i < salary.Length - 1; i++) + sum += salary[i]; + double avgSalary = Convert.ToDouble(sum.ToString("N3")) / (salary.Length - 2); + return Math.Floor(avgSalary * 100000) / 100000; + } +} \ No newline at end of file From b71eea510cbdaf11a4193eb2e8903e9fffea7bc3 Mon Sep 17 00:00:00 2001 From: Sohan Agashimani Date: Wed, 5 Oct 2022 11:01:40 +0530 Subject: [PATCH 265/448] minor changes --- Arrays/_removeElement.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Arrays/_removeElement.cpp b/Arrays/_removeElement.cpp index d85dceda..0911d599 100644 --- a/Arrays/_removeElement.cpp +++ b/Arrays/_removeElement.cpp @@ -1,5 +1,5 @@ /*Problem You are given an array A=[A1 ,A2 ​ ,…,AN ​ ] consisting of N positive integers. You are also given a constant K, using which you can perform the following operation on AA: Choose two distinct indices ii and jj such that A_i ​ +A_j ​ ≤K, and remove either A_iA i ​ or A_jA j ​ from AA. Is it possible to obtain an array consisting of only one element using several (possibly, zero) such operations? -Input Format The first line of input contains a single integer TT, denoting the number of test cases. The description of TT test cases follows. The first line of each test case contains two space-separated integers NN and KK. The second line contains NN space-separated integers 1 ​ ,A 2 ​ ,…,A N ​ . +Input Format The first line of input contains a single integer TT, denoting the number of test cases. The description of T test cases follows. The first line of each test case contains two space-separated integers NN and K. The second line contains N space-separated integers 1 ​ ,A 2 ​ ,…,A N ​ . Output Format For each test case, print "YES" if it is possible to obtain an array consisting of only one element using the given operation, otherwise print "NO". You may print each character of the string in uppercase or lowercase (for example, the strings "yEs", "yes", "Yes" and "YES" will all be treated as identical).*/ #include From 2ca81bd20c189aa50219a337f77ae5d322524b76 Mon Sep 17 00:00:00 2001 From: siddharth jain <47204985+siddharth3108@users.noreply.github.com> Date: Wed, 5 Oct 2022 11:07:54 +0530 Subject: [PATCH 266/448] Create Towerofhanoi.java --- Towerofhanoi.java | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 Towerofhanoi.java diff --git a/Towerofhanoi.java b/Towerofhanoi.java new file mode 100644 index 00000000..fc658413 --- /dev/null +++ b/Towerofhanoi.java @@ -0,0 +1,21 @@ +package com.JournalDev; +public class Main { + static void towerOfHanoi(int n, char from_rod, char to_rod, char helper_rod) + { + if (n == 1) + { + System.out.println("Take disk 1 from rod " + from_rod + " to rod " + to_rod); + return; + } + towerOfHanoi(n-1, from_rod, helper_rod, to_rod); + System.out.println("Take disk " + n + " from rod " + from_rod + " to rod " + to_rod); + towerOfHanoi(n-1, helper_rod, to_rod, from_rod); + } + + public static void main(String args[]) + { + int n = 5; + towerOfHanoi(n,'A','C', 'B'); + } + +} From a0caf8ba77cbca18c122fbc2c0ed2c83ec058312 Mon Sep 17 00:00:00 2001 From: varun jain <98322627+varunnitian@users.noreply.github.com> Date: Wed, 5 Oct 2022 11:08:05 +0530 Subject: [PATCH 267/448] Added code for radix sort --- Arrays/radixsort.cpp | 75 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 Arrays/radixsort.cpp diff --git a/Arrays/radixsort.cpp b/Arrays/radixsort.cpp new file mode 100644 index 00000000..432ae3b6 --- /dev/null +++ b/Arrays/radixsort.cpp @@ -0,0 +1,75 @@ +// C++ implementation of Radix Sort + +#include +using namespace std; + +// A utility function to get maximum value in arr[] +int getMax(int arr[], int n) +{ + int mx = arr[0]; + for (int i = 1; i < n; i++) + if (arr[i] > mx) + mx = arr[i]; + return mx; +} + +// A function to do counting sort of arr[] according to +// the digit represented by exp. +void countSort(int arr[], int n, int exp) +{ + int output[n]; // output array + int i, count[10] = { 0 }; + + // Store count of occurrences in count[] + for (i = 0; i < n; i++) + count[(arr[i] / exp) % 10]++; + + // Change count[i] so that count[i] now contains actual + // position of this digit in output[] + for (i = 1; i < 10; i++) + count[i] += count[i - 1]; + + // Build the output array + for (i = n - 1; i >= 0; i--) { + output[count[(arr[i] / exp) % 10] - 1] = arr[i]; + count[(arr[i] / exp) % 10]--; + } + + // Copy the output array to arr[], so that arr[] now + // contains sorted numbers according to current digit + for (i = 0; i < n; i++) + arr[i] = output[i]; +} + +// The main function to that sorts arr[] of size n using +// Radix Sort +void radixsort(int arr[], int n) +{ + // Find the maximum number to know number of digits + int m = getMax(arr, n); + + // Do counting sort for every digit. Note that instead + // of passing digit number, exp is passed. exp is 10^i + // where i is current digit number + for (int exp = 1; m / exp > 0; exp *= 10) + countSort(arr, n, exp); +} + +// A utility function to print an array +void print(int arr[], int n) +{ + for (int i = 0; i < n; i++) + cout << arr[i] << " "; +} + +// Driver Code +int main() +{ + int arr[] = { 170, 45, 75, 90, 802, 24, 2, 66 }; + int n = sizeof(arr) / sizeof(arr[0]); + + // Function Call + radixsort(arr, n); + print(arr, n); + return 0; +} From 9ca944251b2c025e8feec601e16aa6545154713f Mon Sep 17 00:00:00 2001 From: varun jain <98322627+varunnitian@users.noreply.github.com> Date: Wed, 5 Oct 2022 11:09:16 +0530 Subject: [PATCH 268/448] Added code for quick sorting techniques --- Arrays/quicksort.cpp | 75 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 Arrays/quicksort.cpp diff --git a/Arrays/quicksort.cpp b/Arrays/quicksort.cpp new file mode 100644 index 00000000..55a298eb --- /dev/null +++ b/Arrays/quicksort.cpp @@ -0,0 +1,75 @@ +/* C++ implementation of QuickSort */ +#include +using namespace std; + +// A utility function to swap two elements +void swap(int* a, int* b) +{ + int t = *a; + *a = *b; + *b = t; +} + +/* This function takes last element as pivot, places +the pivot element at its correct position in sorted +array, and places all smaller (smaller than pivot) +to left of pivot and all greater elements to right +of pivot */ +int partition(int arr[], int low, int high) +{ + int pivot = arr[high]; // pivot + int i + = (low + - 1); // Index of smaller element and indicates + // the right position of pivot found so far + + for (int j = low; j <= high - 1; j++) { + // If current element is smaller than the pivot + if (arr[j] < pivot) { + i++; // increment index of smaller element + swap(&arr[i], &arr[j]); + } + } + swap(&arr[i + 1], &arr[high]); + return (i + 1); +} + +/* The main function that implements QuickSort +arr[] --> Array to be sorted, +low --> Starting index, +high --> Ending index */ +void quickSort(int arr[], int low, int high) +{ + if (low < high) { + /* pi is partitioning index, arr[p] is now + at right place */ + int pi = partition(arr, low, high); + + // Separately sort elements before + // partition and after partition + quickSort(arr, low, pi - 1); + quickSort(arr, pi + 1, high); + } +} + +/* Function to print an array */ +void printArray(int arr[], int size) +{ + int i; + for (i = 0; i < size; i++) + cout << arr[i] << " "; + cout << endl; +} + +// Driver Code +int main() +{ + int arr[] = { 10, 7, 8, 9, 1, 5 }; + int n = sizeof(arr) / sizeof(arr[0]); + quickSort(arr, 0, n - 1); + cout << "Sorted array: \n"; + printArray(arr, n); + return 0; +} + + From c3eab8f4f87005187b3cbd14251c702ddb4089ce Mon Sep 17 00:00:00 2001 From: varun jain <98322627+varunnitian@users.noreply.github.com> Date: Wed, 5 Oct 2022 11:10:44 +0530 Subject: [PATCH 269/448] Added code for fibonacci series using recursion. --- CPP/recursion/fibonacci_series.cpp | 58 ++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 CPP/recursion/fibonacci_series.cpp diff --git a/CPP/recursion/fibonacci_series.cpp b/CPP/recursion/fibonacci_series.cpp new file mode 100644 index 00000000..6022ba3f --- /dev/null +++ b/CPP/recursion/fibonacci_series.cpp @@ -0,0 +1,58 @@ +// #include +// using namespace std; +// int fib(int n){ +// if(n<=1) +// return n; +// else +// return fib(n-2)+fib(n-1); +// } +// int main(){ +// cout< +// using namespace std; +// int fib(int n){ +// if(n<=1) +// return 1; +// int t0=0,t1=1,s; +// for(int i=2;i<=n;i++){ +// s=t0+t1; +// t0=t1; +// t1=s; +// } +// return s; +// } +// int main(){ +// cout< +// using namespace std; +// int F[10]; +// int fib(int n){ +// if(n<=1){ +// F[n]=n; +// return n; +// } +// else +// if(F[n-2]==-1){ +// F[n-2]=fib(n-2); +// } +// if(F[n-1]==-1){ +// F[n-1]=fib(n-1); +// } +// return fib(n-2)+fib(n-1); +// } +// int main(){ +// cout< Date: Wed, 5 Oct 2022 11:12:59 +0530 Subject: [PATCH 270/448] Delete quicksort.cpp --- Arrays/quicksort.cpp | 75 -------------------------------------------- 1 file changed, 75 deletions(-) delete mode 100644 Arrays/quicksort.cpp diff --git a/Arrays/quicksort.cpp b/Arrays/quicksort.cpp deleted file mode 100644 index 55a298eb..00000000 --- a/Arrays/quicksort.cpp +++ /dev/null @@ -1,75 +0,0 @@ -/* C++ implementation of QuickSort */ -#include -using namespace std; - -// A utility function to swap two elements -void swap(int* a, int* b) -{ - int t = *a; - *a = *b; - *b = t; -} - -/* This function takes last element as pivot, places -the pivot element at its correct position in sorted -array, and places all smaller (smaller than pivot) -to left of pivot and all greater elements to right -of pivot */ -int partition(int arr[], int low, int high) -{ - int pivot = arr[high]; // pivot - int i - = (low - - 1); // Index of smaller element and indicates - // the right position of pivot found so far - - for (int j = low; j <= high - 1; j++) { - // If current element is smaller than the pivot - if (arr[j] < pivot) { - i++; // increment index of smaller element - swap(&arr[i], &arr[j]); - } - } - swap(&arr[i + 1], &arr[high]); - return (i + 1); -} - -/* The main function that implements QuickSort -arr[] --> Array to be sorted, -low --> Starting index, -high --> Ending index */ -void quickSort(int arr[], int low, int high) -{ - if (low < high) { - /* pi is partitioning index, arr[p] is now - at right place */ - int pi = partition(arr, low, high); - - // Separately sort elements before - // partition and after partition - quickSort(arr, low, pi - 1); - quickSort(arr, pi + 1, high); - } -} - -/* Function to print an array */ -void printArray(int arr[], int size) -{ - int i; - for (i = 0; i < size; i++) - cout << arr[i] << " "; - cout << endl; -} - -// Driver Code -int main() -{ - int arr[] = { 10, 7, 8, 9, 1, 5 }; - int n = sizeof(arr) / sizeof(arr[0]); - quickSort(arr, 0, n - 1); - cout << "Sorted array: \n"; - printArray(arr, n); - return 0; -} - - From 3c7e7c8eb3c7e19dbe20958550054c556dcac6e9 Mon Sep 17 00:00:00 2001 From: varun jain <98322627+varunnitian@users.noreply.github.com> Date: Wed, 5 Oct 2022 11:14:00 +0530 Subject: [PATCH 271/448] Delete radixsort.cpp --- Arrays/radixsort.cpp | 75 -------------------------------------------- 1 file changed, 75 deletions(-) delete mode 100644 Arrays/radixsort.cpp diff --git a/Arrays/radixsort.cpp b/Arrays/radixsort.cpp deleted file mode 100644 index 432ae3b6..00000000 --- a/Arrays/radixsort.cpp +++ /dev/null @@ -1,75 +0,0 @@ -// C++ implementation of Radix Sort - -#include -using namespace std; - -// A utility function to get maximum value in arr[] -int getMax(int arr[], int n) -{ - int mx = arr[0]; - for (int i = 1; i < n; i++) - if (arr[i] > mx) - mx = arr[i]; - return mx; -} - -// A function to do counting sort of arr[] according to -// the digit represented by exp. -void countSort(int arr[], int n, int exp) -{ - int output[n]; // output array - int i, count[10] = { 0 }; - - // Store count of occurrences in count[] - for (i = 0; i < n; i++) - count[(arr[i] / exp) % 10]++; - - // Change count[i] so that count[i] now contains actual - // position of this digit in output[] - for (i = 1; i < 10; i++) - count[i] += count[i - 1]; - - // Build the output array - for (i = n - 1; i >= 0; i--) { - output[count[(arr[i] / exp) % 10] - 1] = arr[i]; - count[(arr[i] / exp) % 10]--; - } - - // Copy the output array to arr[], so that arr[] now - // contains sorted numbers according to current digit - for (i = 0; i < n; i++) - arr[i] = output[i]; -} - -// The main function to that sorts arr[] of size n using -// Radix Sort -void radixsort(int arr[], int n) -{ - // Find the maximum number to know number of digits - int m = getMax(arr, n); - - // Do counting sort for every digit. Note that instead - // of passing digit number, exp is passed. exp is 10^i - // where i is current digit number - for (int exp = 1; m / exp > 0; exp *= 10) - countSort(arr, n, exp); -} - -// A utility function to print an array -void print(int arr[], int n) -{ - for (int i = 0; i < n; i++) - cout << arr[i] << " "; -} - -// Driver Code -int main() -{ - int arr[] = { 170, 45, 75, 90, 802, 24, 2, 66 }; - int n = sizeof(arr) / sizeof(arr[0]); - - // Function Call - radixsort(arr, n); - print(arr, n); - return 0; -} From 8b79c539ce9a04dbf7d66544964e719fa6dc882a Mon Sep 17 00:00:00 2001 From: varun jain <98322627+varunnitian@users.noreply.github.com> Date: Wed, 5 Oct 2022 11:15:50 +0530 Subject: [PATCH 272/448] added code for nested recursion --- CPP/recursion/nested_recursion.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 CPP/recursion/nested_recursion.cpp diff --git a/CPP/recursion/nested_recursion.cpp b/CPP/recursion/nested_recursion.cpp new file mode 100644 index 00000000..d8e87fd1 --- /dev/null +++ b/CPP/recursion/nested_recursion.cpp @@ -0,0 +1,12 @@ +#include +using namespace std; +int fun(int n){ + if(n>100) + return n-10; + else + return fun(fun(n+11)); +} +int main(){ + cout< Date: Wed, 5 Oct 2022 11:17:18 +0530 Subject: [PATCH 273/448] top technical interview asked question added --- Java/Stack/reverseasttring.cpp | 81 ++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 Java/Stack/reverseasttring.cpp diff --git a/Java/Stack/reverseasttring.cpp b/Java/Stack/reverseasttring.cpp new file mode 100644 index 00000000..45b4673f --- /dev/null +++ b/Java/Stack/reverseasttring.cpp @@ -0,0 +1,81 @@ +#include +#include +using namespace std; +stack st; +//pushin function to insert elements at correct position +void pushin(int t){ + if(st.size()==0){ + st.push(t); + return; + } + else{ + int val=st.top(); + st.pop(); + pushin(t); + st.push(val); + return; + } +} +//reverse function +void reverse(){ + if(st.size()==1)return; + int temp=st.top(); + st.pop(); + reverse(); + pushin(temp); + return; +} + +// Driver Code +int main() +{ + + // push elements into + // the stack + st.push(1); + st.push(2); + st.push(3); + st.push(4); + + cout<<"Original Stack"<v; + while(!st.empty()) + { + int p=st.top(); + st.pop(); + v.push_back(p); + } + + //display of reversed stack + for(int i=0;i Date: Wed, 5 Oct 2022 11:19:51 +0530 Subject: [PATCH 274/448] Flatten binary tree-to linked-list --- Trees/flatten-binary-tree-to-linked-list.cpp | 52 ++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 Trees/flatten-binary-tree-to-linked-list.cpp diff --git a/Trees/flatten-binary-tree-to-linked-list.cpp b/Trees/flatten-binary-tree-to-linked-list.cpp new file mode 100644 index 00000000..a7e58a2c --- /dev/null +++ b/Trees/flatten-binary-tree-to-linked-list.cpp @@ -0,0 +1,52 @@ +#include + +using namespace std; + +/** + * Question Link:-https://leetcode.com/problems/flatten-binary-tree-to-linked-list/ + * Definition for a binary tree node. + * struct TreeNode { + * int val; + * TreeNode *left; + * TreeNode *right; + * TreeNode() : val(0), left(nullptr), right(nullptr) {} + * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} + * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} + * }; + */ + +struct TreeNode { + int val; + TreeNode *left; + TreeNode *right; + TreeNode() : val(0), left(nullptr), right(nullptr) {} + TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} + TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} + }; + +class Solution { +public: + + TreeNode* rightmost(TreeNode* root){ + if (root->right==NULL) return root; + return rightmost(root->right); + } + + void flatten(TreeNode* root) { + if (root==NULL) return; + TreeNode* nextright; + TreeNode* rightMOST; + + while (root){ + + if (root->left){ + rightMOST = rightmost(root->left); + nextright = root->right; + root->right = root->left; + root->left=NULL; + rightMOST->right=nextright; + } + root=root->right; + } + } +}; \ No newline at end of file From b9e30f554dd4d530a8e684a73ad1a28629e6e8b9 Mon Sep 17 00:00:00 2001 From: sahanmndl Date: Wed, 5 Oct 2022 11:21:48 +0530 Subject: [PATCH 275/448] Added leetcode codes for two Trees and Graph problems --- .../Leetcode-1254-NumberOfClosedIslands.cpp | 44 +++++++++++++++++++ CPP/Problems/Leetcode-733-FloodFill.cpp | 38 ++++++++++++++++ CPP/Trees/LowestCommonAncestor.cpp | 35 +++++++++++++++ CPP/Trees/TargetSum.cpp | 29 ++++++++++++ 4 files changed, 146 insertions(+) create mode 100644 CPP/Problems/Leetcode-1254-NumberOfClosedIslands.cpp create mode 100644 CPP/Problems/Leetcode-733-FloodFill.cpp create mode 100644 CPP/Trees/LowestCommonAncestor.cpp create mode 100644 CPP/Trees/TargetSum.cpp diff --git a/CPP/Problems/Leetcode-1254-NumberOfClosedIslands.cpp b/CPP/Problems/Leetcode-1254-NumberOfClosedIslands.cpp new file mode 100644 index 00000000..322e7c4c --- /dev/null +++ b/CPP/Problems/Leetcode-1254-NumberOfClosedIslands.cpp @@ -0,0 +1,44 @@ +#include +using namespace std; + +//https://leetcode.com/problems/number-of-closed-islands/ + +class Solution { +public: + void dfs(int i, int j, vector> &grid, int n, int m) { + if(i < 0 || j < 0 || i >= n || j >= m || grid[i][j] == 1) { + return; + } + + grid[i][j] = 1; + dfs(i + 1, j, grid, n, m); + dfs(i, j + 1, grid, n, m); + dfs(i - 1, j, grid, n, m); + dfs(i, j - 1, grid, n, m); + } + + int closedIsland(vector>& grid) { + int n = grid.size(), m = grid[0].size(); + + for(int i = 0; i < n; i++) { + dfs(i, 0, grid, n, m); + dfs(i, m - 1, grid, n, m); + } + for(int j = 0; j < m; j++) { + dfs(0, j, grid, n, m); + dfs(n - 1, j, grid, n, m); + } + + int count = 0; + for(int i = 0; i < n; i++) { + for(int j = 0; j < m; j++) { + if(grid[i][j] == 0) { + count++; + dfs(i, j, grid, n, m); + } + } + } + + return count; + } +}; \ No newline at end of file diff --git a/CPP/Problems/Leetcode-733-FloodFill.cpp b/CPP/Problems/Leetcode-733-FloodFill.cpp new file mode 100644 index 00000000..91b2372a --- /dev/null +++ b/CPP/Problems/Leetcode-733-FloodFill.cpp @@ -0,0 +1,38 @@ +#include +using namespace std; + +//https://leetcode.com/problems/flood-fill/ + +class Solution { +public: + void dfs(int sr, int sc, int initColor, int newColor, vector>& grid, + vector>& image, int deltaRow[], int deltaCol[]) + { + grid[sr][sc] = newColor; + int n = grid.size(); + int m = grid[0].size(); + + for(int i = 0; i < 4; i++) { + int newRow = sr + deltaRow[i]; + int newCol = sc + deltaCol[i]; + //check if color is same as initial color and not already changed + if(newRow >= 0 && newRow < n && newCol >= 0 && newCol < m + && image[newRow][newCol] == initColor && grid[newRow][newCol] != newColor) { + dfs(newRow, newCol, initColor, newColor, grid, image, deltaRow, deltaCol); + } + } + } + + vector> floodFill(vector>& image, int sr, int sc, int newColor) { + int initColor = image[sr][sc]; + vector> grid = image; + + //up, right, down, left + int deltaRow[] = {-1, 0, +1, 0}; + int deltaCol[] = {0, +1, 0, -1}; + + dfs(sr, sc, initColor, newColor, grid, image, deltaRow, deltaCol); + + return grid; + } +}; \ No newline at end of file diff --git a/CPP/Trees/LowestCommonAncestor.cpp b/CPP/Trees/LowestCommonAncestor.cpp new file mode 100644 index 00000000..9b07ed2c --- /dev/null +++ b/CPP/Trees/LowestCommonAncestor.cpp @@ -0,0 +1,35 @@ +#include +using namespace std; + +struct Node { + int data; + Node *left; + Node *right; + + Node(int val) { + data = val; + left = right = NULL; + } +}; + +class Solution +{ + public: + Node* lca(Node* root ,int n1 ,int n2 ) + { + if(root == NULL || root->data == n1 || root->data == n2) { + return root; + } + + Node* left = lca(root->left, n1, n2); + Node* right = lca(root->right, n1, n2); + + if(left != NULL && right != NULL) { + return root; + } else if (left != NULL) { + return left; + } else { + return right; + } + } +}; \ No newline at end of file diff --git a/CPP/Trees/TargetSum.cpp b/CPP/Trees/TargetSum.cpp new file mode 100644 index 00000000..aad98f5d --- /dev/null +++ b/CPP/Trees/TargetSum.cpp @@ -0,0 +1,29 @@ +#include +using namespace std; + +struct TreeNode { + int val; + TreeNode *left; + TreeNode *right; + TreeNode() : val(0), left(nullptr), right(nullptr) {} + TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} + TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} +}; + +//https://leetcode.com/problems/path-sum/ + +class Solution { +public: + bool hasPathSum(TreeNode* root, int targetSum) { + if(root == NULL) { + return false; + } + + targetSum = targetSum - root->val; + if(targetSum == 0 && root->left == NULL && root->right == NULL) { + return true; + } + + return hasPathSum(root->left, targetSum) || hasPathSum(root->right, targetSum); + } +}; \ No newline at end of file From 43288a49540c669175abaa520ff2139181f78bc2 Mon Sep 17 00:00:00 2001 From: Saket Ahlawat <96969714+Saket109@users.noreply.github.com> Date: Wed, 5 Oct 2022 11:44:03 +0530 Subject: [PATCH 276/448] First file named Introduction.py is created. In this file a python code about introduction to the dynamic programming is written. --- Python/Dynamic_Programming/Introduction.py | 42 ++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 Python/Dynamic_Programming/Introduction.py diff --git a/Python/Dynamic_Programming/Introduction.py b/Python/Dynamic_Programming/Introduction.py new file mode 100644 index 00000000..51735b47 --- /dev/null +++ b/Python/Dynamic_Programming/Introduction.py @@ -0,0 +1,42 @@ +# dynamic programming is like a recursion but here we will only deal with the case the + # subproblem is repeating itself. + + +# Fibonacci solution with the help of DP : + +def fibonacci(n,dp): + if n == 1 or n == 0: # base case + return n + if dp[n-1] == -1: # checking if value is not stored in the dp array + ans1 = fibonacci(n-1,dp) + dp[n-1] = ans1 # Also update the dp array after finding the value. + else: # if stored in the dp array then just use that value from there. + ans1 = dp[n-1] + if dp[n-2] == -1 : + ans2 = fibonacci(n-2,dp) + dp[n-2] = ans2 + else: + ans2 = dp[n-2] + + return ans1 + ans2 + + +# Iterative solution : + +def fibbI(n): + dp = [0 for i in range(n+1)] # creating a dp array within the function + dp[0] = 0 + dp[1] = 1 + i = 2 + while i<=n: + dp[i] = dp[i-1] + dp[i-2] # make a relation between the dp array elements by using the recursive relation. + i+=1 + return dp[n] + + +# main + +n= int(input()) +dp = [-1 for i in range(n+1)] +print(fibonacci(n,dp)) +print(fibbI(n)) From 8ea294c8a245b3380b2af3e39076d357d68bcf55 Mon Sep 17 00:00:00 2001 From: Saket Ahlawat <96969714+Saket109@users.noreply.github.com> Date: Wed, 5 Oct 2022 11:47:20 +0530 Subject: [PATCH 277/448] Count_minimum_steps.py file is created. --- Python/Dynamic_Programming/CountMinSteps.py | 47 +++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 Python/Dynamic_Programming/CountMinSteps.py diff --git a/Python/Dynamic_Programming/CountMinSteps.py b/Python/Dynamic_Programming/CountMinSteps.py new file mode 100644 index 00000000..3ce9404f --- /dev/null +++ b/Python/Dynamic_Programming/CountMinSteps.py @@ -0,0 +1,47 @@ +# QUESTION : Given a positive integer 'n', find and return the minimum number of steps + # that 'n' has to take to get reduced to 1. You can perform + # any one of the following 3 steps: +# 1.) Subtract 1 from it. (n = n - ­1) , +# 2.) If n is divisible by 2, divide by 2.( if n % 2 == 0, then n = n / 2 ) , +# 3.) If n is divisible by 3, divide by 3. (if n % 3 == 0, then n = n / 3 ). + +from sys import stdin +from sys import maxsize as MAX_VALUE + + + +def countMinStepsToOne(n,dp) : + if n == 1: + return 0 + + if dp[n-1] == -1: + ans1 = countMinStepsToOne(n-1,dp) + dp[n-1] = ans1 + else: + ans1 = dp[n-1] + + ans2 = n-1 + + if n%2==0: + if dp[n//2] == -1: + ans2 = countMinStepsToOne(n//2,dp) + dp[n//2] = ans2 + else: + ans2 = dp[n//2] + + ans3 = n-1 + + if n%3 == 0: + if dp[n//3] == -1: + ans3 = countMinStepsToOne(n//3,dp) + dp[n//3] = ans3 + else: + ans3 = dp[n//3] + + return 1 + min(ans1,ans2,ans3) + + +#main +n = int(stdin.readline().rstrip()) +dp = [-1 for i in range(n)] +print(countMinStepsToOne(n,dp)) \ No newline at end of file From 5e8294bc8a2c4325e206fd50484ead5e42618dc2 Mon Sep 17 00:00:00 2001 From: Saket Ahlawat <96969714+Saket109@users.noreply.github.com> Date: Wed, 5 Oct 2022 11:49:13 +0530 Subject: [PATCH 278/448] CountMinSteps_iterative.py file has been created. --- .../CountMinSteps_Iterative.py | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 Python/Dynamic_Programming/CountMinSteps_Iterative.py diff --git a/Python/Dynamic_Programming/CountMinSteps_Iterative.py b/Python/Dynamic_Programming/CountMinSteps_Iterative.py new file mode 100644 index 00000000..30b35469 --- /dev/null +++ b/Python/Dynamic_Programming/CountMinSteps_Iterative.py @@ -0,0 +1,36 @@ +# QUESTION : Given a positive integer 'n', find and return the minimum number of steps + # that 'n' has to take to get reduced to 1. You can perform + # any one of the following 3 steps: +# 1.) Subtract 1 from it. (n = n - ­1) , +# 2.) If n is divisible by 2, divide by 2.( if n % 2 == 0, then n = n / 2 ) , +# 3.) If n is divisible by 3, divide by 3. (if n % 3 == 0, then n = n / 3 ). + +# Now solve this iteratively : + +from sys import stdin +from sys import maxsize as MAX_VALUE + + + +def countMinStepsToOne(n,dp) : + dp[0] = 0 + dp[1] = 0 + i = 2 + while i<=n: + ans1 = dp[i-1] + ans2 = i-1 + if i%2 == 0: + ans2 = dp[i//2] + ans3 = i-1 + if i%3 == 0: + ans3 = dp[i//3] + ans = 1 + min(ans1,ans2,ans3) + dp[i] = ans + i += 1 + return dp[n] + + +#main +n = int(stdin.readline().rstrip()) +dp = [-1 for i in range(n+1)] +print(countMinStepsToOne(n,dp)) From 7078ba41356c0fc857c7338099292f6ff1d8f349 Mon Sep 17 00:00:00 2001 From: Saket Ahlawat <96969714+Saket109@users.noreply.github.com> Date: Wed, 5 Oct 2022 11:51:51 +0530 Subject: [PATCH 279/448] Longest_consecutive_subsequence.py is created. --- .../Longest_consecutive_subsequence.py | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 Python/Dynamic_Programming/Longest_consecutive_subsequence.py diff --git a/Python/Dynamic_Programming/Longest_consecutive_subsequence.py b/Python/Dynamic_Programming/Longest_consecutive_subsequence.py new file mode 100644 index 00000000..a423a44b --- /dev/null +++ b/Python/Dynamic_Programming/Longest_consecutive_subsequence.py @@ -0,0 +1,47 @@ +# QUESTION : Given an array with N elements, you need to find the length of the + # longest subsequence in the given array such that all elements of the subsequence + # are sorted in strictly increasing order. + +from sys import stdin + +def lis(arr,i,n,dp): + if i == n: + return 0,0 + including_subsequence = 1 + + for j in range(i+1,n): + if arr[j]>arr[i]: + if dp[j] == -1: + result = lis(arr,j,n,dp) + dp[j] = result + ans = result[0] + else: + ans = dp[j][0] + + including_subsequence = max(including_subsequence,ans+1) + + if dp[i+1] == -1: + result = lis(arr,i+1,n,dp) + dp[i+1] = result + excluding_subsequence = result[1] + else: + excluding_subsequence = dp[i+1][1] + + overall_max_subsequence = max(excluding_subsequence,including_subsequence) + + return including_subsequence , overall_max_subsequence + + +def takeInput(): + #To take fast I/O + n=int(stdin.readline().strip()) + if n==0: + return list(),0 + arr=list(map(int,stdin.readline().strip().split( ))) + return arr,n + + +arr,n=takeInput() +dp = [-1 for i in range(n+1)] +ans = lis(arr,0,n,dp)[1] +print(ans) \ No newline at end of file From f20d7662cf2a722199ad0be7ed766a0f5202cc17 Mon Sep 17 00:00:00 2001 From: Saket Ahlawat <96969714+Saket109@users.noreply.github.com> Date: Wed, 5 Oct 2022 11:52:38 +0530 Subject: [PATCH 280/448] Longest_subsequence_iterative.py is created. --- .../Longest_subsequence_iterative.py | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 Python/Dynamic_Programming/Longest_subsequence_iterative.py diff --git a/Python/Dynamic_Programming/Longest_subsequence_iterative.py b/Python/Dynamic_Programming/Longest_subsequence_iterative.py new file mode 100644 index 00000000..ab1e5fee --- /dev/null +++ b/Python/Dynamic_Programming/Longest_subsequence_iterative.py @@ -0,0 +1,42 @@ +# QUESTION : Given an array with N elements, you need to find the length of the + # longest subsequence in the given array such that all elements of the subsequence + # are sorted in strictly increasing order. + + +# solve this by iterative method : + + +from sys import stdin + +def lis(arr,n): + dp = [[0 for i in range(2)] for _ in range(n+1)] + + for i in range(n-1,-1,-1): + + including_subsequence = 1 + for j in range(i+1,n): + if arr[j]>arr[i]: + ans = dp[j][0] + including_subsequence = max(including_subsequence,1+ans) + dp[i][0] = including_subsequence + excluding_max = dp[i+1][1] + overall_max = max(including_subsequence,excluding_max) + dp[i][1] = overall_max + + return dp[0][1] + + + +def takeInput(): + #To take fast I/O + n=int(stdin.readline().strip()) + if n==0: + return list(),0 + arr=list(map(int,stdin.readline().strip().split( ))) + return arr,n + + +arr,n=takeInput() + +ans = lis(arr,n) +print(ans) From 88f1112f767594011e4bc0b127e5f7e86d9070b9 Mon Sep 17 00:00:00 2001 From: niharbansal02 Date: Wed, 5 Oct 2022 12:24:41 +0530 Subject: [PATCH 281/448] AVL Trees --- CPP/AVL Trees/AVL_Trees.cpp | 113 ++++++++++++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100755 CPP/AVL Trees/AVL_Trees.cpp diff --git a/CPP/AVL Trees/AVL_Trees.cpp b/CPP/AVL Trees/AVL_Trees.cpp new file mode 100755 index 00000000..2959bc8d --- /dev/null +++ b/CPP/AVL Trees/AVL_Trees.cpp @@ -0,0 +1,113 @@ +#include +#define fastIO ios_base::sync_with_stdio(false); cout.tie(0) +#define endl '\n' +using namespace std; +typedef long long ll; +typedef unsigned long long ull; + +template +struct Node{ + struct Node* lchild; + struct Node* rchild; + int height; + T data; +}; + +Node *root = NULL; + +template +int nodeHeight(Node *p){ + int hl, hr; + hl = p && p -> lchild ? p -> lchild -> height : 0; + hr = p && p -> rchild ? p -> rchild -> height : 0; + + return max(hl + 1, hr + 1); +} + + +template +int balanceFactor(Node *p){ + int hl, hr; + hl = p && p -> lchild ? p -> lchild -> height : 0; + hr = p && p -> rchild ? p -> rchild -> height : 0; + + return hl - hr; +} + +template +Node* LLRotation(Node* p){ + Node *pl, *plr; + pl = p -> lchild; + plr = pl -> rchild; + + pl -> rchild = p; + p -> lchild = plr; + p -> height = nodeHeight(p); + pl -> height = nodeHeight(pl); + // plr's height remains same; + + if(root == p) + root = pl; + + return pl; +} + +template +Node* RRRotation(Node* p){ + return NULL; +} + +template +Node* LRRotation(Node* p){ + return NULL; +} + +template +Node* RLRotation(Node* p){ + return NULL; +} + + +template +Node* insert_bst_recursive(Node* p, T key){ + Node* t; + if(p == NULL){ + t = new Node; + t -> data = key; + t -> height = 1; + t -> lchild = NULL; + t -> rchild = NULL; + return t; + } + if(key < p -> data) + p -> lchild = insert_bst_recursive(p -> lchild, key); + else if(key > p -> data) + p -> rchild = insert_bst_recursive(p -> rchild, key); + + p -> height = nodeHeight(p); + + if(balanceFactor(p) == 2 && balanceFactor(p -> lchild) == 1) + return LLRotation(p); + else if(balanceFactor(p) == 2 && balanceFactor(p -> rchild) == -1) + return LRRotation(p); + else if(balanceFactor(p) == -2 && balanceFactor(p -> lchild) == -1) + return RRRotation(p); + else if(balanceFactor(p) == -2 && balanceFactor(p -> lchild) == 1) + return RLRotation(p); + + + return p; +} + +int main(){ + fastIO; + + root = insert_bst_recursive(root, 10); + // cout << root -> data; + insert_bst_recursive(root, 5); + insert_bst_recursive(root, 2); + + cout << root -> data; + + return 0; +} \ No newline at end of file From 4af7b7299f635e2f41f4fe2c960f96a5ebd8d6cd Mon Sep 17 00:00:00 2001 From: mas-mis <78851865+mas-mis@users.noreply.github.com> Date: Wed, 5 Oct 2022 12:43:07 +0530 Subject: [PATCH 282/448] Create equilibrium_point.cpp --- CPP/arrays/equilibrium_point.cpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 CPP/arrays/equilibrium_point.cpp diff --git a/CPP/arrays/equilibrium_point.cpp b/CPP/arrays/equilibrium_point.cpp new file mode 100644 index 00000000..8d9db3ca --- /dev/null +++ b/CPP/arrays/equilibrium_point.cpp @@ -0,0 +1,22 @@ +class Solution{ + public: + // Function to find equilibrium point in the array. + // a: input array + // n: size of array + int equilibriumPoint(long long a[], int n) { + + long long total_sum = 0, temp_sum = 0; + + for(int i = 0 ; i < n ; i++){ + total_sum += a[i]; + } + + for(int i = 0 ; i < n ; i++){ + if(total_sum - temp_sum - a[i] == temp_sum){ + return i + 1; + } + temp_sum += a[i]; + } + return -1; + } +}; From 6487e22b2420eada26b1dd97db327e1435888a41 Mon Sep 17 00:00:00 2001 From: Sudhanshu Purohit Date: Wed, 5 Oct 2022 12:51:18 +0530 Subject: [PATCH 283/448] linked list implementation added --- .../Linked-List-Implementation.java | 73 +++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 Java/LinkedList/Linked-List-Implementation.java diff --git a/Java/LinkedList/Linked-List-Implementation.java b/Java/LinkedList/Linked-List-Implementation.java new file mode 100644 index 00000000..8329fbf4 --- /dev/null +++ b/Java/LinkedList/Linked-List-Implementation.java @@ -0,0 +1,73 @@ +import java.io.*; + +public class LinkedList { + Node head; + // LINKED LIST NODE + static class Node + { + int data; + Node next; + // Constructor + Node(int d) + { + data = d; + next = null; + } + } + + // Method to insert a new node + public static LinkedList insert(LinkedList list, int data) + { + Node new_node = new Node(data); + // If the Linked List is empty, + // then make the new node as head + if (list.head == null) + { + list.head = new_node; + } + else + { + // Else traverse till the last node + // and insert the new_node there + Node last = list.head; + while (last.next != null) { + last = last.next; + } + // Insert the new_node at last node + last.next = new_node; + } + // Return the list by head + return list; + } + + // Method to print the LinkedList. + public static void printList(LinkedList list) + { + Node currNode = list.head; + System.out.print("LinkedList: "); + // Traverse through the LinkedList + while (currNode != null) { + // Print the data at current node + System.out.print(currNode.data + " "); + // Go to next node + currNode = currNode.next; + } + } + + // Driver code + public static void main(String[] args) + { + LinkedList list = new LinkedList(); + + list = insert(list, 1); + list = insert(list, 2); + list = insert(list, 3); + list = insert(list, 4); + list = insert(list, 5); + list = insert(list, 6); + list = insert(list, 7); + list = insert(list, 8); + + printList(list); + } +} \ No newline at end of file From e23299a1d3e371ca339abc401e7bb8ccceccf938 Mon Sep 17 00:00:00 2001 From: namita27 <60788694+namita27@users.noreply.github.com> Date: Wed, 5 Oct 2022 12:55:19 +0530 Subject: [PATCH 284/448] Checking if the given board is valid sudoku or not --- Hashtable/Checking for a valid sudoku | 97 +++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 Hashtable/Checking for a valid sudoku diff --git a/Hashtable/Checking for a valid sudoku b/Hashtable/Checking for a valid sudoku new file mode 100644 index 00000000..9ecc4612 --- /dev/null +++ b/Hashtable/Checking for a valid sudoku @@ -0,0 +1,97 @@ +import java.util.*; + +class example2 { + public static boolean notInRow(char arr[][], int row) + { + + HashSet st = new HashSet<>(); + + for (int i = 0; i < 9; i++) { + if (st.contains(arr[row][i])) + return false; + + if (arr[row][i] != '.') + st.add(arr[row][i]); + } + return true; + } + + public static boolean notInCol(char arr[][], int col) + { + HashSet st = new HashSet<>(); + + for (int i = 0; i < 9; i++) { + + // If already encountered before, + // return false + if (st.contains(arr[i][col])) + return false; + + // If it is not an empty cell, + // insert value at the current + // cell in the set + if (arr[i][col] != '.') + st.add(arr[i][col]); + } + return true; + } + + public static boolean notInBox(char arr[][], int startRow, int startCol) + { + HashSet st = new HashSet<>(); + + for (int row = 0; row < 3; row++) { + for (int col = 0; col < 3; col++) { + char curr = arr[row + startRow][col + startCol]; + + if (st.contains(curr)) + return false; + + if (curr != '.') + st.add(curr); + } + } + return true; + } + public static boolean isValid(char arr[][], int row, + int col) + { + return notInRow(arr, row) && notInCol(arr, col) + && notInBox(arr, row - row % 3, col - col % 3); + } + + public static boolean isValidConfig(char arr[][], int n) + { + for (int i = 0; i < n; i++) { + for (int j = 0; j < n; j++) { + + // If current row or current column or + // current 3x3 box is not valid, return + // false + if (!isValid(arr, i, j)) + return false; + } + } + return true; + } + + public static void main(String[] args) + { + char[][] board = new char[][] { + { '5', '3', '.', '.', '7', '.', '.', '.', '.' }, + { '6', '.', '.', '1', '9', '5', '.', '.', '.' }, + { '.', '9', '8', '.', '.', '.', '.', '6', '.' }, + { '8', '.', '.', '.', '6', '.', '.', '.', '3' }, + { '4', '.', '.', '8', '.', '3', '.', '.', '1' }, + { '7', '.', '.', '.', '2', '.', '.', '.', '6' }, + { '.', '6', '.', '.', '.', '.', '2', '8', '.' }, + { '.', '.', '.', '4', '1', '9', '.', '.', '5' }, + { '.', '.', '.', '.', '8', '.', '.', '7', '9' } + }; + + // Function call + System.out.println( + (isValidConfig(board, 9) ? "YES" : "NO")); + } +} + From 9496d731ec2d8fc842afe63676d4ca499691ee7d Mon Sep 17 00:00:00 2001 From: Rashika Rawat Date: Wed, 5 Oct 2022 13:06:09 +0530 Subject: [PATCH 285/448] Added Binary Search in Rotated array --- .../binary_search_in_rotated_array.cpp | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 CPP/searching/binary_search_in_rotated_array.cpp diff --git a/CPP/searching/binary_search_in_rotated_array.cpp b/CPP/searching/binary_search_in_rotated_array.cpp new file mode 100644 index 00000000..4a75eb69 --- /dev/null +++ b/CPP/searching/binary_search_in_rotated_array.cpp @@ -0,0 +1,60 @@ +#include +using namespace std; + +int FoundPivot(int arr[],int l,int r){ + if(l<=r){ + int mid = l + (r-l)/2; + + if(midarr[mid+1]) + return mid; + else if(mid > l && arr[mid] < arr[mid-1]) + return mid-1; + + if(arr[mid] >= arr[r]) + return FoundPivot(arr, mid+1, r); + + else + return FoundPivot(arr, l, mid-1); + + } + return -1; +} +int binarySearch(int arr[], int l, int r, int target){ + if(l>r)return -1; + + int mid = l + (r-l)/2; + + if(arr[mid] > target){ + return binarySearch(arr,l, mid-1, target); + } + else if(arr[mid] < target){ + return binarySearch(arr, mid+1, r, target); + } + return mid; +} + +void searchElementInRotatedArray(int arr[], int target,int n){ + int pivot = FoundPivot(arr,0, n-1); + + if(pivot == -1)return; + + int found = binarySearch(arr, 0, pivot, target); + + if(found == -1){ + found = binarySearch(arr, pivot+1, n-1, target); + } + if(found == -1){ + cout<<"NOT PRESENT !!"; + return; + } + cout<<"FOUND AT :"< Date: Wed, 5 Oct 2022 13:07:41 +0530 Subject: [PATCH 286/448] Add files via upload --- Stack/reversing_a_string_using_stack.cpp | 56 +++++++++++++ ...stack_implementation_using_Linked_list.cpp | 67 ++++++++++++++++ Stack/stack_implementation_using_array.c | 79 +++++++++++++++++++ Stack/stack_implementation_using_array.cpp | 69 ++++++++++++++++ 4 files changed, 271 insertions(+) create mode 100644 Stack/reversing_a_string_using_stack.cpp create mode 100644 Stack/stack_implementation_using_Linked_list.cpp create mode 100644 Stack/stack_implementation_using_array.c create mode 100644 Stack/stack_implementation_using_array.cpp diff --git a/Stack/reversing_a_string_using_stack.cpp b/Stack/reversing_a_string_using_stack.cpp new file mode 100644 index 00000000..d11c35d6 --- /dev/null +++ b/Stack/reversing_a_string_using_stack.cpp @@ -0,0 +1,56 @@ +#include +using namespace std; + +/*class Stack{ + private: + char *arr; + int size; + int top=-1; + public: + + Stack(int n){ + size=n; + arr=new char[size]; + } + + void push(string t){ + + if(top==size-1){ + cout<<"stack overflow"<=0;i--){ + cout< s; + + string n =" Saar"; + + for(int i=0;i +using namespace std; + +class Node{ + public: + int data; + Node *next; +}; + +class Stack{ + private: + Node *top; + public: + Stack(){top=NULL;} + + void push(int x); + int pop(); + void display(); +}; + +void Stack::push(int x){ + Node *t=new Node; + if(t==NULL) + cout<<"Stack is Flow"<data=x; + t->next=top; + top=t; + } +} + +int Stack::pop(){ + int x=-1; + if(top==NULL){ + cout<<"Stack is Emplty"<data; + Node *t=top; + top=top->next; + delete t; + + } + return x; +} + +void Stack::display(){ + Node *p=top; + while(p!=NULL){ + cout<data<<" "; + p=p->next; + } + cout< +#include +struct Stack +{ + int size; + int top; + int *S; +}; +void create(struct Stack *st) +{ + printf("Enter Size"); + scanf("%d", &st->size); + st->top = -1; + st->S = (int *)malloc(st->size * sizeof(int)); +} +void Display(struct Stack st) +{ + int i; + for (i = st.top; i >= 0; i--) + printf("%d ", st.S[i]); + printf("\n"); +} +void push(struct Stack *st, int x) +{ + if (st->top == st->size - 1) + printf("Stack overflow\n"); + else + { + st->top++; + st->S[st->top] = x; + } +} +int pop(struct Stack *st) +{ + int x = -1; + if (st->top == -1) + printf("Stack Underflow\n"); + else + { + x = st->S[st->top--]; + } + return x; +} +int peek(struct Stack st, int index) +{ + int x = -1; + if (st.top - index + 1 < 0) + printf("Invalid Index \n"); + x = st.S[st.top - index + 1]; + return x; +} +int isEmpty(struct Stack st) +{ + if (st.top == -1) + return 1; + return 0; +} +int isFull(struct Stack st) +{ + return st.top == st.size - 1; +} +int stackTop(struct Stack st) +{ + if (!isEmpty(st)) + return st.S[st.top]; + return -1; +} +int main() +{ + struct Stack st; + create(&st); + push(&st, 10); + push(&st, 20); + push(&st, 30); + push(&st, 40); + printf("%d \n", peek(st, 2)); + Display(st); + return 0; +} \ No newline at end of file diff --git a/Stack/stack_implementation_using_array.cpp b/Stack/stack_implementation_using_array.cpp new file mode 100644 index 00000000..0fdf5f1b --- /dev/null +++ b/Stack/stack_implementation_using_array.cpp @@ -0,0 +1,69 @@ +#include +using namespace std; + +class stack1 +{ +private: + int size; + int top; + vector s; + +public: + stack1(int n){ + size=n; + s.resize(n); + top=-1; + } + + void display() + { + int i; + for (i = top; i >= 0; i--) + { + cout< Date: Wed, 5 Oct 2022 13:09:48 +0530 Subject: [PATCH 287/448] Radix sort implementation in java --- Java/RadixSort.java | 80 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 Java/RadixSort.java diff --git a/Java/RadixSort.java b/Java/RadixSort.java new file mode 100644 index 00000000..c19a396f --- /dev/null +++ b/Java/RadixSort.java @@ -0,0 +1,80 @@ +// Radix sort Java implementation + +import java.io.*; +import java.util.*; + +class Radix { + + // A utility function to get maximum value in arr[] + static int getMax(int arr[], int n) + { + int mx = arr[0]; + for (int i = 1; i < n; i++) + if (arr[i] > mx) + mx = arr[i]; + return mx; + } + + // A function to do counting sort of arr[] according to + // the digit represented by exp. + static void countSort(int arr[], int n, int exp) + { + int output[] = new int[n]; // output array + int i; + int count[] = new int[10]; + Arrays.fill(count, 0); + + // Store count of occurrences in count[] + for (i = 0; i < n; i++) + count[(arr[i] / exp) % 10]++; + + // Change count[i] so that count[i] now contains + // actual position of this digit in output[] + for (i = 1; i < 10; i++) + count[i] += count[i - 1]; + + // Build the output array + for (i = n - 1; i >= 0; i--) { + output[count[(arr[i] / exp) % 10] - 1] = arr[i]; + count[(arr[i] / exp) % 10]--; + } + + // Copy the output array to arr[], so that arr[] now + // contains sorted numbers according to current + // digit + for (i = 0; i < n; i++) + arr[i] = output[i]; + } + + // The main function to that sorts arr[] of + // size n using Radix Sort + static void radixsort(int arr[], int n) + { + // Find the maximum number to know number of digits + int m = getMax(arr, n); + + // Do counting sort for every digit. Note that + // instead of passing digit number, exp is passed. + // exp is 10^i where i is current digit number + for (int exp = 1; m / exp > 0; exp *= 10) + countSort(arr, n, exp); + } + + // A utility function to print an array + static void print(int arr[], int n) + { + for (int i = 0; i < n; i++) + System.out.print(arr[i] + " "); + } + + // Main driver method + public static void main(String[] args) + { + int arr[] = { 170, 45, 75, 90, 802, 24, 2, 66 }; + int n = arr.length; + + // Function Call + radixsort(arr, n); + print(arr, n); + } +} From ff53d190583bc81a2cacff090d87faea12e3c26f Mon Sep 17 00:00:00 2001 From: ABHISHEK KUMAR DEY Date: Wed, 5 Oct 2022 13:39:33 +0530 Subject: [PATCH 288/448] 1614. Maximum Nesting Depth of the Parentheses Leetcode question solution --- .... Maximum Nesting Depth of the Parentheses | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 Java/Leetcode/1614. Maximum Nesting Depth of the Parentheses diff --git a/Java/Leetcode/1614. Maximum Nesting Depth of the Parentheses b/Java/Leetcode/1614. Maximum Nesting Depth of the Parentheses new file mode 100644 index 00000000..b604552b --- /dev/null +++ b/Java/Leetcode/1614. Maximum Nesting Depth of the Parentheses @@ -0,0 +1,22 @@ +class Solution { + public int maxDepth(String s) { + Stack st=new Stack<>(); + int count=0; + for(int i=0;i Date: Wed, 5 Oct 2022 13:42:15 +0530 Subject: [PATCH 289/448] 198. House Robber Leetcode solution --- Java/Leetcode/198. House Robber | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 Java/Leetcode/198. House Robber diff --git a/Java/Leetcode/198. House Robber b/Java/Leetcode/198. House Robber new file mode 100644 index 00000000..a01a7b0b --- /dev/null +++ b/Java/Leetcode/198. House Robber @@ -0,0 +1,21 @@ +class Solution { + public static int max(int []arr,int idx,int []dp){ + if(idx>=arr.length){ + return 0; + } + if(dp[idx]!=-1){ + return dp[idx]; + } + int a=arr[idx]+max(arr,idx+2,dp); + int b=max(arr,idx+1,dp); + + return dp[idx]=Math.max(a,b); + } + public int rob(int[] nums) { + int []dp=new int[nums.length]; + for(int i=0;i Date: Wed, 5 Oct 2022 13:50:12 +0530 Subject: [PATCH 290/448] Create Dijkstra's Algorithm --- Dijkstra's Algorithm | 94 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 Dijkstra's Algorithm diff --git a/Dijkstra's Algorithm b/Dijkstra's Algorithm new file mode 100644 index 00000000..2725d739 --- /dev/null +++ b/Dijkstra's Algorithm @@ -0,0 +1,94 @@ +#include +using namespace std; + +#define debug(x) cout<<#x<<" is "< +struct Dijkstra { + + int node,edge; + vector< vector< pair > > adj; + vector< T > level; + vector parent; + + Dijkstra(int _node, int _edge) : node(_node), edge(_edge) { + vector(node+1).swap(parent); + vector(node+1, numeric_limits::max()).swap(level); + vector< vector< pair > > (node+1).swap(adj); + } + + void add_edge(int u, int v, T w) { + adj[u].push_back({v,w}); + adj[v].push_back({u,w}); + } + + void traverse(int src) { + + level[src] = 0; + set< pair > s {{0,src}}; + parent[src] = -1; + + while(not s.empty()) { + auto it = *s.begin(); + int cur_node = it.y; + T cur_level = it.x; + s.erase(s.begin()); + + for(auto u : adj[cur_node]) { + if(level[u.x] - u.y > cur_level) { + level[u.x] = cur_level + u.y; + parent[u.x] = cur_node; + s.insert({level[u.x],u.x}); + } + } + } + } + + void print_path(int x) { + + if(level[x] == numeric_limits::max()) { + cout<<"-1\n"; + return; + } + + if(x == -1){ + return; + } + + print_path(parent[x]); + cout<>node>>edge; + + Dijkstra d(node,edge); + + + while(edge--){ + int x,y; + ll w; + cin>>x>>y>>w; + d.add_edge(x,y,w); + } + + d.traverse(1); + d.print_path(node); + + return 0; +} From b785cd03850c799d7d22b5d7e37c0b8835fb32e0 Mon Sep 17 00:00:00 2001 From: swarup-0508 <114948801+swarup-0508@users.noreply.github.com> Date: Wed, 5 Oct 2022 14:25:32 +0530 Subject: [PATCH 291/448] Array Questions Contributed in C++ --- CPP/arrays/CheckifNandItsDoubleExist.cpp | 16 +++++++++++ CPP/arrays/DuplicateZeroes.cpp | 27 ++++++++++++++++++ CPP/arrays/MergedSortedArray.cpp | 28 +++++++++++++++++++ CPP/arrays/RemoveDuplicatefromSortedArray.cpp | 21 ++++++++++++++ CPP/arrays/RemoveElement.cpp | 18 ++++++++++++ CPP/arrays/SortArraybyParity.cpp | 24 ++++++++++++++++ CPP/arrays/ValidMountainArray.cpp | 24 ++++++++++++++++ 7 files changed, 158 insertions(+) create mode 100644 CPP/arrays/CheckifNandItsDoubleExist.cpp create mode 100644 CPP/arrays/DuplicateZeroes.cpp create mode 100644 CPP/arrays/MergedSortedArray.cpp create mode 100644 CPP/arrays/RemoveDuplicatefromSortedArray.cpp create mode 100644 CPP/arrays/RemoveElement.cpp create mode 100644 CPP/arrays/SortArraybyParity.cpp create mode 100644 CPP/arrays/ValidMountainArray.cpp diff --git a/CPP/arrays/CheckifNandItsDoubleExist.cpp b/CPP/arrays/CheckifNandItsDoubleExist.cpp new file mode 100644 index 00000000..6a6d8d09 --- /dev/null +++ b/CPP/arrays/CheckifNandItsDoubleExist.cpp @@ -0,0 +1,16 @@ +class Solution { +public: + bool checkIfExist(vector& arr) { + map map; + for(int i = 0;i& arr,int i,int j) + { + if(j& arr) { + int zeroes=0; + for(int i : arr) + { + if(i==0) + zeroes++; + } + + int i = arr.size()-1, j = arr.size()+zeroes-1; + while(i!=j) + { + insert(arr,i,j--); + if(arr[i]==0) + { + insert(arr,i,j--); + } + i--; + } + } \ No newline at end of file diff --git a/CPP/arrays/MergedSortedArray.cpp b/CPP/arrays/MergedSortedArray.cpp new file mode 100644 index 00000000..5664a0a7 --- /dev/null +++ b/CPP/arrays/MergedSortedArray.cpp @@ -0,0 +1,28 @@ +class Solution { +public: + void merge(vector& nums1, int m, vector& nums2, int n) { + + int i = m-1; + int j = n-1; + int k = m+n-1; + while(i>=0 && j>=0) + { + if(nums1[i]>nums2[j]) + { + nums1[k--]=nums1[i--]; + } + else + { + nums1[k--]=nums2[j--]; + } + } + while(i>=0) + { + nums1[k--]=nums1[i--]; + } + while(j>=0) + { + nums1[k--]=nums2[j--]; + } + } +}; \ No newline at end of file diff --git a/CPP/arrays/RemoveDuplicatefromSortedArray.cpp b/CPP/arrays/RemoveDuplicatefromSortedArray.cpp new file mode 100644 index 00000000..be155857 --- /dev/null +++ b/CPP/arrays/RemoveDuplicatefromSortedArray.cpp @@ -0,0 +1,21 @@ +class Solution { +public: + int removeDuplicates(vector& nums) { + vector v; + vector :: iterator it; + + for(it = nums.begin();it!=nums.end();it++) + { + int ele = *it; + if(find(v.begin(),v.end(),ele)!=v.end()) + { + nums.erase(it); + it--; + } + else + v.push_back(*it); + + } + return nums.size(); + } +}; \ No newline at end of file diff --git a/CPP/arrays/RemoveElement.cpp b/CPP/arrays/RemoveElement.cpp new file mode 100644 index 00000000..56770666 --- /dev/null +++ b/CPP/arrays/RemoveElement.cpp @@ -0,0 +1,18 @@ +class Solution { +public: + int removeElement(vector& nums, int val) { + vector :: iterator it; + it = nums.begin(); + for(int i=0;i sortArrayByParity(vector& nums) { + int n = nums.size(); + if(n==0 || n==1) + {return nums;} + + int i = 0,j=0; + while(i& arr) { + if(arr.size()<3) return false; + + int i = 0; + for(;iarr[i+1]) + { i++; + break; + } + else if(arr[i]==arr[i+1]) return false; + } + if(i<2) return false; + for(;i Date: Wed, 5 Oct 2022 14:26:23 +0530 Subject: [PATCH 292/448] 4-LeetCodeQs --- 1048-LeetCode/1048-longest-string-chain.java | 19 ++++++++ 1048-LeetCode/README.md | 44 +++++++++++++++++++ .../304-range-sum-query-2d-immutable.java | 25 +++++++++++ 304-range-sum-query-2d-immutable/NOTES.md | 1 + 304-range-sum-query-2d-immutable/README.md | 42 ++++++++++++++++++ ...nimum-moves-to-equal-array-elements-ii.cpp | 15 +++++++ ...imum-moves-to-equal-array-elements-ii.java | 11 +++++ .../NOTES.md | 1 + .../README.md | 31 +++++++++++++ .../968-binary-tree-cameras.java | 38 ++++++++++++++++ 968-binary-tree-cameras/NOTES.md | 1 + 968-binary-tree-cameras/README.md | 27 ++++++++++++ 12 files changed, 255 insertions(+) create mode 100644 1048-LeetCode/1048-longest-string-chain.java create mode 100644 1048-LeetCode/README.md create mode 100644 304-range-sum-query-2d-immutable/304-range-sum-query-2d-immutable.java create mode 100644 304-range-sum-query-2d-immutable/NOTES.md create mode 100644 304-range-sum-query-2d-immutable/README.md create mode 100644 462-minimum-moves-to-equal-array-elements-ii/462-minimum-moves-to-equal-array-elements-ii.cpp create mode 100644 462-minimum-moves-to-equal-array-elements-ii/462-minimum-moves-to-equal-array-elements-ii.java create mode 100644 462-minimum-moves-to-equal-array-elements-ii/NOTES.md create mode 100644 462-minimum-moves-to-equal-array-elements-ii/README.md create mode 100644 968-binary-tree-cameras/968-binary-tree-cameras.java create mode 100644 968-binary-tree-cameras/NOTES.md create mode 100644 968-binary-tree-cameras/README.md diff --git a/1048-LeetCode/1048-longest-string-chain.java b/1048-LeetCode/1048-longest-string-chain.java new file mode 100644 index 00000000..824ff6ce --- /dev/null +++ b/1048-LeetCode/1048-longest-string-chain.java @@ -0,0 +1,19 @@ +class Solution { + public int longestStrChain(String[] words) { + Map map = new HashMap<>(); + Arrays.sort(words, (a,b)->a.length() - b.length()); + int res = 0; + for(String word : words) + { + int best = 0; + for(int i=0;i1048. Longest String Chain

Medium


You are given an array of words where each word consists of lowercase English letters.

+ +

wordA is a predecessor of wordB if and only if we can insert exactly one letter anywhere in wordA without changing the order of the other characters to make it equal to wordB.

+ +
    +
  • For example, "abc" is a predecessor of "abac", while "cba" is not a predecessor of "bcad".
  • +
+ +

A word chain is a sequence of words [word1, word2, ..., wordk] with k >= 1, where word1 is a predecessor of word2, word2 is a predecessor of word3, and so on. A single word is trivially a word chain with k == 1.

+ +

Return the length of the longest possible word chain with words chosen from the given list of words.

+ +

 

+

Example 1:

+ +
Input: words = ["a","b","ba","bca","bda","bdca"]
+Output: 4
+Explanation: One of the longest word chains is ["a","ba","bda","bdca"].
+
+ +

Example 2:

+ +
Input: words = ["xbc","pcxbcf","xb","cxbc","pcxbc"]
+Output: 5
+Explanation: All the words can be put in a word chain ["xb", "xbc", "cxbc", "pcxbc", "pcxbcf"].
+
+ +

Example 3:

+ +
Input: words = ["abcd","dbqca"]
+Output: 1
+Explanation: The trivial word chain ["abcd"] is one of the longest word chains.
+["abcd","dbqca"] is not a valid word chain because the ordering of the letters is changed.
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= words.length <= 1000
  • +
  • 1 <= words[i].length <= 16
  • +
  • words[i] only consists of lowercase English letters.
  • +
+
\ No newline at end of file diff --git a/304-range-sum-query-2d-immutable/304-range-sum-query-2d-immutable.java b/304-range-sum-query-2d-immutable/304-range-sum-query-2d-immutable.java new file mode 100644 index 00000000..5435109c --- /dev/null +++ b/304-range-sum-query-2d-immutable/304-range-sum-query-2d-immutable.java @@ -0,0 +1,25 @@ +class NumMatrix { + private int[][] dp; + public NumMatrix(int[][] matrix) { + if(matrix == null || matrix.length == 0 || matrix[0].length == 0) + return; + int m = matrix.length; + int n = matrix[0].length; + + dp = new int[m+1][n+1]; + + for(int i=1;i<=m;i++) + for(int j=1;j<=n;j++) + dp[i][j] = dp[i-1][j] + dp[i][j-1] - dp[i-1][j-1] + matrix[i-1][j-1]; + } + + public int sumRegion(int row1, int col1, int row2, int col2) { + return dp[row2+1][col2+1] - dp[row1][col2+1] - dp[row2+1][col1] + dp[row1][col1]; + } +} + +/** + * Your NumMatrix object will be instantiated and called as such: + * NumMatrix obj = new NumMatrix(matrix); + * int param_1 = obj.sumRegion(row1,col1,row2,col2); + */ \ No newline at end of file diff --git a/304-range-sum-query-2d-immutable/NOTES.md b/304-range-sum-query-2d-immutable/NOTES.md new file mode 100644 index 00000000..38c1374a --- /dev/null +++ b/304-range-sum-query-2d-immutable/NOTES.md @@ -0,0 +1 @@ +​ \ No newline at end of file diff --git a/304-range-sum-query-2d-immutable/README.md b/304-range-sum-query-2d-immutable/README.md new file mode 100644 index 00000000..2e38a29c --- /dev/null +++ b/304-range-sum-query-2d-immutable/README.md @@ -0,0 +1,42 @@ +

304. Range Sum Query 2D - Immutable

Medium


Given a 2D matrix matrix, handle multiple queries of the following type:

+ +
    +
  • Calculate the sum of the elements of matrix inside the rectangle defined by its upper left corner (row1, col1) and lower right corner (row2, col2).
  • +
+ +

Implement the NumMatrix class:

+ +
    +
  • NumMatrix(int[][] matrix) Initializes the object with the integer matrix matrix.
  • +
  • int sumRegion(int row1, int col1, int row2, int col2) Returns the sum of the elements of matrix inside the rectangle defined by its upper left corner (row1, col1) and lower right corner (row2, col2).
  • +
+ +

 

+

Example 1:

+ +
Input
+["NumMatrix", "sumRegion", "sumRegion", "sumRegion"]
+[[[[3, 0, 1, 4, 2], [5, 6, 3, 2, 1], [1, 2, 0, 1, 5], [4, 1, 0, 1, 7], [1, 0, 3, 0, 5]]], [2, 1, 4, 3], [1, 1, 2, 2], [1, 2, 2, 4]]
+Output
+[null, 8, 11, 12]
+
+Explanation
+NumMatrix numMatrix = new NumMatrix([[3, 0, 1, 4, 2], [5, 6, 3, 2, 1], [1, 2, 0, 1, 5], [4, 1, 0, 1, 7], [1, 0, 3, 0, 5]]);
+numMatrix.sumRegion(2, 1, 4, 3); // return 8 (i.e sum of the red rectangle)
+numMatrix.sumRegion(1, 1, 2, 2); // return 11 (i.e sum of the green rectangle)
+numMatrix.sumRegion(1, 2, 2, 4); // return 12 (i.e sum of the blue rectangle)
+
+ +

 

+

Constraints:

+ +
    +
  • m == matrix.length
  • +
  • n == matrix[i].length
  • +
  • 1 <= m, n <= 200
  • +
  • -105 <= matrix[i][j] <= 105
  • +
  • 0 <= row1 <= row2 < m
  • +
  • 0 <= col1 <= col2 < n
  • +
  • At most 104 calls will be made to sumRegion.
  • +
+
\ No newline at end of file diff --git a/462-minimum-moves-to-equal-array-elements-ii/462-minimum-moves-to-equal-array-elements-ii.cpp b/462-minimum-moves-to-equal-array-elements-ii/462-minimum-moves-to-equal-array-elements-ii.cpp new file mode 100644 index 00000000..ee1e0794 --- /dev/null +++ b/462-minimum-moves-to-equal-array-elements-ii/462-minimum-moves-to-equal-array-elements-ii.cpp @@ -0,0 +1,15 @@ +class Solution { +public: + int minMoves2(vector& nums) { + sort(nums.begin(),nums.end()); + int i=0,j=nums.size()-1; + int ans = 0; + while(i462. Minimum Moves to Equal Array Elements II

Medium


Given an integer array nums of size n, return the minimum number of moves required to make all array elements equal.

+ +

In one move, you can increment or decrement an element of the array by 1.

+ +

Test cases are designed so that the answer will fit in a 32-bit integer.

+ +

 

+

Example 1:

+ +
Input: nums = [1,2,3]
+Output: 2
+Explanation:
+Only two moves are needed (remember each move increments or decrements one element):
+[1,2,3]  =>  [2,2,3]  =>  [2,2,2]
+
+ +

Example 2:

+ +
Input: nums = [1,10,2,9]
+Output: 16
+
+ +

 

+

Constraints:

+ +
    +
  • n == nums.length
  • +
  • 1 <= nums.length <= 105
  • +
  • -109 <= nums[i] <= 109
  • +
+
\ No newline at end of file diff --git a/968-binary-tree-cameras/968-binary-tree-cameras.java b/968-binary-tree-cameras/968-binary-tree-cameras.java new file mode 100644 index 00000000..c062e547 --- /dev/null +++ b/968-binary-tree-cameras/968-binary-tree-cameras.java @@ -0,0 +1,38 @@ +/** + * Definition for a binary tree node. + * public class TreeNode { + * int val; + * TreeNode left; + * TreeNode right; + * TreeNode() {} + * TreeNode(int val) { this.val = val; } + * TreeNode(int val, TreeNode left, TreeNode right) { + * this.val = val; + * this.left = left; + * this.right = right; + * } + * } + */ +class Solution { + public int minCameraCover(TreeNode root) { + int ans[] = solve(root); + return Math.min(ans[1],ans[2]); + } + + public int[] solve(TreeNode node) + { + if(node == null) + return new int[]{0,0,9999}; + int l[] = solve(node.left); + int r[] = solve(node.right); + + int ml = Math.min(l[1],l[2]); + int mr = Math.min(r[1],r[2]); + + int d0 = l[1]+r[1]; + int d1 = Math.min(l[2]+mr , r[2]+ml); + int d2 = 1+Math.min(l[0],ml) + Math.min(r[0],mr); + + return new int[]{d0,d1,d2}; + } +} \ No newline at end of file diff --git a/968-binary-tree-cameras/NOTES.md b/968-binary-tree-cameras/NOTES.md new file mode 100644 index 00000000..38c1374a --- /dev/null +++ b/968-binary-tree-cameras/NOTES.md @@ -0,0 +1 @@ +​ \ No newline at end of file diff --git a/968-binary-tree-cameras/README.md b/968-binary-tree-cameras/README.md new file mode 100644 index 00000000..a2846eeb --- /dev/null +++ b/968-binary-tree-cameras/README.md @@ -0,0 +1,27 @@ +

968. Binary Tree Cameras

Hard


You are given the root of a binary tree. We install cameras on the tree nodes where each camera at a node can monitor its parent, itself, and its immediate children.

+ +

Return the minimum number of cameras needed to monitor all nodes of the tree.

+ +

 

+

Example 1:

+ +
Input: root = [0,0,null,0,0]
+Output: 1
+Explanation: One camera is enough to monitor all nodes if placed as shown.
+
+ +

Example 2:

+ +
Input: root = [0,0,null,0,null,0,null,null,0]
+Output: 2
+Explanation: At least two cameras are needed to monitor all nodes of the tree. The above image shows one of the valid configurations of camera placement.
+
+ +

 

+

Constraints:

+ +
    +
  • The number of nodes in the tree is in the range [1, 1000].
  • +
  • Node.val == 0
  • +
+
\ No newline at end of file From 69da0ab12114a0ef0c0739c7610e34c6a3204067 Mon Sep 17 00:00:00 2001 From: GAURISH OJHA <97218624+GaurishIIITNR@users.noreply.github.com> Date: Wed, 5 Oct 2022 14:26:47 +0530 Subject: [PATCH 293/448] Added Leetcode Problerm 154 Find Minimum in Rotated Sorted Array II --- ...nd__Minimum_in_Rotated_Sorted_Array_II.cpp | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 LeetCode Solutions/154_Find__Minimum_in_Rotated_Sorted_Array_II.cpp diff --git a/LeetCode Solutions/154_Find__Minimum_in_Rotated_Sorted_Array_II.cpp b/LeetCode Solutions/154_Find__Minimum_in_Rotated_Sorted_Array_II.cpp new file mode 100644 index 00000000..b13b6fa3 --- /dev/null +++ b/LeetCode Solutions/154_Find__Minimum_in_Rotated_Sorted_Array_II.cpp @@ -0,0 +1,21 @@ +class Solution +{ +public: + int findMin(vector &nums) + { + set st(nums.begin(), nums.end()); + vector v(st.begin(), st.end()); + // predicate nums[x]>=nums[0] /// tttttffffff aim--> finding first f + int low = 0, high = v.size() - 1; + while (low < high) + { + int mid = low + (high - low) / 2; + if (v[mid] >= v[0]) + low = mid + 1; + else + high = mid; + } + // turn low; + return min(v[0], v[low]); + } +}; \ No newline at end of file From 7738e2f9b7d9705b31500a3860a92d0f0a83832e Mon Sep 17 00:00:00 2001 From: Abhishek Mallick Date: Wed, 5 Oct 2022 14:27:44 +0530 Subject: [PATCH 294/448] aa --- 1048-LeetCode/1048-longest-string-chain.java | 19 -------- 1048-LeetCode/README.md | 44 ------------------- .../304-range-sum-query-2d-immutable.java | 25 ----------- 304-range-sum-query-2d-immutable/NOTES.md | 1 - 304-range-sum-query-2d-immutable/README.md | 42 ------------------ ...nimum-moves-to-equal-array-elements-ii.cpp | 15 ------- ...imum-moves-to-equal-array-elements-ii.java | 11 ----- .../NOTES.md | 1 - .../README.md | 31 ------------- .../968-binary-tree-cameras.java | 38 ---------------- 968-binary-tree-cameras/NOTES.md | 1 - 968-binary-tree-cameras/README.md | 27 ------------ 12 files changed, 255 deletions(-) delete mode 100644 1048-LeetCode/1048-longest-string-chain.java delete mode 100644 1048-LeetCode/README.md delete mode 100644 304-range-sum-query-2d-immutable/304-range-sum-query-2d-immutable.java delete mode 100644 304-range-sum-query-2d-immutable/NOTES.md delete mode 100644 304-range-sum-query-2d-immutable/README.md delete mode 100644 462-minimum-moves-to-equal-array-elements-ii/462-minimum-moves-to-equal-array-elements-ii.cpp delete mode 100644 462-minimum-moves-to-equal-array-elements-ii/462-minimum-moves-to-equal-array-elements-ii.java delete mode 100644 462-minimum-moves-to-equal-array-elements-ii/NOTES.md delete mode 100644 462-minimum-moves-to-equal-array-elements-ii/README.md delete mode 100644 968-binary-tree-cameras/968-binary-tree-cameras.java delete mode 100644 968-binary-tree-cameras/NOTES.md delete mode 100644 968-binary-tree-cameras/README.md diff --git a/1048-LeetCode/1048-longest-string-chain.java b/1048-LeetCode/1048-longest-string-chain.java deleted file mode 100644 index 824ff6ce..00000000 --- a/1048-LeetCode/1048-longest-string-chain.java +++ /dev/null @@ -1,19 +0,0 @@ -class Solution { - public int longestStrChain(String[] words) { - Map map = new HashMap<>(); - Arrays.sort(words, (a,b)->a.length() - b.length()); - int res = 0; - for(String word : words) - { - int best = 0; - for(int i=0;i1048. Longest String Chain

Medium


You are given an array of words where each word consists of lowercase English letters.

- -

wordA is a predecessor of wordB if and only if we can insert exactly one letter anywhere in wordA without changing the order of the other characters to make it equal to wordB.

- -
    -
  • For example, "abc" is a predecessor of "abac", while "cba" is not a predecessor of "bcad".
  • -
- -

A word chain is a sequence of words [word1, word2, ..., wordk] with k >= 1, where word1 is a predecessor of word2, word2 is a predecessor of word3, and so on. A single word is trivially a word chain with k == 1.

- -

Return the length of the longest possible word chain with words chosen from the given list of words.

- -

 

-

Example 1:

- -
Input: words = ["a","b","ba","bca","bda","bdca"]
-Output: 4
-Explanation: One of the longest word chains is ["a","ba","bda","bdca"].
-
- -

Example 2:

- -
Input: words = ["xbc","pcxbcf","xb","cxbc","pcxbc"]
-Output: 5
-Explanation: All the words can be put in a word chain ["xb", "xbc", "cxbc", "pcxbc", "pcxbcf"].
-
- -

Example 3:

- -
Input: words = ["abcd","dbqca"]
-Output: 1
-Explanation: The trivial word chain ["abcd"] is one of the longest word chains.
-["abcd","dbqca"] is not a valid word chain because the ordering of the letters is changed.
-
- -

 

-

Constraints:

- -
    -
  • 1 <= words.length <= 1000
  • -
  • 1 <= words[i].length <= 16
  • -
  • words[i] only consists of lowercase English letters.
  • -
-
\ No newline at end of file diff --git a/304-range-sum-query-2d-immutable/304-range-sum-query-2d-immutable.java b/304-range-sum-query-2d-immutable/304-range-sum-query-2d-immutable.java deleted file mode 100644 index 5435109c..00000000 --- a/304-range-sum-query-2d-immutable/304-range-sum-query-2d-immutable.java +++ /dev/null @@ -1,25 +0,0 @@ -class NumMatrix { - private int[][] dp; - public NumMatrix(int[][] matrix) { - if(matrix == null || matrix.length == 0 || matrix[0].length == 0) - return; - int m = matrix.length; - int n = matrix[0].length; - - dp = new int[m+1][n+1]; - - for(int i=1;i<=m;i++) - for(int j=1;j<=n;j++) - dp[i][j] = dp[i-1][j] + dp[i][j-1] - dp[i-1][j-1] + matrix[i-1][j-1]; - } - - public int sumRegion(int row1, int col1, int row2, int col2) { - return dp[row2+1][col2+1] - dp[row1][col2+1] - dp[row2+1][col1] + dp[row1][col1]; - } -} - -/** - * Your NumMatrix object will be instantiated and called as such: - * NumMatrix obj = new NumMatrix(matrix); - * int param_1 = obj.sumRegion(row1,col1,row2,col2); - */ \ No newline at end of file diff --git a/304-range-sum-query-2d-immutable/NOTES.md b/304-range-sum-query-2d-immutable/NOTES.md deleted file mode 100644 index 38c1374a..00000000 --- a/304-range-sum-query-2d-immutable/NOTES.md +++ /dev/null @@ -1 +0,0 @@ -​ \ No newline at end of file diff --git a/304-range-sum-query-2d-immutable/README.md b/304-range-sum-query-2d-immutable/README.md deleted file mode 100644 index 2e38a29c..00000000 --- a/304-range-sum-query-2d-immutable/README.md +++ /dev/null @@ -1,42 +0,0 @@ -

304. Range Sum Query 2D - Immutable

Medium


Given a 2D matrix matrix, handle multiple queries of the following type:

- -
    -
  • Calculate the sum of the elements of matrix inside the rectangle defined by its upper left corner (row1, col1) and lower right corner (row2, col2).
  • -
- -

Implement the NumMatrix class:

- -
    -
  • NumMatrix(int[][] matrix) Initializes the object with the integer matrix matrix.
  • -
  • int sumRegion(int row1, int col1, int row2, int col2) Returns the sum of the elements of matrix inside the rectangle defined by its upper left corner (row1, col1) and lower right corner (row2, col2).
  • -
- -

 

-

Example 1:

- -
Input
-["NumMatrix", "sumRegion", "sumRegion", "sumRegion"]
-[[[[3, 0, 1, 4, 2], [5, 6, 3, 2, 1], [1, 2, 0, 1, 5], [4, 1, 0, 1, 7], [1, 0, 3, 0, 5]]], [2, 1, 4, 3], [1, 1, 2, 2], [1, 2, 2, 4]]
-Output
-[null, 8, 11, 12]
-
-Explanation
-NumMatrix numMatrix = new NumMatrix([[3, 0, 1, 4, 2], [5, 6, 3, 2, 1], [1, 2, 0, 1, 5], [4, 1, 0, 1, 7], [1, 0, 3, 0, 5]]);
-numMatrix.sumRegion(2, 1, 4, 3); // return 8 (i.e sum of the red rectangle)
-numMatrix.sumRegion(1, 1, 2, 2); // return 11 (i.e sum of the green rectangle)
-numMatrix.sumRegion(1, 2, 2, 4); // return 12 (i.e sum of the blue rectangle)
-
- -

 

-

Constraints:

- -
    -
  • m == matrix.length
  • -
  • n == matrix[i].length
  • -
  • 1 <= m, n <= 200
  • -
  • -105 <= matrix[i][j] <= 105
  • -
  • 0 <= row1 <= row2 < m
  • -
  • 0 <= col1 <= col2 < n
  • -
  • At most 104 calls will be made to sumRegion.
  • -
-
\ No newline at end of file diff --git a/462-minimum-moves-to-equal-array-elements-ii/462-minimum-moves-to-equal-array-elements-ii.cpp b/462-minimum-moves-to-equal-array-elements-ii/462-minimum-moves-to-equal-array-elements-ii.cpp deleted file mode 100644 index ee1e0794..00000000 --- a/462-minimum-moves-to-equal-array-elements-ii/462-minimum-moves-to-equal-array-elements-ii.cpp +++ /dev/null @@ -1,15 +0,0 @@ -class Solution { -public: - int minMoves2(vector& nums) { - sort(nums.begin(),nums.end()); - int i=0,j=nums.size()-1; - int ans = 0; - while(i462. Minimum Moves to Equal Array Elements II

Medium


Given an integer array nums of size n, return the minimum number of moves required to make all array elements equal.

- -

In one move, you can increment or decrement an element of the array by 1.

- -

Test cases are designed so that the answer will fit in a 32-bit integer.

- -

 

-

Example 1:

- -
Input: nums = [1,2,3]
-Output: 2
-Explanation:
-Only two moves are needed (remember each move increments or decrements one element):
-[1,2,3]  =>  [2,2,3]  =>  [2,2,2]
-
- -

Example 2:

- -
Input: nums = [1,10,2,9]
-Output: 16
-
- -

 

-

Constraints:

- -
    -
  • n == nums.length
  • -
  • 1 <= nums.length <= 105
  • -
  • -109 <= nums[i] <= 109
  • -
-
\ No newline at end of file diff --git a/968-binary-tree-cameras/968-binary-tree-cameras.java b/968-binary-tree-cameras/968-binary-tree-cameras.java deleted file mode 100644 index c062e547..00000000 --- a/968-binary-tree-cameras/968-binary-tree-cameras.java +++ /dev/null @@ -1,38 +0,0 @@ -/** - * Definition for a binary tree node. - * public class TreeNode { - * int val; - * TreeNode left; - * TreeNode right; - * TreeNode() {} - * TreeNode(int val) { this.val = val; } - * TreeNode(int val, TreeNode left, TreeNode right) { - * this.val = val; - * this.left = left; - * this.right = right; - * } - * } - */ -class Solution { - public int minCameraCover(TreeNode root) { - int ans[] = solve(root); - return Math.min(ans[1],ans[2]); - } - - public int[] solve(TreeNode node) - { - if(node == null) - return new int[]{0,0,9999}; - int l[] = solve(node.left); - int r[] = solve(node.right); - - int ml = Math.min(l[1],l[2]); - int mr = Math.min(r[1],r[2]); - - int d0 = l[1]+r[1]; - int d1 = Math.min(l[2]+mr , r[2]+ml); - int d2 = 1+Math.min(l[0],ml) + Math.min(r[0],mr); - - return new int[]{d0,d1,d2}; - } -} \ No newline at end of file diff --git a/968-binary-tree-cameras/NOTES.md b/968-binary-tree-cameras/NOTES.md deleted file mode 100644 index 38c1374a..00000000 --- a/968-binary-tree-cameras/NOTES.md +++ /dev/null @@ -1 +0,0 @@ -​ \ No newline at end of file diff --git a/968-binary-tree-cameras/README.md b/968-binary-tree-cameras/README.md deleted file mode 100644 index a2846eeb..00000000 --- a/968-binary-tree-cameras/README.md +++ /dev/null @@ -1,27 +0,0 @@ -

968. Binary Tree Cameras

Hard


You are given the root of a binary tree. We install cameras on the tree nodes where each camera at a node can monitor its parent, itself, and its immediate children.

- -

Return the minimum number of cameras needed to monitor all nodes of the tree.

- -

 

-

Example 1:

- -
Input: root = [0,0,null,0,0]
-Output: 1
-Explanation: One camera is enough to monitor all nodes if placed as shown.
-
- -

Example 2:

- -
Input: root = [0,0,null,0,null,0,null,null,0]
-Output: 2
-Explanation: At least two cameras are needed to monitor all nodes of the tree. The above image shows one of the valid configurations of camera placement.
-
- -

 

-

Constraints:

- -
    -
  • The number of nodes in the tree is in the range [1, 1000].
  • -
  • Node.val == 0
  • -
-
\ No newline at end of file From e9801206089277af4b0b533964f9b7fdf5c04ba7 Mon Sep 17 00:00:00 2001 From: Abhishek Mallick Date: Wed, 5 Oct 2022 14:30:17 +0530 Subject: [PATCH 295/448] leet4-Qs --- .../1048-longest-string-chain.java | 19 ++++++++ 1048-longest-string-chain/README.md | 44 +++++++++++++++++ .../1480-running-sum-of-1d-array.cpp | 8 ++++ .../1480-running-sum-of-1d-array.java | 7 +++ 1480-running-sum-of-1d-array/NOTES.md | 1 + 1480-running-sum-of-1d-array/README.md | 30 ++++++++++++ .../1642-furthest-building-you-can-reach.java | 16 +++++++ 1642-furthest-building-you-can-reach/NOTES.md | 1 + .../README.md | 48 +++++++++++++++++++ .../968-binary-tree-cameras.java | 38 +++++++++++++++ 968-binary-tree-cameras/NOTES.md | 1 + 968-binary-tree-cameras/README.md | 27 +++++++++++ 12 files changed, 240 insertions(+) create mode 100644 1048-longest-string-chain/1048-longest-string-chain.java create mode 100644 1048-longest-string-chain/README.md create mode 100644 1480-running-sum-of-1d-array/1480-running-sum-of-1d-array.cpp create mode 100644 1480-running-sum-of-1d-array/1480-running-sum-of-1d-array.java create mode 100644 1480-running-sum-of-1d-array/NOTES.md create mode 100644 1480-running-sum-of-1d-array/README.md create mode 100644 1642-furthest-building-you-can-reach/1642-furthest-building-you-can-reach.java create mode 100644 1642-furthest-building-you-can-reach/NOTES.md create mode 100644 1642-furthest-building-you-can-reach/README.md create mode 100644 968-binary-tree-cameras/968-binary-tree-cameras.java create mode 100644 968-binary-tree-cameras/NOTES.md create mode 100644 968-binary-tree-cameras/README.md diff --git a/1048-longest-string-chain/1048-longest-string-chain.java b/1048-longest-string-chain/1048-longest-string-chain.java new file mode 100644 index 00000000..824ff6ce --- /dev/null +++ b/1048-longest-string-chain/1048-longest-string-chain.java @@ -0,0 +1,19 @@ +class Solution { + public int longestStrChain(String[] words) { + Map map = new HashMap<>(); + Arrays.sort(words, (a,b)->a.length() - b.length()); + int res = 0; + for(String word : words) + { + int best = 0; + for(int i=0;i1048. Longest String Chain

Medium


You are given an array of words where each word consists of lowercase English letters.

+ +

wordA is a predecessor of wordB if and only if we can insert exactly one letter anywhere in wordA without changing the order of the other characters to make it equal to wordB.

+ +
    +
  • For example, "abc" is a predecessor of "abac", while "cba" is not a predecessor of "bcad".
  • +
+ +

A word chain is a sequence of words [word1, word2, ..., wordk] with k >= 1, where word1 is a predecessor of word2, word2 is a predecessor of word3, and so on. A single word is trivially a word chain with k == 1.

+ +

Return the length of the longest possible word chain with words chosen from the given list of words.

+ +

 

+

Example 1:

+ +
Input: words = ["a","b","ba","bca","bda","bdca"]
+Output: 4
+Explanation: One of the longest word chains is ["a","ba","bda","bdca"].
+
+ +

Example 2:

+ +
Input: words = ["xbc","pcxbcf","xb","cxbc","pcxbc"]
+Output: 5
+Explanation: All the words can be put in a word chain ["xb", "xbc", "cxbc", "pcxbc", "pcxbcf"].
+
+ +

Example 3:

+ +
Input: words = ["abcd","dbqca"]
+Output: 1
+Explanation: The trivial word chain ["abcd"] is one of the longest word chains.
+["abcd","dbqca"] is not a valid word chain because the ordering of the letters is changed.
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= words.length <= 1000
  • +
  • 1 <= words[i].length <= 16
  • +
  • words[i] only consists of lowercase English letters.
  • +
+
\ No newline at end of file diff --git a/1480-running-sum-of-1d-array/1480-running-sum-of-1d-array.cpp b/1480-running-sum-of-1d-array/1480-running-sum-of-1d-array.cpp new file mode 100644 index 00000000..717cd505 --- /dev/null +++ b/1480-running-sum-of-1d-array/1480-running-sum-of-1d-array.cpp @@ -0,0 +1,8 @@ +class Solution { +public: + vector runningSum(vector& nums) { + for(int i=1;i1480. Running Sum of 1d Array

Easy


Given an array nums. We define a running sum of an array as runningSum[i] = sum(nums[0]…nums[i]).

+ +

Return the running sum of nums.

+ +

 

+

Example 1:

+ +
Input: nums = [1,2,3,4]
+Output: [1,3,6,10]
+Explanation: Running sum is obtained as follows: [1, 1+2, 1+2+3, 1+2+3+4].
+ +

Example 2:

+ +
Input: nums = [1,1,1,1,1]
+Output: [1,2,3,4,5]
+Explanation: Running sum is obtained as follows: [1, 1+1, 1+1+1, 1+1+1+1, 1+1+1+1+1].
+ +

Example 3:

+ +
Input: nums = [3,1,2,10,1]
+Output: [3,4,6,16,17]
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= nums.length <= 1000
  • +
  • -10^6 <= nums[i] <= 10^6
  • +
\ No newline at end of file diff --git a/1642-furthest-building-you-can-reach/1642-furthest-building-you-can-reach.java b/1642-furthest-building-you-can-reach/1642-furthest-building-you-can-reach.java new file mode 100644 index 00000000..661530e9 --- /dev/null +++ b/1642-furthest-building-you-can-reach/1642-furthest-building-you-can-reach.java @@ -0,0 +1,16 @@ +class Solution { + public int furthestBuilding(int[] heights, int bricks, int ladders) { + PriorityQueue pq = new PriorityQueue<>(); + for(int i=0;i0) + pq.add(distance); + if(pq.size()>ladders) + bricks -= pq.poll(); + if(bricks<0) + return i; + } + return heights.length-1; + } +} \ No newline at end of file diff --git a/1642-furthest-building-you-can-reach/NOTES.md b/1642-furthest-building-you-can-reach/NOTES.md new file mode 100644 index 00000000..38c1374a --- /dev/null +++ b/1642-furthest-building-you-can-reach/NOTES.md @@ -0,0 +1 @@ +​ \ No newline at end of file diff --git a/1642-furthest-building-you-can-reach/README.md b/1642-furthest-building-you-can-reach/README.md new file mode 100644 index 00000000..f99783e6 --- /dev/null +++ b/1642-furthest-building-you-can-reach/README.md @@ -0,0 +1,48 @@ +

1642. Furthest Building You Can Reach

Medium


You are given an integer array heights representing the heights of buildings, some bricks, and some ladders.

+ +

You start your journey from building 0 and move to the next building by possibly using bricks or ladders.

+ +

While moving from building i to building i+1 (0-indexed),

+ +
    +
  • If the current building's height is greater than or equal to the next building's height, you do not need a ladder or bricks.
  • +
  • If the current building's height is less than the next building's height, you can either use one ladder or (h[i+1] - h[i]) bricks.
  • +
+ +

Return the furthest building index (0-indexed) you can reach if you use the given ladders and bricks optimally.

+ +

 

+

Example 1:

+ +
Input: heights = [4,2,7,6,9,14,12], bricks = 5, ladders = 1
+Output: 4
+Explanation: Starting at building 0, you can follow these steps:
+- Go to building 1 without using ladders nor bricks since 4 >= 2.
+- Go to building 2 using 5 bricks. You must use either bricks or ladders because 2 < 7.
+- Go to building 3 without using ladders nor bricks since 7 >= 6.
+- Go to building 4 using your only ladder. You must use either bricks or ladders because 6 < 9.
+It is impossible to go beyond building 4 because you do not have any more bricks or ladders.
+
+ +

Example 2:

+ +
Input: heights = [4,12,2,7,3,18,20,3,19], bricks = 10, ladders = 2
+Output: 7
+
+ +

Example 3:

+ +
Input: heights = [14,3,19,3], bricks = 17, ladders = 0
+Output: 3
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= heights.length <= 105
  • +
  • 1 <= heights[i] <= 106
  • +
  • 0 <= bricks <= 109
  • +
  • 0 <= ladders <= heights.length
  • +
+
\ No newline at end of file diff --git a/968-binary-tree-cameras/968-binary-tree-cameras.java b/968-binary-tree-cameras/968-binary-tree-cameras.java new file mode 100644 index 00000000..c062e547 --- /dev/null +++ b/968-binary-tree-cameras/968-binary-tree-cameras.java @@ -0,0 +1,38 @@ +/** + * Definition for a binary tree node. + * public class TreeNode { + * int val; + * TreeNode left; + * TreeNode right; + * TreeNode() {} + * TreeNode(int val) { this.val = val; } + * TreeNode(int val, TreeNode left, TreeNode right) { + * this.val = val; + * this.left = left; + * this.right = right; + * } + * } + */ +class Solution { + public int minCameraCover(TreeNode root) { + int ans[] = solve(root); + return Math.min(ans[1],ans[2]); + } + + public int[] solve(TreeNode node) + { + if(node == null) + return new int[]{0,0,9999}; + int l[] = solve(node.left); + int r[] = solve(node.right); + + int ml = Math.min(l[1],l[2]); + int mr = Math.min(r[1],r[2]); + + int d0 = l[1]+r[1]; + int d1 = Math.min(l[2]+mr , r[2]+ml); + int d2 = 1+Math.min(l[0],ml) + Math.min(r[0],mr); + + return new int[]{d0,d1,d2}; + } +} \ No newline at end of file diff --git a/968-binary-tree-cameras/NOTES.md b/968-binary-tree-cameras/NOTES.md new file mode 100644 index 00000000..38c1374a --- /dev/null +++ b/968-binary-tree-cameras/NOTES.md @@ -0,0 +1 @@ +​ \ No newline at end of file diff --git a/968-binary-tree-cameras/README.md b/968-binary-tree-cameras/README.md new file mode 100644 index 00000000..a2846eeb --- /dev/null +++ b/968-binary-tree-cameras/README.md @@ -0,0 +1,27 @@ +

968. Binary Tree Cameras

Hard


You are given the root of a binary tree. We install cameras on the tree nodes where each camera at a node can monitor its parent, itself, and its immediate children.

+ +

Return the minimum number of cameras needed to monitor all nodes of the tree.

+ +

 

+

Example 1:

+ +
Input: root = [0,0,null,0,0]
+Output: 1
+Explanation: One camera is enough to monitor all nodes if placed as shown.
+
+ +

Example 2:

+ +
Input: root = [0,0,null,0,null,0,null,null,0]
+Output: 2
+Explanation: At least two cameras are needed to monitor all nodes of the tree. The above image shows one of the valid configurations of camera placement.
+
+ +

 

+

Constraints:

+ +
    +
  • The number of nodes in the tree is in the range [1, 1000].
  • +
  • Node.val == 0
  • +
+
\ No newline at end of file From ea05ef113ba50cfc0be14f77ec1b32e24f2b9329 Mon Sep 17 00:00:00 2001 From: Gantavya Malviya <39916680+gantavyamalviya@users.noreply.github.com> Date: Wed, 5 Oct 2022 14:43:02 +0530 Subject: [PATCH 296/448] Update README.md --- README.md | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/README.md b/README.md index 2f41a3e5..d3e848a4 100644 --- a/README.md +++ b/README.md @@ -26,13 +26,7 @@ Steps to contribute in this repository Gantavya Malviya
- - Adarsh -
- Adarsh jaiswal -
-
From 8323b199a09aa9ef32c68fc99f2bb5c6d02afb55 Mon Sep 17 00:00:00 2001 From: Aratrik-02 <75318952+Aratrik-02@users.noreply.github.com> Date: Wed, 5 Oct 2022 14:47:51 +0530 Subject: [PATCH 297/448] Added a code on binary trees in C++ --- Trees/addOneRowToTree.cpp | 62 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 Trees/addOneRowToTree.cpp diff --git a/Trees/addOneRowToTree.cpp b/Trees/addOneRowToTree.cpp new file mode 100644 index 00000000..9ac44976 --- /dev/null +++ b/Trees/addOneRowToTree.cpp @@ -0,0 +1,62 @@ +/* + +623. Add One Row to Tree +Problem Link: https://leetcode.com/problems/add-one-row-to-tree/description/ +Given the root of a binary tree and two integers val and depth, add a row of nodes with value val at the given depth depth. + +Note that the root node is at depth 1. + +The adding rule is: + +Given the integer depth, for each not null tree node cur at the depth depth - 1, create two tree nodes with value val as cur's left subtree root and right subtree root. +cur's original left subtree should be the left subtree of the new left subtree root. +cur's original right subtree should be the right subtree of the new right subtree root. +If depth == 1 that means there is no depth depth - 1 at all, then create a tree node with value val as the new root of the whole original tree, and the original tree is the new root's left subtree. + +Input: root = [4,2,6,3,1,5], val = 1, depth = 2 +Output: [4,1,1,2,null,null,6,3,1,5] + +Input: root = [4,2,null,3,1], val = 1, depth = 3 +Output: [4,2,null,1,1,3,null,null,1] + +*/ + +/** + * Definition for a binary tree node. + * struct TreeNode { + * int val; + * TreeNode *left; + * TreeNode *right; + * TreeNode() : val(0), left(nullptr), right(nullptr) {} + * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} + * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} + * }; + */ +class Solution { +public: + void dfs(TreeNode* root, int val, int depth,int k){ + if(!root)return; + if(depth==k+1){ + TreeNode *templ=new TreeNode(val); + TreeNode *l=root->left; + root->left=templ; + templ->left=l; + TreeNode *tempr=new TreeNode(val); + TreeNode *r=root->right; + root->right=tempr; + tempr->right=r; + } + dfs(root->left,val,depth,k+1); + dfs(root->right,val,depth,k+1); + return; + } + TreeNode* addOneRow(TreeNode* root, int val, int depth) { + if(depth==1){ + TreeNode *temp=new TreeNode(val); + temp->left=root; + return temp; + } + dfs(root,val,depth,1); + return root; + } +}; \ No newline at end of file From 5e205817a8ae7a576fc6bc94faf3f10559a7eb81 Mon Sep 17 00:00:00 2001 From: GAURISH OJHA <97218624+GaurishIIITNR@users.noreply.github.com> Date: Wed, 5 Oct 2022 14:50:22 +0530 Subject: [PATCH 298/448] Added Leetcode Problem 240. Problem : Search a 2D Matrix II URL : https://leetcode.com/problems/search-a-2d-matrix-ii/ --- LeetCode Solutions/Search_a_2D_Matrix_II.cpp | 22 ++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 LeetCode Solutions/Search_a_2D_Matrix_II.cpp diff --git a/LeetCode Solutions/Search_a_2D_Matrix_II.cpp b/LeetCode Solutions/Search_a_2D_Matrix_II.cpp new file mode 100644 index 00000000..2ef54497 --- /dev/null +++ b/LeetCode Solutions/Search_a_2D_Matrix_II.cpp @@ -0,0 +1,22 @@ +class Solution +{ +public: + bool searchMatrix(vector> &matrix, int target) + { + int j = matrix[0].size() - 1, i = 0; + while (1) + { + if (j < 0 || i > matrix.size() - 1) + return 0; + if (matrix[i][j] > target) + j--; + else if (matrix[i][j] < target) + i++; + else + return 1; + } + if (matrix[i][j] == target) + return 1; + return 0; + } +}; \ No newline at end of file From 92cc2e567c4b79722095cec7d77c4a4e9422956e Mon Sep 17 00:00:00 2001 From: Auro Saswat Raj Date: Wed, 5 Oct 2022 15:20:54 +0530 Subject: [PATCH 299/448] Add files via upload --- Arrays/32_Leaders_in_Array.cpp | 57 ++++++++++++++++++++++++ Arrays/33_Sort_0_1_2.cpp | 81 ++++++++++++++++++++++++++++++++++ 2 files changed, 138 insertions(+) create mode 100644 Arrays/32_Leaders_in_Array.cpp create mode 100644 Arrays/33_Sort_0_1_2.cpp diff --git a/Arrays/32_Leaders_in_Array.cpp b/Arrays/32_Leaders_in_Array.cpp new file mode 100644 index 00000000..9a4a9c9f --- /dev/null +++ b/Arrays/32_Leaders_in_Array.cpp @@ -0,0 +1,57 @@ +/* +Given an integer array A of size n. +Find and print all the leaders present in the input array. +An array element A[i] is called Leader, if all the elements following it (i.e. present at its right) are less than or equal to A[i]. +Print all the leader elements separated by space and in the same order they are present in the input array. + +Input Format : +Line 1 : Integer n, size of array +Line 2 : Array A elements (separated by space) +Output Format : leaders of array (separated by space) + +Constraints : 1 <= n <= 10^6 +Sample Input 1 : 6 3 12 34 2 0 -1 +Sample Output 1 : 34 2 0 -1 + +Sample Input 2 : 5 13 17 5 4 6 +Sample Output 2 : 17 6 +*/ +#include +#include +using namespace std; +void Leaders(int* arr,int len) +{ + for(int i=0;i=arr[j])){ + isbig=false; + break; + } + // if they are arranged as they should be as in the case of leaders then change the flag to true + // Or you can leave the flag unchanged as it is ....! + // In the below codes are added for better understanding and Workflow. + else{ + isbig=true; + continue; + } + } + if(isbig){ + // Print the element for Leaders..! + cout<>len; + int *arr = new int[len + 1]; + + for(int i=0;i>arr[i]; + } + Leaders(arr,len); +} \ No newline at end of file diff --git a/Arrays/33_Sort_0_1_2.cpp b/Arrays/33_Sort_0_1_2.cpp new file mode 100644 index 00000000..0a75829c --- /dev/null +++ b/Arrays/33_Sort_0_1_2.cpp @@ -0,0 +1,81 @@ +/* + +You are given an integer array/list(ARR) of size N. +It contains only 0s, 1s and 2s. +Write a solution to sort this array/list in a 'single scan'. +'Single Scan' refers to iterating over the array/list just once or to put it in other words, you will be visiting each element in the array/list just once. +Note: You need to change in the given array/list itself. +Hence, no need to return or print anything. + +Input format : The first line contains an Integer 't' which denotes the number of test cases or queries to be run. +Then the test cases follow. + +First line of each test case or query contains an integer 'N' representing the size of the array/list. + +Second line contains 'N' single space separated integers(all 0s, 1s and 2s) representing the elements in the array/list. Output Format : For each test case, print the sorted array/list elements in a row separated by a single space. + +Output for every test case will be printed in a separate line. +Constraints : +1 <= t <= 10^2 0 <= N <= 10^5 +Time Limit: 1 sec + +Sample Input 1: 1 7 0 1 2 0 2 0 1 +Sample Output 1: 0 0 0 1 1 2 2 + +Sample Input 2: 2 5 2 2 0 1 1 7 0 1 2 0 1 2 0 +Sample Output 2: 0 1 1 2 2 0 0 0 1 1 2 2 + +*/ +#include +using namespace std; + +void simplifiedsort012(int *arr, int n){ + + int i=0,nz=0,nt=n-1; + while(i>n; + int *arr=new int[n]; + cout<<"Enter Elements in the Array "<>arr[i]; + } + simplifiedsort012(arr,n); + return 0; +} + +/* +Explanation +👉🏼Take two variables as starting(nz) and ending(nt) depicting position of 0's and 2's to be swapped respectively + +👉🏼Initialize nz as Starting Index i.e 0 and increment it after every swap + +👉🏼Initialize nt as Ending Index i.e Size-1 and decrement it after every swap + +Special Attention should be given to the following points :) +✨Swap 0's and increment nz & i + +✨Swap 2's and increment nt but not i (ignore the updation of expression) +*/ \ No newline at end of file From 9ba19939f575dccc42e52909cfa72e6982d94ae0 Mon Sep 17 00:00:00 2001 From: sanu-020 <114324131+sanu-020@users.noreply.github.com> Date: Wed, 5 Oct 2022 15:52:38 +0530 Subject: [PATCH 300/448] Some Tree programs added --- Trees/BST.C | 173 +++++++++++++++++++++++++++ Trees/Binary_tree_Array.c | 93 +++++++++++++++ Trees/avltree.c | 228 ++++++++++++++++++++++++++++++++++++ Trees/binarytreetraversal.c | 90 ++++++++++++++ 4 files changed, 584 insertions(+) create mode 100644 Trees/BST.C create mode 100644 Trees/Binary_tree_Array.c create mode 100644 Trees/avltree.c create mode 100644 Trees/binarytreetraversal.c diff --git a/Trees/BST.C b/Trees/BST.C new file mode 100644 index 00000000..4a590a85 --- /dev/null +++ b/Trees/BST.C @@ -0,0 +1,173 @@ +#include +#include + +struct Node +{ + struct Node *lchild; + int data; + struct Node *rchild; +} *root = NULL; + +void Insert(int key) +{ + struct Node *t = root; + struct Node *r, *p; + + if (root == NULL) + { + p = (struct Node *)malloc(sizeof(struct Node)); + p->data = key; + p->lchild = p->rchild = NULL; + root = p; + return; + } + while (t != NULL) + { + r = t; + if (key < t->data) + t = t->lchild; + else if (key > t->data) + t = t->rchild; + else + return; + } + p = (struct Node *)malloc(sizeof(struct Node)); + p->data = key; + p->lchild = p->rchild = NULL; + + if (key < r->data) + r->lchild = p; + else + r->rchild = p; +} + +void Inorder(struct Node *p) +{ + if (p) + { + Inorder(p->lchild); + printf("%d ", p->data); + Inorder(p->rchild); + } +} + +struct Node *Search(int key) +{ + struct Node *t = root; + + while (t != NULL) + { + if (key == t->data) + return t; + else if (key < t->data) + t = t->lchild; + else + t = t->rchild; + } + return NULL; +} + +struct Node *RInsert(struct Node *p, int key) +{ + struct Node *t = NULL; + if (p == NULL) + { + t = (struct Node *)malloc(sizeof(struct Node)); + t->data = key; + t->lchild = t->rchild = NULL; + return t; + } + if (key < p->data) + p->lchild = RInsert(p->lchild, key); + else if (key > p->data) + p->rchild = RInsert(p->rchild, key); + return p; +} + +int Height(struct Node *p) +{ + int x, y; + if (p == NULL) + return 0; + x = Height(p->lchild); + y = Height(p->rchild); + return x > y ? x + 1 : y + 1; +} + +struct Node *InPre(struct Node *p) +{ + while (p && p->rchild != NULL) + p = p->rchild; + return p; +} + +struct Node *InSucc(struct Node *p) +{ + while (p && p->lchild != NULL) + p = p->lchild; + return p; +} + +struct Node *Delete(struct Node *p, int key) +{ + struct Node *q = NULL; + if (p == NULL) + return NULL; + if (p->lchild == NULL && p->rchild == NULL) + { + if (p == root) + root = NULL; + free(p); + return NULL; + } + + if (key < p->data) + p->lchild = Delete(p->lchild, key); + else if (key > p->data) + p->rchild = Delete(p->rchild, key); + else + { + if (Height(p->lchild) > Height(p->rchild)) + { + q = InPre(p->lchild); + p->data = q->data; + p->lchild = Delete(p->lchild, q->data); + } + else + { + q = InSucc(p->rchild); + p->data = q->data; + p->rchild = Delete(p->rchild, q->data); + } + } + return p; +} + +int main() +{ + struct Node *temp; + + root = RInsert(root, 10); + RInsert(root, 10); + RInsert(root, 40); + RInsert(root, 20); + RInsert(root, 30); + RInsert(root, 25); + RInsert(root, 35); + RInsert(root, 55); + + Delete(root, 30); + + Inorder(root); + printf("\n"); + + temp = Search(20); + if (temp != NULL) + printf("Element %d is found\n", temp->data); + else + { + printf("Element is not found\n"); + } + + return 0; +} \ No newline at end of file diff --git a/Trees/Binary_tree_Array.c b/Trees/Binary_tree_Array.c new file mode 100644 index 00000000..f7573320 --- /dev/null +++ b/Trees/Binary_tree_Array.c @@ -0,0 +1,93 @@ +#include + + +int complete_node = 15; + +char tree[] = {'\0', 'D', 'A', 'F', 'E', 'B', 'R', 'T', 'G', 'Q', '\0', '\0', 'V', '\0', 'J', 'L'}; + +// funtion to get parent +int get_parent(int index) +{ + if(tree[index]!='\0' && index>1 && index<=complete_node) //root has no parent + return index/2; + return -1; +} + +int get_right_child(int index) +{ + // node is not null + // and the result must lie within the number of nodes for a complete binary tree + if(tree[index]!='\0' && ((2*index)+1)<=complete_node) + return (2*index)+1; + // right child doesn't exist + return -1; +} + +int get_left_child(int index) +{ + // node is not null + // and the result must lie within the number of nodes for a complete binary tree + if(tree[index]!='\0' && (2*index)<=complete_node) + return 2*index; + // left child doesn't exist + return -1; +} + +void preorder(int index) +{ + // checking for valid index and null node + if(index>0 && tree[index]!='\0') + { + printf(" %c ",tree[index]); // visiting root + preorder(get_left_child(index)); //visiting left subtree + preorder(get_right_child(index)); //visiting right subtree + } +} + +void postorder(int index) +{ + // checking for valid index and null node + if(index>0 && tree[index]!='\0') + { + postorder(get_left_child(index)); //visiting left subtree + postorder(get_right_child(index)); //visiting right subtree + printf(" %c ",tree[index]); //visiting root + } +} + +void inorder(int index) +{ + // checking for valid index and null node + if(index>0 && tree[index]!='\0') + { + inorder(get_left_child(index)); //visiting left subtree + printf(" %c ",tree[index]); //visiting root + inorder(get_right_child(index)); // visiting right subtree + } +} + +int is_leaf(int index) +{ + // to check of the indices of the left and right children are valid or not + if(!get_left_child(index) && !get_right_child(index)) + return 1; + // to check if both the children of the node are null or not + if(tree[get_left_child(index)]=='\0' && tree[get_right_child(index)]=='\0') + return 1; + return 0; // node is not a leaf +} + +int get_max(int a, int b) +{ + return (a>b) ? a : b; +} + +int get_height(int index) +{ + // if the node is a leaf the the height will be 0 + // the height will be 0 also for the invalid cases + if(tree[index]=='\0' || index<=0 || is_leaf(index)) + return 0; + // height of node i is 1+ maximum among the height of left subtree and the height of right subtree + return(get_max(get_height(get_left_child(index)), get_height(get_right_child(index)))+1); +} diff --git a/Trees/avltree.c b/Trees/avltree.c new file mode 100644 index 00000000..8bbaab84 --- /dev/null +++ b/Trees/avltree.c @@ -0,0 +1,228 @@ +#include +#include + +// Create Node +struct Node +{ + int key; + struct Node *left; + struct Node *right; + int height; +}; + +int max(int a, int b); + +// Calculate height +int height(struct Node *N) +{ + if (N == NULL) + return 0; + return N->height; +} + +int max(int a, int b) +{ + return (a > b) ? a : b; +} + +// Create a node +struct Node *newNode(int key) +{ + struct Node *node = (struct Node *) + malloc(sizeof(struct Node)); + node->key = key; + node->left = NULL; + node->right = NULL; + node->height = 1; + return (node); +} + +// Right rotate +struct Node *rightRotate(struct Node *y) +{ + struct Node *x = y->left; + struct Node *T2 = x->right; + + x->right = y; + y->left = T2; + + y->height = max(height(y->left), height(y->right)) + 1; + x->height = max(height(x->left), height(x->right)) + 1; + + return x; +} + +// Left rotate +struct Node *leftRotate(struct Node *x) +{ + struct Node *y = x->right; + struct Node *T2 = y->left; + + y->left = x; + x->right = T2; + + x->height = max(height(x->left), height(x->right)) + 1; + y->height = max(height(y->left), height(y->right)) + 1; + + return y; +} + +// Get the balance factor +int getBalance(struct Node *N) +{ + if (N == NULL) + return 0; + return height(N->left) - height(N->right); +} + +// Insert node +struct Node *insertNode(struct Node *node, int key) +{ + // Find the correct position to insertNode the node and insertNode it + if (node == NULL) + return (newNode(key)); + + if (key < node->key) + node->left = insertNode(node->left, key); + else if (key > node->key) + node->right = insertNode(node->right, key); + else + return node; + + // Update the balance factor of each node and + // Balance the tree + node->height = 1 + max(height(node->left), + height(node->right)); + + int balance = getBalance(node); + if (balance > 1 && key < node->left->key) + return rightRotate(node); + + if (balance < -1 && key > node->right->key) + return leftRotate(node); + + if (balance > 1 && key > node->left->key) + { + node->left = leftRotate(node->left); + return rightRotate(node); + } + + if (balance < -1 && key < node->right->key) + { + node->right = rightRotate(node->right); + return leftRotate(node); + } + + return node; +} + +struct Node *minValueNode(struct Node *node) +{ + struct Node *current = node; + + while (current->left != NULL) + current = current->left; + + return current; +} + +// Delete a nodes +struct Node *deleteNode(struct Node *root, int key) +{ + // Find the node and delete it + if (root == NULL) + return root; + + if (key < root->key) + root->left = deleteNode(root->left, key); + + else if (key > root->key) + root->right = deleteNode(root->right, key); + + else + { + if ((root->left == NULL) || (root->right == NULL)) + { + struct Node *temp = root->left ? root->left : root->right; + + if (temp == NULL) + { + temp = root; + root = NULL; + } + else + *root = *temp; + free(temp); + } + else + { + struct Node *temp = minValueNode(root->right); + + root->key = temp->key; + + root->right = deleteNode(root->right, temp->key); + } + } + + if (root == NULL) + return root; + + // Update the balance factor of each node and + // balance the tree + root->height = 1 + max(height(root->left), + height(root->right)); + + int balance = getBalance(root); + if (balance > 1 && getBalance(root->left) >= 0) + return rightRotate(root); + + if (balance > 1 && getBalance(root->left) < 0) + { + root->left = leftRotate(root->left); + return rightRotate(root); + } + + if (balance < -1 && getBalance(root->right) <= 0) + return leftRotate(root); + + if (balance < -1 && getBalance(root->right) > 0) + { + root->right = rightRotate(root->right); + return leftRotate(root); + } + + return root; +} + +// Print the tree +void printPreOrder(struct Node *root) +{ + if (root != NULL) + { + printf("%d ", root->key); + printPreOrder(root->left); + printPreOrder(root->right); + } +} + +int main() +{ + struct Node *root = NULL; + + root = insertNode(root, 2); + root = insertNode(root, 1); + root = insertNode(root, 7); + root = insertNode(root, 4); + root = insertNode(root, 5); + root = insertNode(root, 3); + root = insertNode(root, 8); + + printPreOrder(root); + + root = deleteNode(root, 3); + + printf("\nAfter deletion: "); + printPreOrder(root); + + return 0; +} \ No newline at end of file diff --git a/Trees/binarytreetraversal.c b/Trees/binarytreetraversal.c new file mode 100644 index 00000000..f6110420 --- /dev/null +++ b/Trees/binarytreetraversal.c @@ -0,0 +1,90 @@ + #include + #include + + struct tnode { + int data; + struct tnode *left, *right; + }; + + struct tnode *root = NULL; + + + struct tnode * createNode(int data) { + struct tnode *newNode; + newNode = (struct tnode *) malloc(sizeof(struct tnode)); + newNode->data = data; + newNode->left = NULL; + newNode->right = NULL; + return (newNode); + } + + + void insertion(struct tnode **node, int data) { + if (!*node) { + *node = createNode(data); + } else if (data < (*node)->data) { + insertion(&(*node)->left, data); + } else if (data > (*node)->data) { + insertion(&(*node)->right, data); + } + } + void postOrder(struct tnode *node) { + if (node) { + postOrder(node->left); + postOrder(node->right); + printf("%d ", node->data); + } + return; + } + + + void preOrder(struct tnode *node) { + if (node) { + printf("%d ", node->data); + preOrder(node->left); + preOrder(node->right); + } + return; + } + + + void inOrder(struct tnode *node) { + if (node) { + inOrder(node->left); + printf("%d ", node->data); + inOrder(node->right); + } + return; + } + + int main() { + int data, ch; + while (1) { + printf("\n1. Insertion\n2. Pre-order\n"); + printf("3. Post-order\n4. In-order\n"); + printf("5. Exit\nEnter your choice:"); + scanf("%d", &ch); + switch (ch) { + case 1: + printf("Enter ur data:"); + scanf("%d", &data); + insertion(&root, data); + break; + case 2: + preOrder(root); + break; + case 3: + postOrder(root); + break; + case 4: + inOrder(root); + break; + case 5: + exit(0); + default: + printf(" wrong option\n"); + break; + } + } + return 0; + } \ No newline at end of file From a952c77ababa8cff81db0a40fd208382d3e28702 Mon Sep 17 00:00:00 2001 From: Dhiraj Date: Wed, 5 Oct 2022 15:56:25 +0530 Subject: [PATCH 301/448] minimum path sum DP --- .../minimumPathFallingSum.java | 122 ++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 Dynamic Programming/minimumPathFallingSum.java diff --git a/Dynamic Programming/minimumPathFallingSum.java b/Dynamic Programming/minimumPathFallingSum.java new file mode 100644 index 00000000..c038eda0 --- /dev/null +++ b/Dynamic Programming/minimumPathFallingSum.java @@ -0,0 +1,122 @@ +/*https://leetcode.com/problems/minimum-falling-path-sum/submissions/ + * + */ +// minimum hai bhai +private class recursion { + + public int minFallingPathSum(int[][] matrix) { + int n = matrix.length; + int m = matrix[0].length; + + int ans = Integer.MAX_VALUE; + + for (int j = 0; j < m; j++) { + ans = Math.min(ans, recur(n - 1, j, matrix)); + } + return ans; + } + + private int recur(int i, int j, int[][] matrix) { + // out of bound errors + if (j < 0 || j >= matrix[0].length) return Integer.MAX_VALUE; + // if reawched the first row, then only + if (i == 0) return matrix[0][j]; + + int up = recur(i - 1, j, matrix); + int leftdiagonal = recur(i - 1, j - 1, matrix); + int rightdiagonal = recur(i - 1, j + 1, matrix); + return matrix[i][j] + Math.min(up, Math.min(leftdiagonal, rightdiagonal)); + } +} + +private class memoisation { + int dp[][]; + + public int minFallingPathSum(int[][] matrix) { + int n = matrix.length; + int m = matrix[0].length; + dp = new int[n][m]; + int ans = Integer.MAX_VALUE; + // fill dp with min value + for (int a[] : dp) { + Arrays.fill(a, Integer.MAX_VALUE); + } + + for (int j = 0; j < m; j++) { + ans = Math.min(ans, recur(n - 1, j, matrix)); + } + return ans; + } + + private int recur(int i, int j, int[][] matrix) { + // out of bound errors + if (j < 0 || j >= matrix[0].length) return Integer.MAX_VALUE; + // if reawched the first row, then only + if (i == 0) return matrix[0][j]; + if (dp[i][j] != Integer.MAX_VALUE) return dp[i][j]; + + int up = recur(i - 1, j, matrix); + int leftdiagonal = recur(i - 1, j - 1, matrix); + int rightdiagonal = recur(i - 1, j + 1, matrix); + return ( + dp[i][j] = + matrix[i][j] + Math.min(up, Math.min(leftdiagonal, rightdiagonal)) + ); + } +} + +private class tabulation { + int dp[][]; + + public int minFallingPathSum(int[][] matrix) { + int n = matrix.length; + int m = matrix[0].length; + dp = new int[n][m]; + int ans = Integer.MAX_VALUE; + // fill dp with min value + for (int a[] : dp) { + Arrays.fill(a, Integer.MAX_VALUE); + } + + // filling the first array + for (int i = 0; i < m; i++) { + dp[0][i] = matrix[0][i]; + } + + for (int i = 1; i < n; i++) { + for (int col = 0; col < m; col++) { + // check out of boound and go + dp[i][col] = matrix[i][col]; + + int up = dp[i - 1][col]; + int leftdiag = dp[i - 1][Math.max(0, col - 1)]; + int rightdiag = dp[i - 1][Math.min(m - 1, col + 1)]; + + // minimum from the rest of moves + dp[i][col] += Math.min(up, Math.min(leftdiag, rightdiag)); + } + } + + // return the minimum value from the end + for (int j = 0; j < m; j++) { + ans = Math.min(ans, dp[n - 1][j]); + } + return ans; + } + + private int recur(int i, int j, int[][] matrix) { + // out of bound errors + if (j < 0 || j >= matrix[0].length) return Integer.MAX_VALUE; + // if reawched the first row, then only + if (i == 0) return matrix[0][j]; + if (dp[i][j] != Integer.MAX_VALUE) return dp[i][j]; + + int up = recur(i - 1, j, matrix); + int leftdiagonal = recur(i - 1, j - 1, matrix); + int rightdiagonal = recur(i - 1, j + 1, matrix); + return ( + dp[i][j] = + matrix[i][j] + Math.min(up, Math.min(leftdiagonal, rightdiagonal)) + ); + } +} From 0e4d15f2c402945842fbf67141616d2cb1d0f1c7 Mon Sep 17 00:00:00 2001 From: Dhiraj Date: Wed, 5 Oct 2022 15:56:35 +0530 Subject: [PATCH 302/448] minimum path falling sum DP --- Dynamic Programming/minimumPathSumDP.java | 69 +++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 Dynamic Programming/minimumPathSumDP.java diff --git a/Dynamic Programming/minimumPathSumDP.java b/Dynamic Programming/minimumPathSumDP.java new file mode 100644 index 00000000..af8a7100 --- /dev/null +++ b/Dynamic Programming/minimumPathSumDP.java @@ -0,0 +1,69 @@ +/*https://leetcode.com/problems/minimum-path-sum/ + * dp easy, striver op + * + */ + +private class Recursion { + + public int minPathSum(int[][] grid) { + int n = grid.length; + int m = grid[0].length; + return recursion(n - 1, m - 1, grid); + } + + private int recursion(int i, int j, int[][] grid) { + if (i == 0 && j == 0) return grid[0][0]; + if (i < 0 || j < 0) return Integer.MAX_VALUE; + int up = recursion(i - 1, j, grid); // travelling from upside + int left = recursion(i, j - 1, grid); // travelling from righside + return grid[i][j] + Math.min(up, left); + } +} + +private class memoization { + int dp[][]; + + public int minPathSum(int[][] grid) { + int n = grid.length; + int m = grid[0].length; + dp = new int[n][m]; + for (int a[] : dp) { + Arrays.fill(a, -1); + } + return recursion(n - 1, m - 1, grid); + } + + private int recursion(int i, int j, int[][] grid) { + if (i == 0 && j == 0) return grid[0][0]; + if (i < 0 || j < 0) return Integer.MAX_VALUE; + if (dp[i][j] != -1) return dp[i][j]; + int up = recursion(i - 1, j, grid); // travelling from upside + int left = recursion(i, j - 1, grid); // travelling from righside + return dp[i][j] = grid[i][j] + Math.min(up, left); + } +} + +private class tabulation { + int dp[][]; + + public int minPathSum(int[][] grid) { + int n = grid.length; + int m = grid[0].length; + dp = new int[n][m]; + for (int a[] : dp) { + Arrays.fill(a, -1); + } + for (int i = 0; i < n; i++) { + for (int j = 0; j < m; j++) { + if (i == 0 && j == 0) dp[i][j] = grid[i][j]; + if (dp[i][j] != -1) continue; else if (i == 0 && j != 0) dp[i][j] = + grid[i][j] + dp[i][j - 1]; else if (i != 0 && j == 0) dp[i][j] = + grid[i][j] + dp[i - 1][j]; else { + dp[i][j] = grid[i][j] + Math.min(dp[i - 1][j], dp[i][j - 1]); + } + } + } + + return dp[n - 1][m - 1]; + } +} From bcfde1a84dd9dc3665d221547e192ef28963be46 Mon Sep 17 00:00:00 2001 From: Dhiraj Date: Wed, 5 Oct 2022 15:56:43 +0530 Subject: [PATCH 303/448] Triangle DP --- Dynamic Programming/triangle.java | 43 +++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 Dynamic Programming/triangle.java diff --git a/Dynamic Programming/triangle.java b/Dynamic Programming/triangle.java new file mode 100644 index 00000000..2135d71c --- /dev/null +++ b/Dynamic Programming/triangle.java @@ -0,0 +1,43 @@ +/*https://leetcode.com/problems/triangle/ + * triangle + * strivers dp series + */ +private class recursion { + + public int minimumTotal(List> tri) { + return recur(tri, 0, 0); + } + + private static int recur(List> tri, int i, int j) { + if (i == tri.size() - 1) { + return tri.get(i).get(j); + } + int ans = tri.get(i).get(j); + int down = recur(tri, i + 1, j); //tri.get(i+1).get(j); + int diagonal = recur(tri, i + 1, j + 1); //tri.get(i+1).get(j+1); + return ans + Math.min(down, diagonal); + } +} + +private class memoization { + int dp[][]; + + public int minimumTotal(List> tri) { + dp = new int[tri.size()][tri.size()]; + for (int a[] : dp) { + Arrays.fill(a, -1); + } + return recur(tri, 0, 0); + } + + private int recur(List> tri, int i, int j) { + if (i == tri.size() - 1) { + return tri.get(i).get(j); + } + if (dp[i][j] != -1) return dp[i][j]; + int ans = tri.get(i).get(j); + int down = recur(tri, i + 1, j); //tri.get(i+1).get(j); + int diagonal = recur(tri, i + 1, j + 1); //tri.get(i+1).get(j+1); + return dp[i][j] = ans + Math.min(down, diagonal); + } +} From e1dc09e5b52647b0e86e4dccb9496ce7970aeee7 Mon Sep 17 00:00:00 2001 From: Abhijeet Tiwari Date: Wed, 5 Oct 2022 15:57:00 +0530 Subject: [PATCH 304/448] longestCommonSubstring.cpp created --- .../longestCommonSubstring.cpp | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 Dynamic Programming/longestCommonSubstring.cpp diff --git a/Dynamic Programming/longestCommonSubstring.cpp b/Dynamic Programming/longestCommonSubstring.cpp new file mode 100644 index 00000000..59519e24 --- /dev/null +++ b/Dynamic Programming/longestCommonSubstring.cpp @@ -0,0 +1,56 @@ +// Problem : A substring of a string is a subsequence in which all the characters are consecutive.Given two strings, +// we need to find the longest common substring. + +// Approach : + +// We are creating a 2d dp array corresponding to the dimensions of the array. Now if the characters for a pair of +// i, j are not equal, that show that they can be included in the final answer and hence they are discarded. +// Else, we take a look at dp[i-1][j-1] if the continuity is maintained the we can find a continous equal substring +// or not. + +#include +using namespace std; + +int lcs(string &s1, string &s2) +{ + int n = s1.size(); + int m = s2.size(); + vector> dp(n + 1, vector(m + 1, 0)); + int ans = 0; + for (int i = 1; i <= n; i++) + { + for (int j = 1; j <= m; j++) + { + if (s1[i - 1] == s2[j - 1]) + { + // looking if just previous characters are also equal or not + int val = 1 + dp[i - 1][j - 1]; + dp[i][j] = val; + ans = max(ans, val); + } + else + { + // not a part of equal substring, hence 0 + dp[i][j] = 0; + } + } + } + return ans; +} + +int main() +{ + string s1; + string s2; + cin >> s1 >> s2; + cout << "The Length of Longest Common Substring is " << lcs(s1, s2); +} + +// Sample Inputs + +// abcjklp +// acjkp + +// Corresponding Outputs + +// 3 \ No newline at end of file From 5f4015d8ca437d9d265e041d5388042ee79dc1b0 Mon Sep 17 00:00:00 2001 From: Dhiraj Date: Wed, 5 Oct 2022 15:57:48 +0530 Subject: [PATCH 305/448] Cycle detection in Directed and undirected graph --- graph/cycleDetectionInDirectedGraph.java | 31 ++++++++++ graph/cycledetectionInUndirectedGraph.java | 66 ++++++++++++++++++++++ 2 files changed, 97 insertions(+) create mode 100644 graph/cycleDetectionInDirectedGraph.java create mode 100644 graph/cycledetectionInUndirectedGraph.java diff --git a/graph/cycleDetectionInDirectedGraph.java b/graph/cycleDetectionInDirectedGraph.java new file mode 100644 index 00000000..1b97335f --- /dev/null +++ b/graph/cycleDetectionInDirectedGraph.java @@ -0,0 +1,31 @@ +import java.util.ArrayList; + + +// check whether the graph is DAG, directed acyclic(without cycles) graph +public class cycleDetectionInDirectedGraph { + private boolean checkCycle(int node, ArrayList> adj, int[] visited, int dfsVisited[]) { + visited[node] = 1; + dfsVisited[node] = 1; + for (Integer child : adj.get(node)) { + if (visited[child] == 0) { + if (checkCycle(child, adj, visited, dfsVisited)) + return true; + } else if (dfsVisited[child] == 1) + return true; + } + return false; + } + + public boolean isCyclic(int N, ArrayList> adjlist, int n) { + int visited[] = new int[N]; + int dfsVisited[] = new int[N]; + for (int i = 0; i < n; i++) { + if (visited[i] == 0) { + if (checkCycle(i, adjlist, visited, dfsVisited) == true) { + return true; + } + } + } + return false; + } +} diff --git a/graph/cycledetectionInUndirectedGraph.java b/graph/cycledetectionInUndirectedGraph.java new file mode 100644 index 00000000..eb25613a --- /dev/null +++ b/graph/cycledetectionInUndirectedGraph.java @@ -0,0 +1,66 @@ +import java.util.ArrayList; +import java.util.Arrays; +import java.util.LinkedList; +import java.util.Queue; + +// CORE: if children is already visited and +// is not the parent of the node then there isa cycle +public class cycledetectionInUndirectedGraph { + private boolean isCycle(int V, ArrayList> adj) { + boolean[] visited = new boolean[V + 1]; + Arrays.fill(visited, false); + for (int i = 1; i <= V; i++) { + if (!visited[i]) { + if (checkForCycle(adj, i, visited)) + return true; + } + } + return false; + } + + static boolean checkForCycle(ArrayList> adj, int s, boolean visited[]) { + Queue q = new LinkedList<>(); // bfs queue + q.add(new Node(s, -1)); // add source node parent of start Node is -1 <-- 0 + visited[s] = true; + while (!q.isEmpty()) { + int node = q.peek().self; + int parent = q.peek().Parent; + q.remove(); + for (Integer child : adj.get(node)) { + if (!visited[child]) { + q.add(new Node(child, node)); + visited[child] = true; + } else if (child != parent) { // child is visited and is not parent, then cycle + return true; + } + } + } + return false; + + } + + // driver code + public static void main(String[] args) { + ArrayList> adj = new ArrayList<>(); + adj.add(new ArrayList<>(Arrays.asList(1, 2))); + adj.add(new ArrayList<>(Arrays.asList(2, 3))); + adj.add(new ArrayList<>(Arrays.asList(3, 4))); + // adj.add(new ArrayList<>(Arrays.asList(4, 5))); + cycledetectionInUndirectedGraph obj = new cycledetectionInUndirectedGraph(); + System.out.println(obj.isCycle(4, adj)); + } +} + +class Node { + int self; + int Parent; + + public Node(int self, int Parent) { + this.self = self; + this.Parent = Parent; + } +} + +class cycleDetectionUsingDSU{ + +} \ No newline at end of file From f10e37fc9f423d16b7ad3520f3a46f87266aaac5 Mon Sep 17 00:00:00 2001 From: Abhijeet Tiwari Date: Wed, 5 Oct 2022 15:58:34 +0530 Subject: [PATCH 306/448] maximumNonAdjacentSum.cpp created --- Dynamic Programming/maximumNonAdjacentSum.cpp | 79 +++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 Dynamic Programming/maximumNonAdjacentSum.cpp diff --git a/Dynamic Programming/maximumNonAdjacentSum.cpp b/Dynamic Programming/maximumNonAdjacentSum.cpp new file mode 100644 index 00000000..09e5c681 --- /dev/null +++ b/Dynamic Programming/maximumNonAdjacentSum.cpp @@ -0,0 +1,79 @@ +// Problem : Given an array of ‘N’ positive integers, we need to return the maximum sum of the subsequence such that no two elements of the subsequence are adjacent elements in the array. + +#include +using namespace std; + +// Recursive Approach starts + +int maximumNonAdjacentSum(int ind, vector &arr, vector &dp) +{ + if (ind == 0) + { + return arr[0]; + } + else if (ind == 1) + { + return max(arr[0], arr[1]); + } + if (dp[ind] != -1) + { + return dp[ind]; + } + // there can be two cases for an element, either we keep it, so we discard the element adjacent to it, or else we discard the current element so that we can move ahead and make decision for the adjacent element and then return the maximum of both of these choices + int pick = arr[ind] + maximumNonAdjacentSum(ind - 2, arr, dp); + int nonPick = maximumNonAdjacentSum(ind - 1, arr, dp); + return dp[ind] = max(pick, nonPick); +} + +int solve(int n, vector &arr) +{ + vector dp(n, -1); + return maximumNonAdjacentSum(n - 1, arr, dp); +} + +// Recursive Approach ends + +// Tabulation Approach starts + +// int maximumNonAdjacentSum(vector &nums) +// { +// int n = nums.size(); +// if (n == 1) +// { +// return nums[0]; +// } +// vector v(n, 0); +// v[0] = nums[0]; +// v[1] = max(nums[0], nums[1]); +// for (int i = 2; i < n; i++) +// { +// v[i] = max(nums[i] + v[i - 2], v[i - 1]); +// } +// return v[n - 1]; +// } + +// Tabulation approach ends + +int main() +{ + int n; + cin >> n; + vector arr(n); + for (int i = 0; i < n; i++) + { + cin >> arr[i]; + } + cout << solve(n, arr); +} + +// Sample Inputs + +// 4 2 1 4 9 +// 3 1 2 4 +// 9 1 2 3 1 3 5 8 1 9 + +// Corresponding Outputs + +// 11 +// 5 +// 24 \ No newline at end of file From b550f7f121583e6d022fc101b06bbe6235404611 Mon Sep 17 00:00:00 2001 From: Aarush Kansal <56411093+Aarush2k1@users.noreply.github.com> Date: Wed, 5 Oct 2022 15:59:48 +0530 Subject: [PATCH 307/448] Leetcode 23: Merge k sorted linked lists --- Java/Leetcode/Leetcode23.java | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 Java/Leetcode/Leetcode23.java diff --git a/Java/Leetcode/Leetcode23.java b/Java/Leetcode/Leetcode23.java new file mode 100644 index 00000000..fe059079 --- /dev/null +++ b/Java/Leetcode/Leetcode23.java @@ -0,0 +1,27 @@ +/* +You are given an array of k linked-lists lists, each linked-list is sorted in ascending order. +Merge all the linked-lists into one sorted linked-list and return it. +Input: lists = [[1,4,5],[1,3,4],[2,6]] +Output: [1,1,2,3,4,4,5,6] +*/ +class Solution { + public ListNode mergeKLists(ListNode[] lists) { + PriorityQueue q=new PriorityQueue<>((a,b)->a.val-b.val); + ListNode curr=new ListNode(0); + ListNode ans=curr; + + for(ListNode l:lists){ + while(l!=null){ + q.offer(l); + l=l.next; + } + } + + while(!q.isEmpty()){ + curr.next=q.poll(); + curr=curr.next; + curr.next=null; + } + return ans.next; + } +} From 4bcce7055bc4a4d6330ad539c4f8c45be92cb990 Mon Sep 17 00:00:00 2001 From: Abhijeet Tiwari Date: Wed, 5 Oct 2022 16:00:17 +0530 Subject: [PATCH 308/448] minFallingPathSumTriangle.cpp created --- .../minFallingPathSumTriangle.cpp | 77 +++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 Dynamic Programming/minFallingPathSumTriangle.cpp diff --git a/Dynamic Programming/minFallingPathSumTriangle.cpp b/Dynamic Programming/minFallingPathSumTriangle.cpp new file mode 100644 index 00000000..d3b1fb96 --- /dev/null +++ b/Dynamic Programming/minFallingPathSumTriangle.cpp @@ -0,0 +1,77 @@ +// Problem : Given a triangle array, return the minimum path sum from top to bottom. For each step, you may move to an +// adjacent number of the row below.More formally, if you are on index i on the current row, you may move to either +// index i or index i + 1 on the next row. + +#include +using namespace std; + +int minimumTotal(vector> &triangle) +{ + int n = triangle.size(); + vector> dp(n); + for (int i = 0; i < n; i++) + { + for (int j = 0; j < triangle[i].size(); j++) + { + if (i == 0 and j == 0) + { + // very first cell + dp[i].push_back(triangle[i][j]); + } + else if (j == 0) + { + // we can jump to this cell by one way(⬇️) + dp[i].push_back(dp[i - 1][j] + triangle[i][j]); + } + else if (j == (triangle[i].size() - 1)) + { + // we can jump to this cell by one way(↘️) + dp[i].push_back(dp[i - 1][j - 1] + triangle[i][j]); + } + else + { + // we can jump to this cell by two ways(⬇️ and ↘️) + dp[i].push_back(min(dp[i - 1][j], dp[i - 1][j - 1]) + triangle[i][j]); + } + } + } + // returning the minimum out of all calculated sums + return *min_element(dp[n - 1].begin(), dp[n - 1].end()); +} +int main() +{ + int n; + cin >> n; + vector> triangle(n); + for (int i = 0; i < n; i++) + { + for (int j = 0; j <= i; j++) + { + int x; + cin >> x; + triangle[i].push_back(x); + } + } + cout << minimumTotal(triangle); +} + +// Sample Inputs + +// Sample Inputs + +// Sample Inputs + +// 4 +// 2 +// 3 4 +// 6 5 7 +// 4 1 8 3 + +// 1 +// -10 + +// Corresponding Outputs + +// 11 + +// -10 \ No newline at end of file From e4e2dbc603b241da6e6bef877117e942e3b4268a Mon Sep 17 00:00:00 2001 From: Abhijeet Tiwari Date: Wed, 5 Oct 2022 16:01:27 +0530 Subject: [PATCH 309/448] ninjaAndHisFriends.cpp created --- Dynamic Programming/ninjaAndHisFriends.cpp | 125 +++++++++++++++++++++ 1 file changed, 125 insertions(+) create mode 100644 Dynamic Programming/ninjaAndHisFriends.cpp diff --git a/Dynamic Programming/ninjaAndHisFriends.cpp b/Dynamic Programming/ninjaAndHisFriends.cpp new file mode 100644 index 00000000..53d990f8 --- /dev/null +++ b/Dynamic Programming/ninjaAndHisFriends.cpp @@ -0,0 +1,125 @@ +// Problem(3-D DP) : We are given an ‘N *M’ matrix.Every cell of the matrix has some chocolates on it, mat[i][j] gives us the +// number of chocolates.We have two friends ‘Alice’ and ‘Bob’.initially, Alice is standing on the cell(0, 0) and Bob is standing +// on the cell(0, M - 1).Both of them can move only to the cells below them in these three directions : to the bottom cell(↓), +// to the bottom - right cell(↘), or to the bottom - left cell(↙). When Alica and Bob visit a cell, they take all the chocolates +// from that cell with them. It can happen that they visit the same cell, in that case, the chocolates need to be considered only +// once. They cannot go out of the boundary of the given matrix, we need to return the maximum number of chocolates that Bob and +// Alice can together collect. + +#include +using namespace std; + +int f(int i, int j1, int j2, vector> &grid, int n, int m, vector>> &dp) +{ + if (i == n) + { + return 0; + } + if (dp[i][j1][j2] != -1) + { + return dp[i][j1][j2]; + } + int mx = INT_MIN; + // if Alice can move to the left column in the row below + if (((j1 - 1) >= 0)) + { + // if Bob can move to the same column in the row below + mx = max(mx, f(i + 1, j1 - 1, j2, grid, n, m, dp)); + // if Bob can move to the left column in the row below + if ((j2 - 1) >= 0) + { + mx = max(mx, f(i + 1, j1 - 1, j2 - 1, grid, n, m, dp)); + } + // if Bob can move to the right column in the row below + if ((j2 + 1) < m) + { + mx = max(mx, f(i + 1, j1 - 1, j2 + 1, grid, n, m, dp)); + } + } + // if Alice can move to the same column in the row below + // if Bob can move to the same column in the row below + mx = max(mx, f(i + 1, j1, j2, grid, n, m, dp)); + // if Bob can move to the left column in the row below + if ((j2 - 1) >= 0) + { + mx = max(mx, f(i + 1, j1, j2 - 1, grid, n, m, dp)); + } + // if Bob can move to the right column in the row below + if ((j2 + 1) < m) + { + mx = max(mx, f(i + 1, j1, j2 + 1, grid, n, m, dp)); + } + // if Alice can move to the right column in the row below + if (((j1 + 1) < m)) + { + // if Bob can move to the same column in the row below + mx = max(mx, f(i + 1, j1 + 1, j2, grid, n, m, dp)); + // if Bob can move to the left column in the row below + if ((j2 - 1) >= 0) + { + mx = max(mx, f(i + 1, j1 + 1, j2 - 1, grid, n, m, dp)); + } + // if Bob can move to the right column in the row below + if ((j2 + 1) < m) + { + mx = max(mx, f(i + 1, j1 + 1, j2 + 1, grid, n, m, dp)); + } + } + if (j1 == j2) + { + // if same cell for both alice and bob, count chocolates only once + return dp[i][j1][j2] = (mx + grid[i][j1]); + } + else + { + return dp[i][j1][j2] = (mx + grid[i][j1] + grid[i][j2]); + } +} + +int maximumChocolates(int r, int c, vector> &grid) +{ + vector>> dp(r, vector>(c, vector(c))); + for (int i = 0; i < r; i++) + { + for (int j = 0; j < c; j++) + { + for (int k = 0; k < c; k++) + { + dp[i][j][k] = -1; + } + } + } + return f(0, 0, c - 1, grid, r, c, dp); +} + +int main() +{ + int r, c; + cin >> r >> c; + vector> grid(r, vector(c)); + for (int i = 0; i < r; i++) + { + for (int j = 0; j < c; j++) + { + cin >> grid[i][j]; + } + } + cout << maximumChocolates(r, c, grid); +} + +// Sample Inputs + +// 3 4 +// 2 3 1 2 +// 3 4 2 2 +// 5 6 3 5 + +// 2 2 +// 1 1 +// 1 2 + +// Corresponding Outputs + +// 21 + +// 5 From 41bf33efcc8032528dfa4a723060f18354028b67 Mon Sep 17 00:00:00 2001 From: Abhishek Srivastava Date: Wed, 5 Oct 2022 16:02:36 +0530 Subject: [PATCH 310/448] Create COINS - Bytelandian gold coins Added solution to a problem on SPOJ. Problem Link: https://www.spoj.com/problems/COINS/ --- CPP/Problems/COINS - Bytelandian gold coins | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 CPP/Problems/COINS - Bytelandian gold coins diff --git a/CPP/Problems/COINS - Bytelandian gold coins b/CPP/Problems/COINS - Bytelandian gold coins new file mode 100644 index 00000000..73e49967 --- /dev/null +++ b/CPP/Problems/COINS - Bytelandian gold coins @@ -0,0 +1,21 @@ +#include +using namespace std; +unordered_map umap; +long long coin(int n){ + if (!n) return 0; + if (umap[n]) return umap[n]; + long long sum = coin(n/2)+coin(n/3)+coin(n/4); + if (n>sum) umap[n]=n; + else umap[n] = sum; + return umap[n]; +} +int main() { + while (true){ + int n=-1; + cin>>n; + if (n==-1) break; + long long ans = coin(n); + cout< Date: Wed, 5 Oct 2022 16:26:33 +0530 Subject: [PATCH 311/448] Create Kruskal's_Algorithm.py --- Python/Kruskal's_Algorithm.py | 69 +++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 Python/Kruskal's_Algorithm.py diff --git a/Python/Kruskal's_Algorithm.py b/Python/Kruskal's_Algorithm.py new file mode 100644 index 00000000..a74e868b --- /dev/null +++ b/Python/Kruskal's_Algorithm.py @@ -0,0 +1,69 @@ +# Kruskal's algorithm in Python + + +class Graph: + def __init__(self, vertices): + self.V = vertices + self.graph = [] + + def add_edge(self, u, v, w): + self.graph.append([u, v, w]) + + # Search function + + def find(self, parent, i): + if parent[i] == i: + return i + return self.find(parent, parent[i]) + + def apply_union(self, parent, rank, x, y): + xroot = self.find(parent, x) + yroot = self.find(parent, y) + if rank[xroot] < rank[yroot]: + parent[xroot] = yroot + elif rank[xroot] > rank[yroot]: + parent[yroot] = xroot + else: + parent[yroot] = xroot + rank[xroot] += 1 + + # Applying Kruskal algorithm + def kruskal_algo(self): + result = [] + i, e = 0, 0 + self.graph = sorted(self.graph, key=lambda item: item[2]) + parent = [] + rank = [] + for node in range(self.V): + parent.append(node) + rank.append(0) + while e < self.V - 1: + u, v, w = self.graph[i] + i = i + 1 + x = self.find(parent, u) + y = self.find(parent, v) + if x != y: + e = e + 1 + result.append([u, v, w]) + self.apply_union(parent, rank, x, y) + for u, v, weight in result: + print("%d - %d: %d" % (u, v, weight)) + + +g = Graph(6) +g.add_edge(0, 1, 4) +g.add_edge(0, 2, 4) +g.add_edge(1, 2, 2) +g.add_edge(1, 0, 4) +g.add_edge(2, 0, 4) +g.add_edge(2, 1, 2) +g.add_edge(2, 3, 3) +g.add_edge(2, 5, 2) +g.add_edge(2, 4, 4) +g.add_edge(3, 2, 3) +g.add_edge(3, 4, 3) +g.add_edge(4, 2, 4) +g.add_edge(4, 3, 3) +g.add_edge(5, 2, 2) +g.add_edge(5, 4, 3) +g.kruskal_algo() From 91028cca4cf09c72398f07ef26bb28d8f4688521 Mon Sep 17 00:00:00 2001 From: souravkhan12 Date: Wed, 5 Oct 2022 16:26:40 +0530 Subject: [PATCH 312/448] CSES solutions --- CSES/DP/BookShop_MEMO.cpp | 58 ++++++++++++++++++++++++++ CSES/DP/BookShop_TABU.cpp | 61 +++++++++++++++++++++++++++ CSES/DP/DiceCombination.cpp | 56 +++++++++++++++++++++++++ CSES/DP/GridPaths.cpp | 61 +++++++++++++++++++++++++++ CSES/DP/MinimizingCoins.cpp | 63 ++++++++++++++++++++++++++++ CSES/DP/RemovingDigits.cpp | 53 ++++++++++++++++++++++++ CSES/DP/coinCombinations1.cpp | 54 ++++++++++++++++++++++++ CSES/DP/coinCombinations2.cpp | 54 ++++++++++++++++++++++++ CSES/Intro/CheesboardAndQueens.cc | 54 ++++++++++++++++++++++++ CSES/Intro/CoinPiles.cc | 22 ++++++++++ CSES/Intro/DigitQueries.cc | 41 ++++++++++++++++++ CSES/Intro/GrayCode.cc | 18 ++++++++ CSES/Intro/GridPaths.cc | 64 +++++++++++++++++++++++++++++ CSES/Intro/Palindrome.cc | 35 ++++++++++++++++ CSES/Intro/TowerH.cc | 31 ++++++++++++++ CSES/Intro/TwoSets.cpp | 54 ++++++++++++++++++++++++ CSES/Intro/a.out | Bin 0 -> 50360 bytes CSES/Sorting/CollectionNumbers.cc | 22 ++++++++++ CSES/Sorting/CollectionNumbers2.cc | 30 ++++++++++++++ CSES/Sorting/Concert.cc | 32 +++++++++++++++ CSES/Sorting/MaximumSubarraySum.cc | 23 +++++++++++ CSES/Sorting/MissingCoinSum.cc | 31 ++++++++++++++ CSES/Sorting/Playlist.cc | 33 +++++++++++++++ CSES/Sorting/Restaurant.cc | 25 +++++++++++ CSES/Sorting/SumOfTwoValues.cc | 28 +++++++++++++ CSES/Sorting/Traffic_lights.cc | 32 +++++++++++++++ CSES/Sorting/a.out | Bin 0 -> 52304 bytes 27 files changed, 1035 insertions(+) create mode 100644 CSES/DP/BookShop_MEMO.cpp create mode 100644 CSES/DP/BookShop_TABU.cpp create mode 100644 CSES/DP/DiceCombination.cpp create mode 100644 CSES/DP/GridPaths.cpp create mode 100644 CSES/DP/MinimizingCoins.cpp create mode 100644 CSES/DP/RemovingDigits.cpp create mode 100644 CSES/DP/coinCombinations1.cpp create mode 100644 CSES/DP/coinCombinations2.cpp create mode 100644 CSES/Intro/CheesboardAndQueens.cc create mode 100644 CSES/Intro/CoinPiles.cc create mode 100644 CSES/Intro/DigitQueries.cc create mode 100644 CSES/Intro/GrayCode.cc create mode 100644 CSES/Intro/GridPaths.cc create mode 100644 CSES/Intro/Palindrome.cc create mode 100644 CSES/Intro/TowerH.cc create mode 100644 CSES/Intro/TwoSets.cpp create mode 100755 CSES/Intro/a.out create mode 100644 CSES/Sorting/CollectionNumbers.cc create mode 100644 CSES/Sorting/CollectionNumbers2.cc create mode 100644 CSES/Sorting/Concert.cc create mode 100644 CSES/Sorting/MaximumSubarraySum.cc create mode 100644 CSES/Sorting/MissingCoinSum.cc create mode 100644 CSES/Sorting/Playlist.cc create mode 100644 CSES/Sorting/Restaurant.cc create mode 100644 CSES/Sorting/SumOfTwoValues.cc create mode 100644 CSES/Sorting/Traffic_lights.cc create mode 100755 CSES/Sorting/a.out diff --git a/CSES/DP/BookShop_MEMO.cpp b/CSES/DP/BookShop_MEMO.cpp new file mode 100644 index 00000000..5cb7c097 --- /dev/null +++ b/CSES/DP/BookShop_MEMO.cpp @@ -0,0 +1,58 @@ +#include +using namespace std; + +using ll = long long; +using ld = long double; +#define tcU template using V = vector; +#define rep(i,a,b) for(int i=a;i=a;i--) +#define sz(a) (int)(a.size()) +#define all(a) a.begin(),a.end() +#define precision(n) cout << fixed << setprecision(n) + +void setIO(string s) { freopen((s + ".in").c_str(), "r", stdin); freopen((s + ".out").c_str(), "w", stdout); } +const int mod = 1e9 + 7; +tcU> T max(T &a,T b) {return a > b ? a : b;} +tcU> T min(T &a, T b) { return a > b ? b : a;} + +template // cin >> pair +istream &operator>>(istream &istream, pair &p) { return (istream >> p.first >> p.second); } +tcU> // cin >> vector +istream &operator>>(istream &istream, vector &v) { for (auto &it : v) { cin >> it; } return istream; } +template // cout << pair +ostream &operator<<(ostream &ostream, const pair &p) { return (ostream << p.first << " " << p.second); } +tcU> // cout << vector +ostream &operator<<(ostream &ostream, const vector &c) { for (auto &it : c) { cout << it << " "; } return ostream; } + +int f(int idx, int tar, vector &cost, vector &weight,vector> &dp) { + if (idx == 0) { + if (tar >= cost[0]) return weight[0]; + return 0; + } + if (dp[idx][tar] != -1) return dp[idx][tar]; + int notake = f(idx-1,tar,cost,weight,dp); + int take = 0; + if (tar >= cost[idx]) take = f(idx-1,tar - cost[idx], cost, weight,dp) + weight[idx]; + return dp[idx][tar] = max(take , notake); +} + +void solve() { + int n, x; cin >> n >> x; + vector cost(n); cin >> cost; + vector weight(n); cin >> weight; + vector> dp(n+1,vector (x+1,-1)); + cout << f(n-1,x,cost,weight,dp) << '\n'; +} + +signed main() { + ios_base::sync_with_stdio(false),cin.tie(nullptr); + + int T = 1; + rep(i,1,T+1){ + /* cout << "Case #" << i << ": "; */ + solve(); + } + return 0; +} + diff --git a/CSES/DP/BookShop_TABU.cpp b/CSES/DP/BookShop_TABU.cpp new file mode 100644 index 00000000..afdeecf5 --- /dev/null +++ b/CSES/DP/BookShop_TABU.cpp @@ -0,0 +1,61 @@ +#include +using namespace std; + +using ll = long long; +using ld = long double; +#define tcU template using V = vector; +#define rep(i,a,b) for(int i=a;i=a;i--) +#define sz(a) (int)(a.size()) +#define all(a) a.begin(),a.end() +#define precision(n) cout << fixed << setprecision(n) + +void setIO(string s) { freopen((s + ".in").c_str(), "r", stdin); freopen((s + ".out").c_str(), "w", stdout); } +const int mod = 1e9 + 7; +tcU> T max(T &a,T b) {return a > b ? a : b;} +tcU> T min(T &a, T b) { return a > b ? b : a;} + +template // cin >> pair +istream &operator>>(istream &istream, pair &p) { return (istream >> p.first >> p.second); } +tcU> // cin >> vector +istream &operator>>(istream &istream, vector &v) { for (auto &it : v) { cin >> it; } return istream; } +template // cout << pair +ostream &operator<<(ostream &ostream, const pair &p) { return (ostream << p.first << " " << p.second); } +tcU> // cout << vector +ostream &operator<<(ostream &ostream, const vector &c) { for (auto &it : c) { cout << it << " "; } return ostream; } + +void solve() { + int n, x; cin >> n >> x; + vector cost(n); cin >> cost; + vector weight(n); cin >> weight; + vector> dp(n+1,vector (x+1,-1)); + + for (int i = 0; i <= x; ++i) { + if (i >= cost[0]) { + dp[0][i] = weight[0]; + } else dp[0][i] = 0; + } + + for (int i = 1; i < n; ++i) { + for (int tar = 1; tar <=x; ++tar) { + int notake = dp[i-1][tar]; + int take = 0; + if (tar >= cost[i]) take = dp[i-1][tar-cost[i]] + weight[i]; + dp[i][tar] = max(take,notake); + } + } + cout << dp[n-1][x]; +} + +signed main() { + ios_base::sync_with_stdio(false),cin.tie(nullptr); + + int T = 1; + rep(i,1,T+1){ + /* cout << "Case #" << i << ": "; */ + solve(); + } + return 0; +} + diff --git a/CSES/DP/DiceCombination.cpp b/CSES/DP/DiceCombination.cpp new file mode 100644 index 00000000..d78a964f --- /dev/null +++ b/CSES/DP/DiceCombination.cpp @@ -0,0 +1,56 @@ +#include +using namespace std; + +using ll = long long; +using ld = long double; +#define tcU template using V = vector; +#define rep(i,a,b) for(int i=a;i=a;i--) +#define sz(a) (int)(a.size()) +#define all(a) a.begin(),a.end() +#define precision(n) cout << fixed << setprecision(n) +#define nline '\n' + +void setIO(string s) { freopen((s + ".in").c_str(), "r", stdin); freopen((s + ".out").c_str(), "w", stdout); } +const int mod = 1e9 + 7; +tcU> T max(T a,T b) {return a > b ? a : b;} +tcU> T min(T a, T b) { return a > b ? b : a;} + +template // cin >> pair +istream &operator>>(istream &istream, pair &p) { return (istream >> p.first >> p.second); } +tcU> // cin >> vector +istream &operator>>(istream &istream, vector &v) { for (auto &it : v) { cin >> it; } return istream; } +template // cout << pair +ostream &operator<<(ostream &ostream, const pair &p) { return (ostream << p.first << " " << p.second); } +tcU> // cout << vector +ostream &operator<<(ostream &ostream, const vector &c) { for (auto &it : c) { cout << it << " "; } return ostream; } + +void solve() { + int n; cin >> n; + vector dp(n+1,0); + dp[0] = 1; + dp[1] = 1; + for (int i = 2; i <= n; ++i) { + ll ways = 0; + for (int k = 1; k <= 6; ++k) { + if ((i-k) >= 0) { + (ways += dp[i-k]) %= mod; + } + } + (dp[i] = ways) %= mod; + } + cout << dp[n] % mod << '\n'; +} + +signed main() { + ios_base::sync_with_stdio(false),cin.tie(nullptr); + + int T = 1; + /* cin >> T; */ + rep(i,1,T+1){ + /* cout << "Case #" << i << ": "; */ + solve(); + } + return 0; +} diff --git a/CSES/DP/GridPaths.cpp b/CSES/DP/GridPaths.cpp new file mode 100644 index 00000000..3e0090e3 --- /dev/null +++ b/CSES/DP/GridPaths.cpp @@ -0,0 +1,61 @@ +#include +using namespace std; + +using ll = long long; +using ld = long double; +#define tcU template using V = vector; +#define rep(i,a,b) for(int i=a;i=a;i--) +#define sz(a) (int)(a.size()) +#define all(a) a.begin(),a.end() +#define precision(n) cout << fixed << setprecision(n) + +void setIO(string s) { freopen((s + ".in").c_str(), "r", stdin); freopen((s + ".out").c_str(), "w", stdout); } +const int mod = 1e9 + 7; +tcU> T max(T &a,T b) {return a > b ? a : b;} +tcU> T min(T &a, T b) { return a > b ? b : a;} + +template // cin >> pair +istream &operator>>(istream &istream, pair &p) { return (istream >> p.first >> p.second); } +tcU> // cin >> vector +istream &operator>>(istream &istream, vector &v) { for (auto &it : v) { cin >> it; } return istream; } +template // cout << pair +ostream &operator<<(ostream &ostream, const pair &p) { return (ostream << p.first << " " << p.second); } +tcU> // cout << vector +ostream &operator<<(ostream &ostream, const vector &c) { for (auto &it : c) { cout << it << " "; } return ostream; } + +int f(int i,int k,vector> &grid,vector> &dp) { + if (i < 0 || k < 0 ) return 0; + if (i == 0 && k == 0 && grid[i][k] != '*') return 1; + + if (grid[i][k] == '*') return 0; + if (dp[i][k] != -1) return dp[i][k]; + int one = f(i-1,k,grid,dp) % mod; + int second = f(i,k-1,grid,dp) % mod; + return (dp[i][k] = (one + second) %mod) %= mod; +} + +void solve() { + int N; cin >> N; + vector> grid(N,vector (N)); + vector> dp(N+1,vector (N+1,-1)); + rep(i,0,N) { + rep(k,0,N) { + cin >> grid[i][k]; + } + } + cout << f(N-1,N-1,grid,dp) << '\n'; +} + +signed main() { + ios_base::sync_with_stdio(false),cin.tie(nullptr); + + int T = 1; + rep(i,1,T+1){ + /* cout << "Case #" << i << ": "; */ + solve(); + } + return 0; +} + diff --git a/CSES/DP/MinimizingCoins.cpp b/CSES/DP/MinimizingCoins.cpp new file mode 100644 index 00000000..054cfc97 --- /dev/null +++ b/CSES/DP/MinimizingCoins.cpp @@ -0,0 +1,63 @@ +#include +using namespace std; + +using ll = long long; +using ld = long double; +#define tcU template using V = vector; +#define rep(i,a,b) for(int i=a;i=a;i--) +#define sz(a) (int)(a.size()) +#define all(a) a.begin(),a.end() +#define precision(n) cout << fixed << setprecision(n) +#define nline '\n' + +void setIO(string s) { freopen((s + ".in").c_str(), "r", stdin); freopen((s + ".out").c_str(), "w", stdout); } +const int mod = 1e9 + 7; +tcU> T max(T &a,T b) {return a > b ? a : b;} +tcU> T min(T &a, T b) { return a > b ? b : a;} + +template // cin >> pair +istream &operator>>(istream &istream, pair &p) { return (istream >> p.first >> p.second); } +tcU> // cin >> vector +istream &operator>>(istream &istream, vector &v) { for (auto &it : v) { cin >> it; } return istream; } +template // cout << pair +ostream &operator<<(ostream &ostream, const pair &p) { return (ostream << p.first << " " << p.second); } +tcU> // cout << vector +ostream &operator<<(ostream &ostream, const vector &c) { for (auto &it : c) { cout << it << " "; } return ostream; } + +void solve() { + ll n, x; cin >> n >> x; + vector coins(n); + cin >> coins; + + vectorprev(x + 1,0); + for (ll i = 0; i <= x; ++i) { + if (i % coins[0] == 0 ) prev[i] = i / coins[0]; + else prev[i] = 1e9; + } + for (ll i = 1; i < n; ++i) { + vector cur(x + 1, 0); + for (ll tar = 1; tar <= x; ++tar) { + ll take = 1e9; + if (tar >= coins[i]) take = cur[tar-coins[i]] + 1; + ll notake = prev[tar]; + cur[tar] = min(take,notake); + } + prev = cur; + } + cout << (prev[x] == 1e9 ? -1 : prev[x]) << '\n'; +} + +signed main() { + ios_base::sync_with_stdio(false),cin.tie(nullptr); + + int T = 1; + /* cin >> T; */ + rep(i,1,T+1){ + /* cout << "Case #" << i << ": "; */ + solve(); + } + return 0; +} + diff --git a/CSES/DP/RemovingDigits.cpp b/CSES/DP/RemovingDigits.cpp new file mode 100644 index 00000000..f318858d --- /dev/null +++ b/CSES/DP/RemovingDigits.cpp @@ -0,0 +1,53 @@ +#include +using namespace std; + +using ll = long long; +using ld = long double; +#define tcU template using V = vector; +#define rep(i,a,b) for(int i=a;i=a;i--) +#define sz(a) (int)(a.size()) +#define all(a) a.begin(),a.end() +#define precision(n) cout << fixed << setprecision(n) + +void setIO(string s) { freopen((s + ".in").c_str(), "r", stdin); freopen((s + ".out").c_str(), "w", stdout); } +const int mod = 1e9 + 7; +tcU> T max(T &a,T b) {return a > b ? a : b;} +tcU> T min(T &a, T b) { return a > b ? b : a;} + +int f(int N,vector &dp) { + if (N <= 0) return 0; + + if (dp[N] != -1) return dp[N]; + + int ans = INT_MAX; + int temp = N; + while (temp != 0){ + int rem = temp % 10; + if (rem != 0) { + int ways = f(N-rem,dp) + 1; + ans = min(ans,ways); + } + temp/=10; + } + return dp[N] = ans; +} + +void solve() { + int N; cin >> N; + vector dp(N+1,-1); + cout << f(N,dp) << std::endl; +} + +signed main() { + ios_base::sync_with_stdio(false),cin.tie(nullptr); + + int T = 1; + rep(i,1,T+1){ + /* cout << "Case #" << i << ": "; */ + solve(); + } + return 0; +} + diff --git a/CSES/DP/coinCombinations1.cpp b/CSES/DP/coinCombinations1.cpp new file mode 100644 index 00000000..fec5500a --- /dev/null +++ b/CSES/DP/coinCombinations1.cpp @@ -0,0 +1,54 @@ +#include +using namespace std; + +using ll = long long; +using ld = long double; +#define tcU template using V = vector; +#define rep(i,a,b) for(int i=a;i=a;i--) +#define sz(a) (int)(a.size()) +#define all(a) a.begin(),a.end() +#define precision(n) cout << fixed << setprecision(n) + +void setIO(string s) { freopen((s + ".in").c_str(), "r", stdin); freopen((s + ".out").c_str(), "w", stdout); } +const int mod = 1e9 + 7; +tcU> T max(T &a,T b) {return a > b ? a : b;} +tcU> T min(T &a, T b) { return a > b ? b : a;} + +template // cin >> pair +istream &operator>>(istream &istream, pair &p) { return (istream >> p.first >> p.second); } +tcU> // cin >> vector +istream &operator>>(istream &istream, vector &v) { for (auto &it : v) { cin >> it; } return istream; } +template // cout << pair +ostream &operator<<(ostream &ostream, const pair &p) { return (ostream << p.first << " " << p.second); } +tcU> // cout << vector +ostream &operator<<(ostream &ostream, const vector &c) { for (auto &it : c) { cout << it << " "; } return ostream; } + + +void solve() { + ll n, x; cin >> n >> x; + vector coins(n); cin >> coins; + + vector prev(x + 1,0); + prev[0] = 1; + + for (int tar = 1; tar <= x; ++tar) { + for (int idx = 0; idx < n; ++idx) { + if (tar - coins[idx] >= 0) (prev[tar] += prev[tar-coins[idx]] % mod) %= mod; + } + } + cout << prev[x] << '\n'; +} + +signed main() { + ios_base::sync_with_stdio(false),cin.tie(nullptr); + + int T = 1; + rep(i,1,T+1){ + /* cout << "Case #" << i << ": "; */ + solve(); + } + return 0; +} + diff --git a/CSES/DP/coinCombinations2.cpp b/CSES/DP/coinCombinations2.cpp new file mode 100644 index 00000000..3b58a252 --- /dev/null +++ b/CSES/DP/coinCombinations2.cpp @@ -0,0 +1,54 @@ +#include +using namespace std; + +using ll = long long; +using ld = long double; +#define tcU template using V = vector; +#define rep(i,a,b) for(int i=a;i=a;i--) +#define sz(a) (int)(a.size()) +#define all(a) a.begin(),a.end() +#define precision(n) cout << fixed << setprecision(n) + +void setIO(string s) { freopen((s + ".in").c_str(), "r", stdin); freopen((s + ".out").c_str(), "w", stdout); } +const int mod = 1e9 + 7; +tcU> T max(T &a,T b) {return a > b ? a : b;} +tcU> T min(T &a, T b) { return a > b ? b : a;} + +template // cin >> pair +istream &operator>>(istream &istream, pair &p) { return (istream >> p.first >> p.second); } +tcU> // cin >> vector +istream &operator>>(istream &istream, vector &v) { for (auto &it : v) { cin >> it; } return istream; } +template // cout << pair +ostream &operator<<(ostream &ostream, const pair &p) { return (ostream << p.first << " " << p.second); } +tcU> // cout << vector +ostream &operator<<(ostream &ostream, const vector &c) { for (auto &it : c) { cout << it << " "; } return ostream; } + + +void solve() { + ll n, x; cin >> n >> x; + vector coins(n); cin >> coins; + + vector prev(x + 1,0); + prev[0] = 1; + + for (int idx = 0; idx < n; ++idx) { + for (int tar = 1; tar <= x; ++tar) { + if (tar - coins[idx] >= 0) (prev[tar] += prev[tar-coins[idx]] % mod) %= mod; + } + } + cout << prev[x] << '\n'; +} + +signed main() { + ios_base::sync_with_stdio(false),cin.tie(nullptr); + + int T = 1; + rep(i,1,T+1){ + /* cout << "Case #" << i << ": "; */ + solve(); + } + return 0; +} + diff --git a/CSES/Intro/CheesboardAndQueens.cc b/CSES/Intro/CheesboardAndQueens.cc new file mode 100644 index 00000000..af2632a2 --- /dev/null +++ b/CSES/Intro/CheesboardAndQueens.cc @@ -0,0 +1,54 @@ +#include +using namespace::std; +#define N 8 + +char grid[8][8]; +static int cnt = 0; + +bool is_safe(int row,int col){ + int i, j; + + /* Check this row on left side */ + for (i = 0; i < col; i++) + if (grid[row][i] == 'G') + return false; + + /* Check upper diagonal on left side */ + for (i = row, j = col; i >= 0 && j >= 0; i--, j--) + if (grid[i][j] == 'G') + return false; + + /* Check lower diagonal on left side */ + for (i = row, j = col; j >= 0 && i < N; i++, j--) + if (grid[i][j] == 'G') + return false; + + return true; +} + +void dfs(int row,int col) { + if (col >= N) { cnt++; return; } + + for (int i = 0; i < 8; ++i) { + if (grid[i][col] != '*' && is_safe(i,col)) { + grid[i][col] = 'G'; + dfs(i,col+1); + grid[i][col] = '.'; + } + } +} + +int main(){ + ios_base::sync_with_stdio(false),cin.tie(nullptr); + + for(int i = 0; i < 8; ++i) { + for (int j = 0; j < 8; ++j) { + cin >> grid[i][j]; + } + } + dfs(0,0); + cout << cnt << endl; + return 0; +} + + diff --git a/CSES/Intro/CoinPiles.cc b/CSES/Intro/CoinPiles.cc new file mode 100644 index 00000000..dd8cce25 --- /dev/null +++ b/CSES/Intro/CoinPiles.cc @@ -0,0 +1,22 @@ +#include +using namespace std; + +int main(){ + ios_base::sync_with_stdio(false),cin.tie(nullptr); + + int T; cin >> T; + while (T--) { + int a, b; cin >> a >> b; + if(a 2 * b) { + cout << "NO\n"; + } else if ((a + b) % 3 == 0) { + cout << "YES\n"; + } else { + cout << "NO\n"; + } + } + return 0; +} + diff --git a/CSES/Intro/DigitQueries.cc b/CSES/Intro/DigitQueries.cc new file mode 100644 index 00000000..2c2cd952 --- /dev/null +++ b/CSES/Intro/DigitQueries.cc @@ -0,0 +1,41 @@ +#include +using namespace::std; + +int64_t power(int64_t x,int64_t y) { + int64_t res = 1; + while (y > 0) { + if (y & 1) res = res * x; + y = y >> 1; + x = (x * x); + } + return res; +} + +int main(){ + ios_base::sync_with_stdio(false),cin.tie(nullptr); + + int Q; cin >> Q; + while (Q--) { + int64_t K; cin >> K; + int64_t n = 1, sum = 0; + + while (K >= sum) { + sum = sum + 9 * n * power(10,n-1); + n++; + } + n--; + + // Digits away + int64_t away = (sum - K) / n; + int64_t rem = (sum - K) % n; + + // calculate Number + int64_t number = (power(10,n) - 1) - away; + + string No = to_string(number); + cout << No[(No.length() - 1 - rem)] << endl; + } + return 0; +} + + diff --git a/CSES/Intro/GrayCode.cc b/CSES/Intro/GrayCode.cc new file mode 100644 index 00000000..0d02f04f --- /dev/null +++ b/CSES/Intro/GrayCode.cc @@ -0,0 +1,18 @@ +#include +using namespace std; + +int main(){ + int N; cin >> N; + for(int i = 0; i <(1<>1)); + bitset<32>B = GC; + for(int k = 0; k < N; ++k) { + cout << B[k]; + } + cout << '\n'; + } + return 0; +} + +// 00, 01, 11, 10 +// 0th, 1th, 2th, 3th diff --git a/CSES/Intro/GridPaths.cc b/CSES/Intro/GridPaths.cc new file mode 100644 index 00000000..c088d48d --- /dev/null +++ b/CSES/Intro/GridPaths.cc @@ -0,0 +1,64 @@ +#include +using namespace::std; + +static int cnt = 0; +bool vis[7][7]; +string s; + +// pruning +bool e(int i,int j) { return (i >= 0 && i < 7 && j < 7 && j >=0 && !vis[i][j]); } + +void dfs(int i,int j,int idx) { + if (i == 6 && j == 0) { + if (idx == 48) cnt++; + return; // optimisation 2 + } + if (vis[i][j] == true) return; + vis[i][j] = true; + if (s[idx] == '?' || s[idx] == 'L') { + if (j && !vis[i][j-1]) { + if ((e(i,j-2)==false && e(i+1,j-1) && e(i-1,j-1)) == false){ + dfs(i,j-1,idx+1); + } + } + } + if (s[idx] == '?' || s[idx] == 'R') { + if (j < 6 && !vis[i][j+1]) { + if ((e(i,j+2) == false && e(i+1,j+1) && e(i-1,j+1)) == false) { + dfs(i,j+1,idx+1); + } + } + } + if (s[idx] == '?' || s[idx] == 'U'){ + if (i && !vis[i-1][j]) { + if ((e(i-2,j) == false && e(i-1,j+1) && e(i-1,j-1)) == false) { + dfs(i-1,j,idx+1); + } + } + } + if (s[idx] == '?' || s[idx] == 'D') { + if (i < 6 && !vis[i+1][j]) { + if ((e(i+2,j) == false && e(i+1,j+1) && e(i+1,j-1)) == false) { + dfs(i+1,j,idx+1); + } + } + } + + vis[i][j] = false; // backtrack +} + +int main(){ + ios_base::sync_with_stdio(false),cin.tie(nullptr); + + cin >> s; + dfs(0,0,0); + cout << cnt << endl; + return 0; +} + + +// we only done 2 optimisation +// 1st is if we have reached at the end early then return OPT1 +// 2nd if we reached at the wall end and only can move right or left then return OPT2 +//3rd if can move only left and right and already visited one then return +//4th if diagonal already visited return diff --git a/CSES/Intro/Palindrome.cc b/CSES/Intro/Palindrome.cc new file mode 100644 index 00000000..4b577157 --- /dev/null +++ b/CSES/Intro/Palindrome.cc @@ -0,0 +1,35 @@ +#include +using namespace std; + +int main(){ + string s; cin >> s; + mapm; + for (auto i : s) m[i]++; + + int odd = 0; + char L; + for (auto i : m) { + if (i.second % 2 != 0) { + L = i.first; + odd++; + } + } + if (odd > 1) { + cout << "NO SOLUTION\n"; + } else { + string ans=""; + if (odd !=0) ans.push_back(L); + for (auto i : m) { + string R(i.second/2, i.first); + string C = R; + C += ans; + ans = C; + reverse(R.begin(),R.end()); + ans += R; + } + cout << ans << '\n'; + } + return 0; +} + + diff --git a/CSES/Intro/TowerH.cc b/CSES/Intro/TowerH.cc new file mode 100644 index 00000000..a7ed5d78 --- /dev/null +++ b/CSES/Intro/TowerH.cc @@ -0,0 +1,31 @@ +#include +using namespace::std; +int cnt = 0; +vector> ans; + +void f(int n,int from,int to,int aux) { + if (n == 0) return; + cnt++; + f(n-1,from,aux,to); + ans.push_back({from,to}); + f(n-1,aux,to,from); +} + +int solve(int n) { + f(n,1,3,2); + return cnt; +} + +int main(){ + ios_base::sync_with_stdio(false),cin.tie(nullptr); + + int n; cin >> n; + cout << solve(n) << endl; + for (auto i : ans) { + cout << i.first << " " << i.second << endl; + } + cout << endl; + return 0; +} + + diff --git a/CSES/Intro/TwoSets.cpp b/CSES/Intro/TwoSets.cpp new file mode 100644 index 00000000..c9510eb0 --- /dev/null +++ b/CSES/Intro/TwoSets.cpp @@ -0,0 +1,54 @@ +#include +using namespace std; + +int main(){ + ios_base::sync_with_stdio(false),cin.tie(nullptr); + + int n; cin >> n; + int sum = (n*(n+1))/2; + if (sum % 2 != 0) { + cout << "NO\n"; + exit(0); + } + if (n <= 3) { + cout << "YES\n"; + cout <<"2" << '\n'; + cout << "1 2" << '\n'; + cout << "1" << '\n'; + cout << "3" << '\n'; + exit(0); + } + + vector one,second; + if (n % 2 == 0) { + for(int i = 1; i <= n; ++i) { + if (i % 4 == 0 || i % 4 == 1) { + one.push_back(i); + } else { + second.push_back(i); + } + } + } else { + one.push_back(1); + one.push_back(2); + second.push_back(3); + for (int i = 1; i <= n - 3; ++i) { + if (i % 4 == 0 || i % 4 == 1) { + one.push_back(i + 3); + } else { + second.push_back(i + 3); + } + } + } + + cout << "YES\n"; + cout << one.size() << '\n'; + for (auto i : one) cout << i << " "; + cout << '\n'; + cout << second.size() << '\n'; + for (auto i : second) cout << i << " "; + cout << '\n'; + return 0; +} + + diff --git a/CSES/Intro/a.out b/CSES/Intro/a.out new file mode 100755 index 0000000000000000000000000000000000000000..56c82ca34eb70aa8dbfcbf4e6f3ee8f0d4eadad2 GIT binary patch literal 50360 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 n; + std::vector v(n); + mapm; + int ans = 1; + for (int &x: v) cin >> x, --x; + for (int i = 0; i < n; ++i) { m[v[i]] = i; } + for (int i = 1; i < n; ++i) { + ans += (m[i] < m[i-1]); + } + cout << ans << endl; + return 0; +} + +// main observation is +// if a number x come before x + 1 then no extra move required but otherwise we need extra move diff --git a/CSES/Sorting/CollectionNumbers2.cc b/CSES/Sorting/CollectionNumbers2.cc new file mode 100644 index 00000000..152ebd9d --- /dev/null +++ b/CSES/Sorting/CollectionNumbers2.cc @@ -0,0 +1,30 @@ +#include "bits/stdc++.h" +#define int long long +using namespace::std; + +signed main(){ + ios_base::sync_with_stdio(false),cin.tie(nullptr); + + int n,q; cin >> n >> q; + std::vector v(n); + for (int &x: v) cin >> x, --x; + while (q--) { + int a, b; cin >> a >> b; + --a,--b; + swap(v[a],v[b]); + mapm; + int ans = 1; + + for (int i = 0; i < n; ++i) { m[v[i]] = i; } + for (int i = 1; i < n; ++i) { + ans += (m[i] < m[i-1]); + } + cout << ans << endl; + } + return 0; +} + +// bruteforce +// 4 2 1 5 3 +// 4 1 2 5 3 swap(i,k) +// a[i] and a[k] made affect on a[i-1] a[k-1] and a[i+1] a[k+1] diff --git a/CSES/Sorting/Concert.cc b/CSES/Sorting/Concert.cc new file mode 100644 index 00000000..08c8115e --- /dev/null +++ b/CSES/Sorting/Concert.cc @@ -0,0 +1,32 @@ +#include +using namespace::std; +#define endl '\n' + +int main(){ + ios_base::sync_with_stdio(false),cin.tie(nullptr); + + int n, m; cin >> n >> m; + multiset x; + for (int i = 0; i < n; ++i) { + int l; cin >> l; + x.insert(l); + } + + for (int i = 0; i < m; ++i) { + int val; cin >> val; + auto it = x.upper_bound(val); + if (it == x.begin()) { + cout << -1 << endl; + } else { + --it; + cout << *it << endl; + x.erase(it); + } + } + return 0; +} + + +// 5 3 7 8 5 +// 4 8 3 +// 3 5 5 7 8 diff --git a/CSES/Sorting/MaximumSubarraySum.cc b/CSES/Sorting/MaximumSubarraySum.cc new file mode 100644 index 00000000..cd174430 --- /dev/null +++ b/CSES/Sorting/MaximumSubarraySum.cc @@ -0,0 +1,23 @@ +#include +using namespace::std; +#define endl '\n' +#define rep(i,a,b) for(int i=a; i < (b); ++i) +#define int long long + +int32_t main(){ + ios_base::sync_with_stdio(false),cin.tie(nullptr); + + int ans = -1e10; + int curr = 0; + int n; cin >> n; + vector v(n); + rep(i,0,n) cin >> v[i]; + rep(i,0,n) { + curr = max(v[i], curr + v[i]); + ans = max(ans, curr); + } + cout << ans << endl; + return 0; +} + + diff --git a/CSES/Sorting/MissingCoinSum.cc b/CSES/Sorting/MissingCoinSum.cc new file mode 100644 index 00000000..7c2c2369 --- /dev/null +++ b/CSES/Sorting/MissingCoinSum.cc @@ -0,0 +1,31 @@ +#include +using namespace::std; +#define endl '\n' +#define rep(i,a,b) for(int i=a; i < (b); ++i) +#define int long long + +int32_t main(){ + ios_base::sync_with_stdio(false),cin.tie(nullptr); + + int n; cin >> n; + vector V(n); rep(i,0,n) cin>> V[i]; + sort(V.begin(),V.end()); + int res = 1; + if (V[0] != 1) { + cout << 1 << endl; + exit(0); + } + for (int i = 0; i < n && V[i] <= res; ++i) { + res += V[i]; + } + cout << res << endl; + return 0; +} +// 1 2 2 7 9 +// Solution :- +// we first check if we have a[0] = 1 then we can make sum = 1 else answer = 1 +// we move ahead and now we have (1, [1] + 2 => [3] ) => { 1, 2 ,3 } sum we can make from a[0] to a[2] +// now similarly +// a[2] => [1,2,3] + 2 => 3,4,5 +// a[3] => [1,2,3,4] + 7 => 8,9,10,11 so answer = 6 +//https://medium.com/dexters-lab/eli5-find-the-smallest-positive-integer-value-that-cannot-be-represented-as-sum-of-any-subset-of-f8ea2488184b diff --git a/CSES/Sorting/Playlist.cc b/CSES/Sorting/Playlist.cc new file mode 100644 index 00000000..43f40f09 --- /dev/null +++ b/CSES/Sorting/Playlist.cc @@ -0,0 +1,33 @@ +#include "bits/stdc++.h" +#define int long long +using namespace::std; + +signed main(){ + ios_base::sync_with_stdio(false),cin.tie(nullptr); + + int n; cin >> n; + vector v(n); + mapm; + for(int i = 0; i < n; ++i) { + cin >> v[i]; + } + int ans = 0; + m[v[0]] = 1; + int cnt = 0; + for(int i = 1; i < n; ++i) { + if (m.find(v[i])!=m.end()) { + cnt++; + ans = max(ans,m[v[i-1]]); + m[v[i]] = (m[v[i-1]] + cnt - m[v[i]]); + } else { + m[v[i]] = m[v[i-1]] + 1; + } + } + ans = max(ans,m[v[n-1]]); + cout << ans << endl; + return 0; +} + +// 1 2 1 3 7 4 2 +// 1 2 | 3,4,5, ans = 5, 5 - 2=> 3 +// (3-1) diff --git a/CSES/Sorting/Restaurant.cc b/CSES/Sorting/Restaurant.cc new file mode 100644 index 00000000..e2e06630 --- /dev/null +++ b/CSES/Sorting/Restaurant.cc @@ -0,0 +1,25 @@ +#include "bits/stdc++.h" +#define int long long +using namespace::std; + +signed main(){ + ios_base::sync_with_stdio(false),cin.tie(nullptr); + + int n; cin >> n; + vector> v; + for (int i = 0; i < n; ++i) { + int start, end; cin >> start >> end; + v.push_back({start,+1}); + v.push_back({end,-1}); + } + sort(v.begin(),v.end()); + vector prefix(v.size()+1); + prefix[0] = v[0].second; + for (int i = 1; i < v.size(); ++i) { + prefix[i] = prefix[i-1] + v[i].second; + } + cout << *max_element(prefix.begin(),prefix.end()) << endl; + return 0; +} + + diff --git a/CSES/Sorting/SumOfTwoValues.cc b/CSES/Sorting/SumOfTwoValues.cc new file mode 100644 index 00000000..fe0e59a2 --- /dev/null +++ b/CSES/Sorting/SumOfTwoValues.cc @@ -0,0 +1,28 @@ +#include +using namespace::std; +#define endl '\n' +#define rep(i,a,b) for(int i=a; i < (b); ++i) + +int main(){ + ios_base::sync_with_stdio(false),cin.tie(nullptr); + + int n, x; cin >> n >> x; + mapm; + vector V; + rep(i,0,n){ + int v; cin >> v; + V.push_back(v); + m[v] = i; + } + + rep(i,0,n) { + if (m.find(x - V[i]) != m.end() && m[x-V[i]]!=i) { + cout << i+ 1 << " " << m[x-V[i]] + 1 << endl; + exit(0); + } + } + cout << "IMPOSSIBLE" << endl; + return 0; +} + + diff --git a/CSES/Sorting/Traffic_lights.cc b/CSES/Sorting/Traffic_lights.cc new file mode 100644 index 00000000..a38b3405 --- /dev/null +++ b/CSES/Sorting/Traffic_lights.cc @@ -0,0 +1,32 @@ +#include "bits/stdc++.h" +#define int long long +using namespace::std; + +signed main(){ + ios_base::sync_with_stdio(false),cin.tie(nullptr); + + int x, n; cin >> x >> n; + set lights{0,x}; + multisetdist{x}; + + for(int i = 0; i < n; ++i){ + int pos; cin >> pos; + auto it1 = lights.upper_bound(pos); + auto it2 = it1; + --it2; + + dist.erase(dist.find(*it1 - *it2)); + dist.insert(pos - *it2); + dist.insert(*it1 - pos); + lights.insert(pos); + + auto ans = dist.end(); + --ans; + cout << *ans << " "; + } + return 0; +} +// if our max is on left side and element add on right no affect else affect +// 1 2 3 4 5 6 7 8 +// 3 +// 1 2 | 4 5 6 7 8 diff --git a/CSES/Sorting/a.out b/CSES/Sorting/a.out new file mode 100755 index 0000000000000000000000000000000000000000..24b27f308232991de625d29e5d640da5049e5cf1 GIT binary patch literal 52304 zcmeIbcYIvM)i*wO?>6bGSrvND=r26;$p1F5-wU!{y^Lsz<`;V`^ zb7sz*Gv&;gGxc6w)Vgk!%P^Glm}-e)=y0LNwAc|ZKVy3UTGRrS3-?rYit-}t7MzZ6 z(Ezdf`GIRR^xJq7kbGtIi~%QWv~r+RLPGM5_Z+Zvj007H4wKJAuN}^WAGgclKqo$# zUnQCGREnE~1th@Zz;r&!=5Vz{tHX;&!y~p_=1QTMfQ~1ceD~OV_t<<6EU@_;=*W{Y z;ctOmk4)HtI6f`nDwWAMV)JFfl{UQtnFpVaUnaW$H~DR{`TUiVjLL-bG+H^($!|0G zD3|~AahiFHo!@xvFl5Wqfp&AM+WtsaLB$T6IDBw%;>QL$Gc zG#37oswW=#BP>moZhguhOM+5sJ-QmI35TZH~4WY;&X*v=MBGGuDD;N*YYafgx zR@Sxd6@0Wgus#qOjE7^1_L0`sEgjKL6lxSh-Te6e!4Q&7^r6_@k!Wj|q+Qn-2qgMq z(S1m^I}i%S6FSLA-CU#@9!bQ4Av@8?7D=@uL7r$l5eo+goLob|)`j|lu>cq%i8yM3 zVkGJsP}oSwp>FRCbj}U5b~FYyt?g(C^y|Vm3=JowrlW*V*MR&*3dkdpaB4cgr++x! zXNNN6u|mtEBQY-&9ZskK+b6U;5bE0<=m|!UTOc$N3_18@9_-J_!*EYbpPZa|DrHQDrsE}8|OsaDzH#HkbD-jXfNrrlUV3f z8s45lN^DyiJ|~TSQyLzMn0$7m;q#JMrOrvi=cnOMcuz>+gal4V;Qy5b{*-^x-`fuU z&fj*W=jmFd+Ae)6;X3wm+rj7j&q|Sw&HozE$4>bM-2AC6@G;!SxTCKf!*j|r40D!w z^koS@!7xqz(WfN*Aj35AM?Wj!`xxdBcl34%-@!0V{n5h`zKLNDbw>|K_(KfSTpt~h z@D&Wx)E_-Z!tZC8CjRIq37^L>P5aRn3C9?wNk2MQ!sjwfQ+~7(;bq(EjxF1|taEDz zq)^b^cBT82nTTsUv~s$??x`cyAZa`FtG25b$L9k3f@f15V(}dLFk`OFncjBrZ$|zl z9{{TD(ianfFRlfy?9r{7r!RK9VA8q^V z-`Wnn(st;l>khrye()a@q%KOc?7<=jO z6Wb14us|hF%73JFMgEg-wHpL&4hc-DrXzgXz!pGPq3-))E9YJ2*PrEO2YW40Mz zY5VrS6U9j2OLhYOW3QoTXg7zS(dPjRfYnSiPTh9tk`s6{U7qSK?o)Z!{A%PPTI3a-( z5;!4&6B0NfffEuqA%PPT`2QyX1AE++NWz$8o<0wd3-PkIjveC){~f?j0PgrB)^&iF z18ySx)3IZR0r@z4z{Yu7lrd6ZOv>^34`Z1~JkRdug6C8cuJjcUOvjJ;-1FwKW3K_K zynXL3G>Ol|?=A2<`@<~=58<~C<>I-XTAo*Mjca9I+12Lq zyvnQG%kpMk=2@0E_n>!WUW@DT?7X=v@@6i}t6ZK}2Fm4m{$-Xb1KY#+_5I=4u^E7B zSzf_G*RDK2{U@Fi5;!4&6B0NfffEuqA%PPTI3a-(5;!4&6B78pC;{hQk#mp8xi`e+ z4joDu$aMwoY|_~dAiya1JJhd*Lp`YE@=&ON6|c32i|@K@Mj=U$U@FWXr+ zz5VZFQIb4mFV>v9J7xBzCFkzaTXsCp4f&j7m(RI#!}S>--djz7oHgJP`@WLRrWV-s zb=ILgDCRR!1J!0{?G`z14~i~ zkJ#~lv%_w?9RII@bALRu9F2AZud?Ab8}`_6uMID=;q^AW%Z88G@GCa_o(+Fx!@tI8s+NpoU_6y zZ>e1#r$60d_g5!8iWz|h{5;B#;)-gI5+Hl=eEf_9F65AW$>UV@9q1|9s({TKL<3AA z*+%@%!p}7PHz6_8<$IgJ?Q0X?`upgw zD2~(r6*%sy!p{K|^_q4*VyuT;riR=piaQ$^NfMj(wJd#zeGKh2$;k%awy8%9fj_c#Z z`O#MHPZ3AQ^?AXe$=tltZqRYPNZfSdULlT->%ZYxM_4M~+cOd6{Q^qk`>S25FfhJ% z^1pz1m-l?K|E-ws!nnQnF!0Z!Mab2!+`mT1pyR3rMeLw+NVjpX+Kf|OZC$;nLB{{Z8%bzGTp^G>co$8{|n-*$4`OdK88CyBeA zxX%zr$MraIYlwT6I6AIx5|@vB+}|gTj_YT{T|~Oy5=Y1NHgP-PxQ`J>$CZVe8*DmP z5q(r}*A)6bOWzFo_~L@Aj=mqzcRGC(tE-hhio>;$zT4^BN#Dcth3NY#eFOCUguZ?B zy+z-}^ts`sSfxIun@2kqc4t`J(_}*9eN%)HjeE;qFBf>ea zz2kLr1tYhP6-8Hf6~j|f>0h3A zFO&Q>DEuq)*mIRP8^f@_)n5pP9B(P2{j01`0~9Ft2tXDM!ISXVWh?zDa`dk@nUFin zyhVxylEwJZs)=n9t5$^+Y1Mv=pKB7xjfvLj@T0*i0q~gGI=Q(?t)}9~1TJRDC$Ka? z%m!P^kp32#kmSRN?dStTRV{pr@S`zt9_muAwxYS(isou7nyam-d*uYk?39u%V93=L z)y-1-PMtU#D7PC4`({+^VYIfcZdzC0%*l0(rndNI6<-H`)+KN{?Ml$Z`ev6dAk8Z$ z!+%;iH@|bWxphBX2vqf?rHpQYnfA>qTt)xSQA6MSqMh{Lj1kn=SQMuJeV9!7nuv0PJt@{{fn3K8z`$zbT9TN}2z_eAvH00)F$MDg>5Dpun8#MPQ`_ z%FKpJ1X?9fX?~UotdhV?^RG-`wFKsxpJ4)R5?Ej^C0V-!TFfhP5756x0&V8KOnR-K z<=$jIz`!~QY&LHt*#-%0G5<6PflU(VFt5PK?%yJTPV)*>*54_Ct>#^5U;h~r*k&Gr zg8I*tz;=_D5B&iN>@eSCYC#F?G%sUnAqngzA`UjgYUUiw!|_&Bnkk2u=O0Dk^{lvJIv8EjVD?@7 ztCBE(p0!BeeCvFHjn)l>1x=O@B5+MuXe}iy?6L-tsH-q!eO+MK`kBBU>rVoEtt@2W zD(tf=1xBnUf#+K51@5-G1@>E)3LLQR61c~DMqtc3A~0cPL5*F7!`5tpd#$wsN31S^ z`>p)~FSITdc+k2*;3d`r0xz|`D)0l=j|5(B{XyWB)jMIBweAskyY-^LJFOoH{G|13fp=Md6L_~(3{&SSy2qL)@LsD^;HRwJ0`Ir3 z75G-^h?M*7(ivEMx{Cf%`heiyDSc7k-%2ZCVqHalFMUnI|0u=l(+K~w^mM}F_0~2U zo+q%=`k27&*5d-tvR)Q=w)H!K0W0TJ@&&9p0?)D5*zjC|LF)<|-Y2lj`kD=YLs+uN zx`gE|S!^8^xWvky!ElRpzrbbIV*;03uLxXWy&-U=l{J%et=4pbtE{C0S6f>JZnXU9 zO0JSk)^3JNTdW%eUTs|^@PpR90uNhH3B1<&iNFt8{}T9Nt9%yuK4Q%mc%8Lb;Puv^ zz#FU&3cS&}OW;SXhXmea{ZQb|)-i#%Sd%bxx=L@gRtfx=)g|zDYrnudteXYiX?;=P zC#)X`yvzExzn%x)`J4SV!a~p1?x`&ziMUU2Dq#AMQe`0uUYE^e%%@n_zmkCf#0<568Mt!j17M# z5W{RO`M+gN75K8X#D-@H{I+$z4R03s9g8>rU8Uc#ehOGvY8j=jx%A{1r6-9e*C<^o zo=HX?>rz;Hl95MY7nW8Td6aTt>2xEH;w>zlY2<14Sw@~_pKauk-8FHG)i1EaI!9oq z)~tzVS{Fz-Y~3iZ&w5B;#Cj2M>etY1%9iH7-%{$-Z@}*_+hrvXFjv6dm7SRzHI!1@ z8B=z4!LAaeevzfr8~FKO1-l{9i_Y?33h_2*`1Y6=KZ#U}+AswQz6pa-2HZ(W{3*Sl zFAL>XA|EEuh?qr;eH}@vNs`%ap9{>JfZdkl(=h|SMx=Nyu)|J_aWus^O;t--f zl8n9`8QJM3d@hvp9z;EqjDCaM6PZ`p#lElklzN+0`v$__Ptr&Zn&wj9U6nS?TZsQh zl19>*v;~85*;T$3uxI(mw*o&Aho4g}HR-#s17#od-Cv+o4WgQzXoH!m9lyn(S$1>5 zWQ+;NV$VLBy`N5Gvc` z-vFUd3SH%&IeB$l6H_M>46dMtNAj!mh_m-HvpxyDY+tQlE7I@0=O9@2^# zz8fJL3TX@DvyhE;3f#b1IjBJSrH1c(WK7I}L!_*)!CU@8!}lQ6lWZSyq6`x15?Cc@ zrt+H&Uk56i2ckzwL{EAqzw?9WZo}7vk}~cmV-bm19x{Bbn7~N_kd;nJvZFARH4()u z|FYrRj0qeulSx#BBvr-VF(WD8VpOrJS;Sj^CFXg<7n-37+es{Pw!Gjkf6?&$4RWLG z_=2ybqZ2zT9PLr%-!y!up|?m{`%(1rZyUZ>(0D{#=P;tL!fF?|(%LF;mGuXKtF3@awEw1+KU5 z6}Z9ryueLXv(Rm}ssJlahDPPgF(yBZ%DP=Bfwe{Eq)QJ&KXcX^%gzpLt51cy zKG@Akmg%_|iYvy&psUo33Z(WV3OR8mdf?=xzGlqTLP*v1LnQh-etC}pb1T^Ve{4i% z^r?w|p@#jy^BM|CV&h*RG?9wXsBXO7uO@%Q^C9T8L{CQ43@6&4PgT>3c$Q3}Qcg4r zkzB;n<|MZc6x);ZY$8>?4}$TmuBE7j-t(gGQqVuQ0NI}p+7Be@brG4Sr{A{{%_B6o zBmPrKn%{vf)hp(I6kY96w*HJSq0cl;KpumT&y;g~?Z~!|@;D0KKjW8@$3H0#Zxajm z21?>yT`PiIi(0#%^?eMC>zYAPj?|{(=TFfmyJK3$4H!F~0a^G-G=y=JJEs&C*b2lM z~qj#8pC}^_+t?Fjl&KTm_KEa20r2a@Q4bu5*|S>Gdl@BpxzzP$|+rfZt=I zNs?t!S(3_03$0BJNbRK4t@pG3Qy1&-)FnDxxzM_T@s&%g8w9Sj9unAUeOF+c^|ruv zt8^ads?M>R1O}}$1$J5I3k+Ew2XyzK8YizTxd__2^4e3Bns&&OI|327_oJswpIh)S z1dz1}h~D|dK-5*73I9cN-hr4;@lTkj=4^x9Pn~Gwx<7|bJL8HfHbx&mqv2gtI2(yy z%*1{Tb)Ru{6}2c5fiS#_3%dbsMcld5(dE5s%Gr5bGrNid&~(?#Q1LP}vukE|@sNbW z#d`(z6rT@x+7Xo0M_rn=pm3}^r5a@qdeA!AE;Lnk_F@Rz%C17bIoY{rl-%r6`14fOr@>tGDAI3bPO7LD3AfQ} z6m3UN8|ZZvy$0-Ndd;Gjk!L5p?xMTFyPaN7(I(`$i(YThMJU2q^!kb}2R1~nzlf(# z5qh(VJSfp1z1c-AC{}`At7tmPa~{1pYG`O6rp{iJyZAZ`elsqD3LHZIlO9EL&7I|` zg`WHnbg$#*KLSNCE(b^8E(c6Jh)d@g{Kor`S&?Jq43#-s+oz%qIeSGGkKQ zV*1Q=jqI7yG0mrq4X7!}R^hjq?M(;Nz_=TEbEJ` zU@^o}x8AcAEl*SY9N3aQJ*1TNKSQDZ z#1v+t(zFtW*d^Kzq5FmutBG4FAeyQ0AQVhIKs>nRn$W7{E`lTt#2C^ghQA zEWN++3rp{Byl&}zjbB=NU*p%7-tRbKaet$+JF-_5{g-(rbcFn?(6}Jipe`VUJl z_uPi1mwO(=S~?dK`aeQPjq>)KgWzz>gmUfFr6_h%;HvCJR;auyhbAl`bJjuMRcOCY zF_W@7I8)##H^-Cm?q(`t7ULQ*kuTrxTMElbA^nKtq}1e%n8}x4;QL~gj(ulzY>rIj z@AW*0;!&29A#vkmGK<6cvC5H|{39M7#}d)#(5M`l$Up7b2~m)KmlLDs@lxCzna6+A z6FC(<6*L!;hMx2sWEy|W^GT=!qwW}k#uAAX8lIn_gOKQjB$3SGDG8M`k+S))?ih>mkX;RdtL%TFd5!GH5$RG{Z1=s*5YxQ* zQ%K{&35Oiw;-G_vwz>LzHdi0o=ISHd+)A?4M8T)% z=XP%6_a;)~D*a81%-t{#+^94kLx*ZwoW-_RO|kHRS|Wb8a`%IzX{m?fS7kxdN^=CZ zoO_y@r8V#2B+DxC<5+b+NSaoAP68EJHkiF=Pj(Z{vav|!c#_K|@q>lmG-%rF*$gUo z2+~{NE832_x^F_cnzIW-RC4a@xmTe!3(NG$ju*|luw0+!@RWUFg+9UgFANq7C&{Tz z<$=?^MhHB=WB&O_`E*|i{g@w83jc)nBzp3dI}EbZ{pPoUD*HC7P_W4I&&7;4XL!1)6#WoZJQ0Lx@?GyRfX5-O_zM zDz$iO;g^A&!p8U(JW?E=D!U65UtLn+=jOb*8-zNJuGWSbps}_G5FITw#3d^{xt)LTh z-kosvcauYi&-2n>@gnqexn&gdnt_*w-1jZ=?3mbwSRNK=qt1}><)VWudtVOuA8?|S zo9puxGbeF+^u7b|KLgK{@4(^DF7f$OAj`6qipLJMF7(v}NJG^YVsxR;UHc*|0XMV! zwLe59=)<|}5vCj}V_p|j7Bt>t6kLvm<&ni|W^%8QD~l?%dOBovpOOCw^p1i8b>S7D zYJA8ri$Ga$(Q;&0>2J+5_Cq0W2I_#}Zk=ErfUj-64?VAlMQGasu@_}i)0BA)(reB4 ziJ;6FTCcU(697Fr;`@+DYl*o9p|af=!V6Yq7kmo=^JmC(RgSe3MOWr4mDG)V=7w(d zbCh6Jo_RM@_!6Aep7LJ{h40rPeiXG8uL1m17{lbLSxe+a1^Gz*yY=KMPlxZHe= z_1T%b76LtNeuk-?G4X!H+-Uw9ZP0dR`6CG2ZoUa2ww)!#xyQ_9YG-Fre?DvOAWtCs zRcOUy<~oY^94XsV=F==_m;Vb$;5pnJK??0YX_AYL8K)v@PTqokjIZ8xO#KN#x zwmy5$gMY#O$iRCyeXpZL-p|1&ggitO!Xo7!gpRD~EToEL5$|PVSN#PQT~lcCbj|n) z99(gMuCIAe`c@W{M`Jy|M5)&ln}V)Pp+AiBuPN2&rXYCf5;-dqtOQ(v_YTpvY;M*i*?N=mrU>OA_2{VHV0B<&%ZGtUgI+I70?V9N( zPayTA)>i~YS#zTZlIM{&*3UM&Nw7SfOw~bEZAA&zyyD_vrOu%03fQeRZ3d4mbzLY_ zkLVRN13TOEpQ4>)$BpcnlFmHeYr?s%{QfSc-AS6qdfmjid%HGc+{ERT=me7 zrd}P#<4+@uvM7sPs;S>qNJxXny$~Jcy9~W{UAe(I3(rS&eLXh;+jOoWN%OeWM)O;V zO;JM{ho`5ubU24yUo6efv((i1o2CpLy0Nv&>3mbf%;Qvu=dHT%VuU^4z(S_!8m){x zgS9g~9agGox0%nW5RYWFYOt-9rwuLN^cmerf)0!1syvklH$7pBdcL1=;)wo=sJ$Ha zJ>P>7ZF*3rz=PdPs;c)vGEE&O4|_8eTPQvSilJ%F78+VC9+&HuP0{#@(e*am zDSeg4=sF8+_L^ZcHr#1Qx8%{fu8-#;bQ$JM+47`ai%(d5?XX}Q?h;Mp;d?5|E>S&1 zzu`@TfDAmC*EveZ$dTxy63x`tB$JS6D}nB}VUb}FlKtEyyX3Cp8+APSuSoLi_$?*i z&o&G~V(v@w>+~hwt>el6wIsie|0~9b4ciTako><%^6T^^ezT4zKko~qM4%2Di2=1> zqtAag@aCCV8f?t6r%0DW)El!U;5N^7BVb9uZ?1tNZp@KDj=2^E-o@92UYYp}T4-Z|#7s8dVPJv;D$QS@gKR9$p-q`-(y(nT$!FQ;VzUl~s+o-T z+tgOTix0ldUiddk_vHl#gKH&ml<$+U@S8gFi8;zBI@kb&>znUE)H;cB&qNd*32p-b`f_9ZWgMHIGq`O4LF|(NW%8$h8qFw&{{0X2JUtI?8t$48*3(1J7%EBKI zsiz%s>NrKWN$G4*(NW${Kw6$(QUY6a3d-~-#UR-6f-9%go{{j*OeUr0V=QS*C&g<7_+PKp;rG=Wawm)OVa__{0SCxA?V_jA(XJs!%q zMmGoV?4$-p-Il%px=cqS3ODg)+q@hQ)U)CI6}FczKVZo0i&vvkytaYKqvRgcH#B)?DwDu>Gh6fnQgYs8snwPAk z+bB;S=Di)JHU+$Mm8!9x9(YbCpU;q@^D@?P3BSSC${m zi^lhZI(F&)!Fyd&2H4H}F~{n-&Xsc~Ao~XIdf9O~Ev)VxQwZ2_y#A$&E^|g5efva4 zvu$`QES0Uw`35Y0$5*BhkeipqQWdwOpPR^Na`O&Zs#YrJHXpd}pF%)xUM)+{TcYoq zNI-7hI7`p_Ypm_Jrx1{v7tzx5mgsLyBp^5Mr={neYk~XkQwYe-Yip^z?HQfWyfcx2 zN$`v!RRFtLe@zKoY{)#8XBRpVt&BzNFHaaUedcjSD$Z8Md#Mvo8!~_9b+$|b_v&mM z3ZAMj%NJt)vUP672(e7|DU zyg~+eGfsv-<-3<@-8_NZuO_ixUZV2ynp^>$OAJ2|1%iE$SnenmyaC56js$0+2Nv)Y zq2N(CUU4M&d(3Rze4}eynSQ(AY7}Q%xqhRdkNyh%7QwUVO4}ysHwTtuhO~W7*$aqv z-wJVVKdt;#`e&ofwpW+`mHq>$(e|41d?f9D-3@c>AIvP9WX&kjM7L+W%inbBXq6lYVs>$3XYXq_^K> zs3ZLv-B8~p{aWqcb}Ib4wEtR6gtv!FW-#Bks^IS_ZGhi<7%Jqwfew%3vv_l+fY)jY z7%brNeF4w+bN%LKj8VA-=BI$i2}Utk+`G^-cdV2*K`JYEtTU@Q%Wc3M{CSjO$9f)s zA<%~Gc5IM<%ls7NxMQOP+~zLEY?6T2Tn_8HW3vSOW?T5iX7;V3pIL(zBa5RNkQ8Ya9`0u|4LWV#K$$}Q_+9vV5RAQ_dE0OP`D7(%OqNkIIP}g)KQ$K8CHw`#Rk$F)R3Vs#RR9TZif9gY$^9tW#hq>+F$esj} z^ZJ7rDT@GNvwgP);FN@4b5PQ5NJYR&q>U|K%rIsci_u^mCo)0IXyx-9oeHt=%ZGPM7*$mE;&l|EDi%MaC28+?dzK{h`H znzt=dQC?oJ$Rf^5bCmT*`e>7~c+abV+e2R7=gQ(0iT2N9igkhORCsldy2@CAR?mF- z*|_BvP;8{*L>Z5u7_Ldi)yCaqzQ%Y6;MlR5L#PTLmiI!SijA$VIF^6L2keMqqcbJb z!-laL#Mc@-sph;}GVMDkKGMAo=xMKj$M!2P@4sY`q@1^2z7G$teMrThhes8#R+C=_ zl?P@mc@<=OAkd@C+A6sbQf?xe25csN!uorZbJ{DFu)DXG$sL->yhyT{DL8jilb1m1 z>d-Q{PcnzMK2&)P2+s!Lu#*;xF$;gXN8#d3q1ixGX7Lqc)a9fjiJ;?Nwb=7)?Ypn~RnV-`bd zGPky01U1qbQss|MIT-@`un`DERQcmYa#`ae#ulik%cC!*q6~bT*Y=HDsuyG8Yz!)w zKZ~+(UE6ZKaVd)7%91dW$L%VNyCJ;Vo==L+2(=Rv=^oMj<3faD_|0a`rr9~DYGAyx zyBFf`a9siXy$IfoUp?!0gK+~~HG4DM1vZ0;g5c8Eon+_*{tE~`N(RcTVX;m10wjqp zfntLFMYPx@c7$s^XiF#job0ax|6d4xo9t}*hU;yrN72RE#V$b1Y%1Ev?Fi!>U`oqs zP6zuVz;kAG6u$}gBEYGYfnUR2HuW_S5KD1B+|5QE(xT%0%8pe-V6;kqvm-KPsAXW}=Z7lFg@ zTtS{+L6;mJ<9hIz&lppF!P>lon9qXbe*BuZ79tAIbEts2(bx=`|J}~XxCo|3gW2fb)fl!E{HK#&HRNehz1b*QEL{YPR(>`Spqpu74%k6H}eWBpVxs><$d5? z2p4C;88U7A$GdSiARgU0hmFQ_j5AV0Y%}S?2dTj9XaHEi9w4b;}BZPW3Uvf*$afd?WlN zOy7(y$oOp_KQ;rmGXUq~XB@zb;sp~Y7=`&}-lV)!@`^y@s!?X%(sCk6lCP{Pe>*I< zt4R@<)0Jf{u}l=)eX3wQrC?ZSoo+Q-B*2zND!2ey`-*^ARE`F)V>~2eOqOA^7a8Em zu0l$+z*t3wnP*v&T9uzsIl@%sbCS=UiPR>8G;e}|0$b+PNmC0ZVgg~83sa|pB14iu zK1^YPT|UVc%9qT-jxU<1$x(ii7rRk}C6Pit=Vkc?SU>cpO3sDx;`I7s!=P zv$UKfj_goITXtYl1rxVUOo?9^9+9fcuXOfh$llD9se81{JvGMCaw(Bia#1`gWu zK7L|HOB?BEKl7P~X35gcnC%GGN>U@S!Mye&O^^4IQi-I{xhZ|ftA$jk0{QqudjPmH zW9!ZYkE$zjO?-4Y8mdq#hNM}sA`wzmEn2s#j5$rV`cb6fcI7JL9m0|tC7D+JSdqlT zeCw+WYE!94a$^l9W)`j9T2$UGnpKu;ZM*5pYmC)J-9?pECS_DHS~n(*PDpan=}ab@ z%{0YP+mjr%o!ShYNoh-EN?Qi=m`znOT~BjWu9oM?)R}3lgl44RrX%Q21y4z`q3~Md zx-_S{Qr$$9b_NkT-I;AzdR-)ypJgW}N`V1wicwdz#dvJFwRPf-D%VbHyYS9w)@1+{ zE}h%jU*%3$|LSyggH&)lWjBo7?b#r;x~D#;PN!JdzvpU`QD;}uE(Xq?>QL7PT~1tt zwDU(DVV1NGorLrnrS`TsQVQ3EZ2SwWnzTV+HVYgB)7++5b(n3WB1Y@1yj^zPMVW!4qIa?s}!3Z zH^fq%QpC2xX0Vbur0Lj7TZ01LPOOqpFFkJ5MzlxGg!Lw2fSVD=9yO>Lk`?U_lc}x!7vP;tVI7Tada+dq>ximS`WgaMVb83Q4`%Ut%z& z^EiEbAFT&Rh4YijCQ5MuM;CN_t@L_;xiH<*AP%ozoepl^NgX}Ax!6dVavT#F>C#|< znfpNl8T##6m}Gg0u^gR^Ww{h_&g4pGeVHK!M0%h$`yU|2Zbpr{+(@+)-r`}%)YL2UN?%CXf? zoLS>CD~V*%JFK0sc3dd2+*}up5zV%^#i)U3_)7k*C?Sn(ddWV9SoW{MJht^1lgXXH zdT>>^hOvh6k34*_4G%+tn2PlkUe3YKWlVMDySVH##8Fu;=W~4K0%N0DP_um6lJ(Q4 zEv_?j5`8ZG&12&{5Hs-@nZ`;yYa?R%@Y{#qrTATq-$(F!7{BN6`#OG-arR31jN45F ze+r-ZJ39Y>gDXJr<-qZj!10pKR{@{D9zN#IvyCxxH<-Jw7H2FL-4u3$l!ByzDDPJ za6CVUuv?+0{#1IPT6<8x=jPGptCai2_Q4jex(JE^5`vewht zK_^IO7o8{^Hyv{yoy+Ka3k7%I0AJRfaNPINw~Wpc4Dukre1<;J;IGq137Oxe?^Qa# zhLimc9G4q2NLK}7T^@YH&Xru=KkGLQz?a&d= zUuYD0EPM#jv&K{4{iG+$yM4QP-XgD=1#SrwT34UfyrI_xpL zMZ^xdrWwqIiF?hTDL**P=iG*8h8G`ll!_g`@Co4FINtz8@ea4)HNT7kyNW&TUQdJ9 zSOeA~^T`WQ2d`Q3Jx`gg9MXRNJOf2HkQkDF-J9^ZNjrRDTSXc{uVaC@x9uBaHx1Rv^&_{9ScO_(X_x|FgBzDfnj{|dFv~CWp=m@M@w`_G_!^Xgt){f3)TRH<9Hv~3qX>DDIC*1b&kM(*YA`Su90M5x?Yv zBZFZC2cy+P{Rw!&Bcbq6A`%^pBLH;_?XC{>2jhL!L$PQg9AXS2LOp5W#XZCQ z{Xh ziw#B*F%)45$ILR(AFm#Wc8B{HM+PH_NU*;;JQ5CREs#C}(NkO$y`vDRMhH@=ZKZ3d zS1}yY210RksbFtB&=pCGT>!#hS0s=K_NLhJT?E}*Hb_UYn>H06WP?$eRG@t$x;CT` z7>jDMGPC1coB8dfmq5Q0YK?xGT^e7ziSZp5AaGgmynKj7l&NSBZf@Uv!wt zzBkxE999G2foN=h0DU$b3j{-Zh9fZ`yJG#}K^5wQc%y;-NFp2y_Q%0Yq&@1 z66gp(%F$RL6z%U1Cc=nD+o47J1N&$KXlu}q;tALU5eLKlVIbHy1Azom-xuf#b_YVh z>3RnDh6CZjZWY+ok$?%xpxLYTh2n|m@IY`x1>?}Cfw1cD=c^yUhvGvpUb{AQMEm2d z5g3Y4us@6f?Nx#G(i_7)^g#$JS@QT$FcenMqC~WxnQCTOIKiL`0+Uz}iK0b=@$kHM z=*fzCty|W1%nc|U#6w-f{Q-2~@SfrDU?|)Ted&*c_KTH*s8pz-9!U>$>7?iP^bg1T zT2UYv=R_;Mznc-gvETr@XIhcjtzZ=rfzWU)7Kra3 z=z^7C{riLp@}%~4M|yfhK6a-RiKC04)PbHshNxB)H*3ZQPek{HR9zi%4+Q&RSwRzo zSeW!kPi#N}G)HLDSTGdmj`T*LPJuvlIHAxZ2O{w>7*VV4{YW?wiT6aHu2j0ADCxw7 z5rtZ^w9pw9f;PmULlnRMYvd%Gw$)R@XPJTRD2F6pUA z8$B46;gEp5_J#U%+tt<4YzGptAPUNNA zRl?pbT$rXgf?iU&M7m+LN6h=XHCU7GY0$K_p^k>YfL1UR7L~x~L?Ck&SRslD71Ws` zZM4g(_I0fa%8D+D%Vf}1yJ&VZy;t$Hc0wGOo5i5HvBi`cCJxQbf%v|7C^*<7JrX?~ z{Sv)|mPICo+Azzk@7+}~7-t`A-4faYWn}N(ht5rF-2n677Y^-)$q$7S?H!5v(pAvu zpzEE1O^}1KtD#^*!r@prj-iFR-w_xXPJ~BPPpChNn(xDyWLvY|XjIG@%0vV49^I-@ z+jp9ZKsdtru3h&YyY5XgTBOP6d=-xcIo@DYi}WWj$nFj5LWxBT$#gQ>!)dMP*!X>P z9@W~hEEt6ML)!iQfjB3ur$ofD##uNOAAbYCV4Hzw3M@HEH216L30v)7j@9rG02h}&d%RpCm zd{^p;K%7*O;F!bb%6VuVHn1o+1w-3_k7y;WS?(_l^@YePTI~mF9VokJ+vi#uP(}7&Owr+g5ofe zz;rAQ5yS)W@Q@yeF>O#iLjmX=T2=KV!Y~{l=a{b5FmqCp98U(iIB(OvRGE@W2bVdc%$lHyA&gRDq&wB#xHHN^9HS>Fi@LB#JFPMi8xAjVtbEe? z>T%>n({&cI~^ZiShPpa zjsV8lfk;T{{vc_~W(|5dO1(GSJx|HJ|GkRuH2$JRdH|$xmQgP`j$(*iACO*)nnn^F z=GYH1+k5m#G!{jDe?l~(KA;Api2y%?gp|gd*Bz%3<4o%GEJAt_2CXnxU6@5iqL@hU zSM2NWRefER_ZZ-@_!_6u4X6a;*3-sgjfv)yrFcEc!C7^8xNEo<{#1{bg+n7(k8Cr? zD$8mJGnqQoBf6mW_Bee%Y1U}O234Xj0+WUrlq7^XE|=%^GO>karxl40LG5Hr8|adS zckcie7?^<#Cx&CG#S-QMu}Bz-qOgTPdn?L_sT|ahW(t!cT2b!S1!a4xu?O;Hp<#Ll zVLl?=-220Vg}ZTyn5@>u)Qr0NL=>YP7epA~paKyji<_<-X1F|K=7SuD0$o_c$=W#3 zDN83?6~|ej%}uV*Sblp#E;@=`6>dI=DyJqPnHt+@PbxQs1~?p{GU#ccK29YgoHBE_ z48_879#h)X@S>MuGFwFdjA0qY=?=O(hE)ne7D)f8UTxYdYi9Cc#m6=HsM&+w-m#}B zGLavvW6k62hm-z+Egf|M4Cb<^PAX0p>J{TQ1hh>rF}c^lWm%W%O^){{G3L6-UY{JN zN0rCXa#~1k!eFl`)X!F(X|IW9rR0QNq#(B$IP8YFTu-eI7p3-7(Q->fcpSmmj@${5 zpRc8ShNk6)s&5@GqEzk1Yl>|7;B&ao|6U0qsFpqh5TQc1(e)=vPN zHO}OS%^Ph-h4dJqSG!RxcA?W@_L`w!H+DY5iM`mi8rRA-X71pOIq(hambn32j{{U_ zFQl`Ln`qduwrAf8OSTxd)dRs;FMi>muHk#kRT{7;Y~9om#iEbf$|yFvwQa#vR~)+} z+|c085Qby!&0x1mwBMF7`V6*mxc1i13SoA=Vn?n%zBQS!G=09f1MxT22M|;KaAC30`H26Mb~|7tiku) z7d+z(#58}h55-L|*?1hk`=*;K^f24}Q@_wvv3sn?DX0HZxdQuwSf^0e{s(>O_(kHo zstfn~s4mVzLrj#j+Hg90rs0ydPqv@z)UM?Ak&Gq@Zth^lB%=`)H&}IH!Ns#0%-iKy zA~1KfxrccTj_67r-@v1Gcj~dbGiqAK5nuWhXTa#ty?UEfY=K_jqT9%-YSci>6@)gS zdb3YY9Aw7`a|W#>D9U?JkXCa22TFXMF=LN`bH(@IZ>1%paX?9BdCZ+#mR1%?dV5GF z8^dwE$&cd!J?xIMPPFS7!erk2zgXlsyF)Ap^m$)uUo~Uf!&%xud9ksElNSuR*c!wh zp)<%KX(o`HbWE+;LVj>6WODE9nlj;^BwP!d=Gb!74nD^Qn zYFK92s{(K$U)gBEsKN1n7?UebPa$VnZo=BiF{=zuj)}p7Q*YMcc$Ui*XErIP7hG;j z5?!(A?lAhQ-h3DH$Fq-3tG0ARI|8j*4PaPCFQfj)?XhVsmX7_S`v>>uhdEIFNBeU1 zSb815-a_w0|HFUPgVwSq9in2=RKuM4+52~xgll=AJEK<(1+nvh?wi2$Q13oQW6~r*K=jfwQIs0S_a#sa%mkDMt5x^-K#?tTz zH={Wlp&Z6Hv&T)l?fu|xh3U97Fy?J~e$$gW*x(^q`gC0rP$+sW!{Z+uI$@%&kAP%S zXP>_YqFv`=vYhM%ixySdJ6kgOPn(``PkYQ^GwsL$_19-fn({qN2=<~j>Sez@AKx3m z@*VT~cN0;Qy$;1>59cxiLzo4zzH&+g#{XdN*FGW&j9z=!L0qFTvLNJTisbsdfqLec zIQy(}G|zk$*qacYv$y29Z`X^%=^-3LynDr*r8YKSxE7E#9rEKc)Sh44+Nl?wV>ZR8 zEq5B$27Xo_t5AKglA6HTBPN&J&fqCi46#AjP=-Wt=*Z(>%9s-o9QeU-cS%b@-?XTc zOOFNJQN7=QT|!D|NY2;v6P`4lxc!QC*yyCD*93&A_v7v1h_6V-qUKTKq=^ms31@ohLJyAuM20nyR-Q zI%JJ(A4t9T_%7S;$bGEo=JC6K$4}fiz)6+t18ml0%(RYQQH?)e-H-LneL{q%?8y!=Nt3lNm{lYaNRXZGy$sIo#;nQyVjb>qaut1B9 z)S}5eQHviT>3Nw@@{SCK`iHy2nj8hjt)m3) zc_jvG`kW9g8-vJ-NGKh()AoiF@I)BR`%vPKBv3K?iqg3_-5u&1j@Q+MP}#odK)5!( z8wR;{1x|)g9JxAHyP~7DqqYN!at^MeiWQnOr?#%XroLvbuJJgLqnSiD>6D|R)6 zFRO<_)grEHXw!Op>1o%dC5H- zs2xiz%N(HW1x!r>YGYSO{M-j82cg28D4~TF8kTh!x`>29fpeUITw=riF@oA=2ZwQR zgTouDs}`9qG=e?DgR(7vilP`j`>?N$GV*>GE}L+s1{!_r}LJ02G^$ z0WdQ`+^K<>;ma5=k{DTFB9v-8)^_yLjR~=2T7U@Qo(_bMZjAlVAvQhQ&0ZI|{2aQ8A87$aY_3{=T%;)UGF(Kr>h^&2ih(U}re<~`uHAq`bblQ?v2caeKzyu+C z;iJC5vq)}Qz^Y*7k(zoU!r37fFIUvUB?U=_x+5avL^tYDEpuBTlAyg$n&L_fz|RT- z=!G;rqJ!0I#ayKW>DCS{t+yViao zz>T!$-sY}cVVvz=afW%}MYp-n=$5PLpp{%)qluANWi#HeXl^z(yPH?Rw`z^iNu~~P z_?@pQlps}w7ZjA&`JxB@QUU1P9`o9k+oTd+=VKji{4JgickTpyg8(Tw-{A0Mo9;>= z@UYxTyxZ6$NIG8U(;04jm1C3JtV22r!f?)wqBvSc{~49n`CNuu<$L4!X2;35xo6FF zd}jn~pPh3$wQC_Lx6wW09JrEeTD%9XaK<^tHsSO-pVx4!Y;sKBOb$NjG2ocKSvdU8 z=O(H(T`H`jov&a}CR31#qa!}&eWOyJ^M;XMJ(ot{aoP#*xVW=RR9ZOOT~eVuskZUD za|_-0GO@?`YKmL=-By9}q-0+Qp+n@#lO{yS1ociwc_f@B0n}1?oYy5-5Tn99X@>G8 zUuW?-udV!-%jeL|7+q24JqVA_dHVtH$Bg?>Bi!l_$1(}{O&bF-w@_p8REmq&WdO&b zr>w`q^Nli>%1eId317^RX9-*b-~4gDhUIAHdf>-OX9w_1=PCQMB9aK4T{ix$4E%tN zpNseY(w~C}FyF_PYpj#+2L)fOZpW8D(w|2VV7~m59_i0B2pFnJ9nPR1ulzp~`a+dc zm7a?Bk5%6{C2E55SB|E~n=Qzd4a3^i{xTh(-vSfiF;HYNTZ}eLdQ{ z68OFhd<*FDc@0L&1Lc%wBk*ITzjqw`CxAcM=1m992oyrjj($5IVEQuXC*U>Fp_X)N zrM@vv`oALHm9Lym?r{BX9D2M6hVtYc_dS^Dz>ifgzQD(FI`4Dx^4m|6XDgSfFN#`r$;7=O||Ce#_d_`^o^#4GME(t%m#Ahz>)Q8M=Uo7}? z_0)1r=eWy74o)Zq`)&HndX0=jPx~^KoF4?fGL>x7_Y&|d|Lw~(il2?*!?z(T#W&jd z<2d*nDDYVMsS*Zn`wB&-crP=FJCqrivn9=gAp8h$AbH@*`A2) z#|8{evjg430|U4}#rFoB5Vo-*iBY6DMA@=zeQTg~!%80I2C!2fXl=8RZ7a8^z{;H) zmaT7Jk$ll*LGK#ra3S2&{Q;o<+OQ=|0S zX?dn!Z8`2j+bHrnY~I^t8U3oz-gGjdk!vlZvG%1Q$`CrhV<0s7IB!OzbF!3yt~mB` zH7j?qk{TfA$}4cLoX#OB%S%V2vF)Afv0iYx7X-}C)yZQ7DKj_mM>7O^d9I+F9STkU zak!5w6VJLwC8la{EQB))KwM}N*ys4L!U^MT&>Gow!X`%zP7rZR2d4%pl)QCXjSFQO zwQPBNHQ!&WA$cEO=~Fe``v;MQhS(XE7+ijd<8*ygAb>a?r<1|<;cY=xBZ^mpwJiLi z_BFAnbk&-0pKU7mYFsj;Ike5t9F89e;}uJ6)AiyomQIaipc6w=sv4Yz48S6xu)GEc zK3?zyUI*nBASbG;D;D1C#P9`2#}DZ_UZT-Xscz-XA+%v8|90U2a_m^tssB@U{tldL^Wlwac{0l%1Qs9GNY?)?o8N&m z?SxrI%Ff}(2SDVBz$J^5f0><;1J7|HG`XZ#g>#($5^@4y3O#^cD?DZj?*uW?YOPI@!5bc_QlZH002cle$9-vDy*FV}3UEn9mW zxFC%m-)=fiejf*pBu@It`KCSZq<*JAneBfIBGdURZ9WISmd*^nGo5wd-5LDOJl=sH zb_8Rmk!&7v-}U){K;%8Z9*F+>+kS8>n;b*v-up5 z$^T*oe@msNbl}SlqYa(*chIlEgVm4p0pgr><>6|EQu5ZJRQo&Wyo!i?{OoR*T*uyS z^E-6o@&6VPl##>ltS|3z^0x&;{paJP=d|OWfusB!{>SWf=wr2{#`;2or0eiI@NbAo z=XchzM{NEBNlxu?_#CL$#i{(Abxfa~u~SYb8HX1!Wf=?^LG}Lu<_`7+ literal 0 HcmV?d00001 From 97beecda1c758f9110546f2c8fdaf21b31769c42 Mon Sep 17 00:00:00 2001 From: Aarush Kansal <56411093+Aarush2k1@users.noreply.github.com> Date: Wed, 5 Oct 2022 16:49:04 +0530 Subject: [PATCH 313/448] Sliding Window Median --- Java/Leetcode/Leetcode 480.java | 46 +++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 Java/Leetcode/Leetcode 480.java diff --git a/Java/Leetcode/Leetcode 480.java b/Java/Leetcode/Leetcode 480.java new file mode 100644 index 00000000..15f70d77 --- /dev/null +++ b/Java/Leetcode/Leetcode 480.java @@ -0,0 +1,46 @@ +/* +Sliding Window Median +https://leetcode.com/problems/sliding-window-median/ +*/ + +class Solution { + PriorityQueue maxHeap=new PriorityQueue<>(Collections.reverseOrder()); + PriorityQueue minHeap=new PriorityQueue<>(); + + public double[] medianSlidingWindow(int[] nums, int k) { + int i=0,j=0; + double[] ans=new double[nums.length-k+1]; + + while(j=nums[j]) + maxHeap.offer(nums[j]); + else minHeap.offer(nums[j]); + + if(maxHeap.size()>minHeap.size()+1) + minHeap.offer(maxHeap.poll()); + else if(maxHeap.size()minHeap.size()+1) + minHeap.offer(maxHeap.poll()); + else if(maxHeap.size() Date: Wed, 5 Oct 2022 16:55:21 +0530 Subject: [PATCH 314/448] lowestCommonAncestor.txt added --- LeetCode Solutions/lowestCommonAncestor.txt | 31 +++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 LeetCode Solutions/lowestCommonAncestor.txt diff --git a/LeetCode Solutions/lowestCommonAncestor.txt b/LeetCode Solutions/lowestCommonAncestor.txt new file mode 100644 index 00000000..5917bff0 --- /dev/null +++ b/LeetCode Solutions/lowestCommonAncestor.txt @@ -0,0 +1,31 @@ +Problem Link - https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-search-tree/ +/** + * Definition for a binary tree node. + * struct TreeNode { + * int val; + * TreeNode *left; + * TreeNode *right; + * TreeNode(int x) : val(x), left(NULL), right(NULL) {} + * }; + */ + +class Solution { +public: + TreeNode* lca(TreeNode* root,int l,int r){ + if(((l<(root->val)) and (r>(root->val))) or ((l>(root->val)) and (r<(root->val)))){ + return root; + } + else if((root->val==l) or (root->val==r)){ + return root; + } + else if(((root->val)>l) and ((root->val)>r)){ + return lca(root->left,l,r); + } + return lca(root->right,l,r); + + + } + TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) { + return lca(root,p->val,q->val); +    } +}; \ No newline at end of file From f00b11dc2afc291f80362adb837ec531ee976d05 Mon Sep 17 00:00:00 2001 From: Legion 4600H Date: Wed, 5 Oct 2022 16:57:53 +0530 Subject: [PATCH 315/448] minDepth.txt added --- LeetCode Solutions/minDepth.txt | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 LeetCode Solutions/minDepth.txt diff --git a/LeetCode Solutions/minDepth.txt b/LeetCode Solutions/minDepth.txt new file mode 100644 index 00000000..5911b7ca --- /dev/null +++ b/LeetCode Solutions/minDepth.txt @@ -0,0 +1,32 @@ +Problem Link - https://leetcode.com/problems/minimum-depth-of-binary-tree/description/ +/** + * Definition for a binary tree node. + * struct TreeNode { + * int val; + * TreeNode *left; + * TreeNode *right; + * TreeNode() : val(0), left(nullptr), right(nullptr) {} + * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} + * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} + * }; + */ +class Solution { +public: + int d=INT_MAX; + int minDepth(TreeNode* root) { + if(root==NULL){ + return 0; + } + if(root->left!=NULL and root->right!=NULL){ + int l= minDepth(root->left); + int r= minDepth(root->right); + return min(l,r)+1;} + else if(root->left==NULL){ + return minDepth(root->right)+1; + } + else if(root->right==NULL){ + return minDepth(root->left)+1; + } + return 1; +    } +}; \ No newline at end of file From 1499771645c8ee7ccbf11a8163dd6b654fcb9d59 Mon Sep 17 00:00:00 2001 From: Legion 4600H Date: Wed, 5 Oct 2022 16:59:24 +0530 Subject: [PATCH 316/448] rightSideView.txt added --- LeetCode Solutions/rightSideView.txt | 36 ++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 LeetCode Solutions/rightSideView.txt diff --git a/LeetCode Solutions/rightSideView.txt b/LeetCode Solutions/rightSideView.txt new file mode 100644 index 00000000..ddcdbcc2 --- /dev/null +++ b/LeetCode Solutions/rightSideView.txt @@ -0,0 +1,36 @@ +Problem Link - https://leetcode.com/problems/binary-tree-right-side-view/ +/** + * Definition for a binary tree node. + * struct TreeNode { + * int val; + * TreeNode *left; + * TreeNode *right; + * TreeNode() : val(0), left(nullptr), right(nullptr) {} + * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} + * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} + * }; + */ +class Solution { +public: + vectorv; + int rightView(TreeNode *root,int level,int &maxLevel){ + if (root == NULL) + { + return 0; + } + if (level > maxLevel) + { + v.push_back(root->val); + maxLevel = level; + } + rightView(root->right, level + 1, maxLevel); + rightView(root->left, level + 1, maxLevel); + return 0; + } + vector rightSideView(TreeNode* root) { + int level=0; + int maxLevel=-1; + rightView(root,level,maxLevel); + return v; +    } +}; \ No newline at end of file From d2949d1c31fb2e51c00cf57f9f7340b173e1fd84 Mon Sep 17 00:00:00 2001 From: Legion 4600H Date: Wed, 5 Oct 2022 17:02:19 +0530 Subject: [PATCH 317/448] sortedArrayToBST.txt added --- LeetCode Solutions/sortedArrayToBST.txt | 30 +++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 LeetCode Solutions/sortedArrayToBST.txt diff --git a/LeetCode Solutions/sortedArrayToBST.txt b/LeetCode Solutions/sortedArrayToBST.txt new file mode 100644 index 00000000..047e043d --- /dev/null +++ b/LeetCode Solutions/sortedArrayToBST.txt @@ -0,0 +1,30 @@ +Problem Link - https://leetcode.com/problems/convert-sorted-array-to-binary-search-tree/description/ +/** + * Definition for a binary tree node. + * struct TreeNode { + * int val; + * TreeNode *left; + * TreeNode *right; + * TreeNode() : val(0), left(nullptr), right(nullptr) {} + * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} + * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} + * }; + */ +class Solution { +public: + TreeNode* h(vector& nums,int s,int e){ + if(s>e){ + return NULL; + } + int mid=(s+e)/2; + TreeNode* root=new TreeNode(nums[mid]); + root->left=h(nums,s,mid-1); + root->right=h(nums,mid+1,e); + return root; + } + TreeNode* sortedArrayToBST(vector& nums) { + int s=0; + int e=nums.size()-1; + return h(nums,s,e); +    } +}; \ No newline at end of file From 42c453c19caa9e728b56192f24e4b663c59c89cf Mon Sep 17 00:00:00 2001 From: Jashan Warraich Date: Wed, 5 Oct 2022 17:34:31 +0530 Subject: [PATCH 318/448] Create 0-1Knapsack.cpp --- Dynamic Programming/0-1Knapsack.cpp | 128 ++++++++++++++++++++++++++++ 1 file changed, 128 insertions(+) create mode 100644 Dynamic Programming/0-1Knapsack.cpp diff --git a/Dynamic Programming/0-1Knapsack.cpp b/Dynamic Programming/0-1Knapsack.cpp new file mode 100644 index 00000000..1668c34a --- /dev/null +++ b/Dynamic Programming/0-1Knapsack.cpp @@ -0,0 +1,128 @@ +// Q173 https://www.codingninjas.com/codestudio/problems/1072980?topList=striver-sde-sheet-problems&utm_source=striver&utm_medium=website&leftPanelTab=0 + + + + +// Recursion +// Time: O(2^n) +// Space: O(n) +#include +int ks(vector &val, vector &wt, int ind, int W){ + if(ind==0) { + if(wt[0]<=W) return val[0]; + return 0; + } + int nt=ks(val,wt,ind-1,W); + int t=INT_MIN; + if(wt[ind]<=W) + t=val[ind]+ks(val,wt,ind-1,W-wt[ind]); + return max(t,nt); +} + +int maxProfit(vector &val, vector &wt, int n, int W) +{ + return ks(val,wt,n-1,W); +} + + +// Memorisation +// Time: O(N*m) +// Space: O(N*M)+O(N) = auxiliary stack space+ dp +#include +int ks(vector &val, vector &wt, int ind, int W,vector> &dp){ + if(ind==0) { + if(wt[0]<=W) return val[0]; + return 0; + } + if(dp[ind][W]!=-1) return dp[ind][W]; + int nt=ks(val,wt,ind-1,W,dp); + int t=INT_MIN; + if(wt[ind]<=W) + t=val[ind]+ks(val,wt,ind-1,W-wt[ind],dp); + return dp[ind][W]=max(t,nt); +} + +int maxProfit(vector &val, vector &wt, int n, int W) +{ vector> dp(n,vector(W+1,-1)); + return ks(val,wt,n-1,W,dp); +} + + + + + +// DP +// Time: O(N*m) +// Space: O(N*M) +#include +int maxProfit(vector &val, vector &wt, int n, int W) +{ vector> dp(n,vector(W+1,0)); + for(int cw=0;cw +int maxProfit(vector &val, vector &wt, int n, int W){ + vector p(W+1,0); + vector c(W+1,0); + for(int cw=wt[0];cw +int maxProfit(vector &val, vector &wt, int n, int W){ + vector p(W+1,0); +// vector c(W+1,0); + for(int cw=wt[0];cw=0;cw--){ + int nt=p[cw]; + int t=INT_MIN; + if(wt[ind]<=cw) + t=val[ind]+p[cw-wt[ind]]; + p[cw]=max(t,nt); + } +// p=c; + + } + return p[W]; + +} From 603bee3b620e8fbbc8f09890025aaa2a71269b3c Mon Sep 17 00:00:00 2001 From: Ayush Kedia <83538020+ayushkedia05@users.noreply.github.com> Date: Wed, 5 Oct 2022 17:36:45 +0530 Subject: [PATCH 319/448] Create left view of tree.cpp --- left view of tree.cpp | 61 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 left view of tree.cpp diff --git a/left view of tree.cpp b/left view of tree.cpp new file mode 100644 index 00000000..8d5d889e --- /dev/null +++ b/left view of tree.cpp @@ -0,0 +1,61 @@ +// C++ program to print left view of Binary Tree +#include +using namespace std; + +struct Node +{ + int data; + struct Node *left, *right; +}; + + +struct Node *newNode(int item) +{ + struct Node *temp = (struct Node *)malloc( + sizeof(struct Node)); + temp->data = item; + temp->left = temp->right = NULL; + return temp; +} + +// left view of a binary tree. +void leftViewUtil(struct Node *root, + int level, int *max_level) +{ + + if (root == NULL) return; + + + if (*max_level < level) + { + cout << root->data << " "; + *max_level = level; + } + + leftViewUtil(root->left, level + 1, max_level); + leftViewUtil(root->right, level + 1, max_level); + +} + + +void leftView(struct Node *root) +{ + int max_level = 0; + leftViewUtil(root, 1, &max_level); +} + +int main() +{ + Node* root = newNode(10); + root->left = newNode(2); + root->right = newNode(3); + root->left->left = newNode(7); + root->left->right = newNode(8); + root->right->right = newNode(15); + root->right->left = newNode(12); + root->right->right->left = newNode(14); + + leftView(root); + + return 0; +} From 28c24a2754202b420306c4613ffd5e49bb2ada97 Mon Sep 17 00:00:00 2001 From: Aarush Kansal <56411093+Aarush2k1@users.noreply.github.com> Date: Wed, 5 Oct 2022 17:44:22 +0530 Subject: [PATCH 320/448] Maximum Sum Circular Subarray Java Solution --- .../918. Maximum Sum Circular Subarray.java | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 LeetCode Solutions/918. Maximum Sum Circular Subarray.java diff --git a/LeetCode Solutions/918. Maximum Sum Circular Subarray.java b/LeetCode Solutions/918. Maximum Sum Circular Subarray.java new file mode 100644 index 00000000..34f90531 --- /dev/null +++ b/LeetCode Solutions/918. Maximum Sum Circular Subarray.java @@ -0,0 +1,23 @@ +/* +918. Maximum Sum Circular Subarray + +Given a circular integer array nums of length n, return the maximum possible sum of a non-empty subarray of nums. +Input: nums = [1,-2,3,-2] +Output: 3 + +https://leetcode.com/problems/maximum-sum-circular-subarray/ +*/ + +class Solution { + public int maxSubarraySumCircular(int[] A) { + int total = 0, maxSum = A[0], curMax = 0, minSum = A[0], curMin = 0; + for (int a : A) { + curMax = Math.max(curMax + a, a); + maxSum = Math.max(maxSum, curMax); + curMin = Math.min(curMin + a, a); + minSum = Math.min(minSum, curMin); + total += a; + } + return maxSum > 0 ? Math.max(maxSum, total - minSum) : maxSum; + } +} From b9880e644d42ec8c6294091f32d7c06a2174c44f Mon Sep 17 00:00:00 2001 From: Kartik S Date: Wed, 5 Oct 2022 17:55:25 +0530 Subject: [PATCH 321/448] Add : Balanced Brackets and InfixToPostfix program in Java --- Java/Stack/BalancedBrackets.java | 32 ++++++++++++++++++++++++ Java/Stack/InfixToPrefix.java | 42 ++++++++++++++++++++++++++++++++ 2 files changed, 74 insertions(+) create mode 100644 Java/Stack/BalancedBrackets.java create mode 100644 Java/Stack/InfixToPrefix.java diff --git a/Java/Stack/BalancedBrackets.java b/Java/Stack/BalancedBrackets.java new file mode 100644 index 00000000..5b6157f0 --- /dev/null +++ b/Java/Stack/BalancedBrackets.java @@ -0,0 +1,32 @@ +//Program to check for Balanced Brackets in Java + +import java.util.Stack; + +public class BalancedBrackets { + public static boolean isBalanced(String expression) { + Stack bracketStack = new Stack<>(); + int n = expression.length(); + for(int i = 0 ; i < n ; i++){ + char bracket = expression.charAt(i); + if(isNotB(bracket)) continue; + if(isOpeningB(bracket)) bracketStack.push(bracket); + else{ + if(!bracketStack.isEmpty() && validOpeningB(bracket) != bracketStack.peek()) return false; + else bracketStack.pop(); + } + } + return bracketStack.isEmpty(); + } + static boolean isNotB(char bracket){ + return !("(){}[]".contains(bracket + "")); + } + static boolean isOpeningB(char bracket){ + return "({[".contains(bracket + ""); + } + static char validOpeningB(char bracket){ + if(bracket == ')') return '('; + if(bracket == '}') return '{'; + if(bracket == ']') return '['; + return '\0'; + } +} \ No newline at end of file diff --git a/Java/Stack/InfixToPrefix.java b/Java/Stack/InfixToPrefix.java new file mode 100644 index 00000000..8f45f8a4 --- /dev/null +++ b/Java/Stack/InfixToPrefix.java @@ -0,0 +1,42 @@ +//Java Program to convert Infix Expression to Prefix +import java.util.Stack; + +public class InfixToPrefix { + public static void main(String[] args) { + System.out.println("1+2+3 -> " + infix2Prefix("1+2+3")); + System.out.println("A^B-(C+D) -> " + infix2Prefix("A^B-(C+D)")); + System.out.println("(P/L+(F*J) -> " + infix2Prefix("(P/L+(F*J)")); + } + public static String infix2Prefix(String expression){ + if(!BalancedBrackets.isBalanced(expression)) return "Invalid Expression"; + Stack operatorStack = new Stack<>(); + StringBuilder prefixExpression = new StringBuilder(); + int n = expression.length(); + for(int i = n - 1 ; i >= 0 ; i--){ + char scanned = expression.charAt(i); + if(Character.isLetterOrDigit(scanned)) prefixExpression.append(scanned); + else if(scanned == ')') operatorStack.push(scanned); + else if(scanned == '('){ + while(!operatorStack.isEmpty() && operatorStack.peek() != ')'){ + prefixExpression.append(operatorStack.pop()); + } + if(!operatorStack.isEmpty()) operatorStack.pop(); + } + else if(operatorStack.isEmpty() || operatorStack.peek() == ')') operatorStack.push(scanned); + else{ + while(!operatorStack.isEmpty() && precedence(operatorStack.peek()) < precedence(scanned)){ + prefixExpression.append(operatorStack.pop()); + } + operatorStack.push(scanned); + } + } + while(!operatorStack.isEmpty()) prefixExpression.append(operatorStack.pop()); + return prefixExpression.reverse().toString(); + } + static int precedence(char operator){ + if(operator == '^') return 3; + if(operator == '*' || operator == '/') return 2; + if(operator == '+' || operator == '-') return 1; + return 0; + } +} From 872f4791dd9a9616c00202a2cbd1eedc1ac14d47 Mon Sep 17 00:00:00 2001 From: nilesh05apr Date: Wed, 5 Oct 2022 17:55:26 +0530 Subject: [PATCH 322/448] add: N-Queen Backtrack solution --- Java/LeetCodeN-Queens.java | 67 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 Java/LeetCodeN-Queens.java diff --git a/Java/LeetCodeN-Queens.java b/Java/LeetCodeN-Queens.java new file mode 100644 index 00000000..b29762b3 --- /dev/null +++ b/Java/LeetCodeN-Queens.java @@ -0,0 +1,67 @@ +/* Question Link: https://leetcode.com/problems/n-queens/ + * The n-queens puzzle is the problem of placing n queens on an n x n chessboard such that no two queens attack each other. + * Given an integer n, return all distinct solutions to the n-queens puzzle. You may return the answer in any order. + * Each solution contains a distinct board configuration of the n-queens' placement, where 'Q' and '.' both indicate a queen and an empty space, respectively. + */ + + + + + + +class Solution { + public List> solveNQueens(int n) { + List> results = new ArrayList<>(); + if(n ==0) return results; + backtrace(results, new ArrayList(), 0, n, new boolean[n]); + return results; + } + + public static void backtrace(List> result, List list, int level, int n, boolean[] used){ + if(level == n) result.add(new ArrayList(list)); + else{ + for(int i = 0; i < n; i++){ + if(used[i]) continue; + if(isValid(list, level, i, n)){ + list.add(createQueen(n, i)); + used[i] = true; + backtrace(result, list, level + 1, n, used); + used[i] = false; + list.remove(list.size() - 1); + } + } + } + } + public static boolean isValid(List list, int row, int column, int n){ + if(row > 0){ + String cmp = list.get(row - 1); + for(int i = 0; i < row; i++) + if(list.get(i).charAt(column) == 'Q') return false; + int tempRow = row; + int tempCol = column; + while(--tempRow >= 0 && --tempCol >= 0){ + if(list.get(tempRow).charAt(tempCol) == 'Q') return false; + } + tempRow = row; + tempCol = column; + while(--tempRow >= 0 && ++tempCol <= n-1) + if(list.get(tempRow).charAt(tempCol) == 'Q') return false; + } + return true; + } + private static String createQueen(int n, int index){ + StringBuilder sb = new StringBuilder(); + int i = 0; + for(; i < index; i++) + sb.append('.'); + sb.append('Q'); + for(++i; i < n; i++){ + sb.append('.'); + } + return sb.toString(); + } + + +} + +/*contributed by: nilesh05apr */ \ No newline at end of file From fecb6951022e52f083d60e4f66094028fa45465b Mon Sep 17 00:00:00 2001 From: Soham Datta Date: Wed, 5 Oct 2022 18:02:56 +0530 Subject: [PATCH 323/448] Added random pass gen and resolved issue #615 --- Python/passwordGenerator.py | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 Python/passwordGenerator.py diff --git a/Python/passwordGenerator.py b/Python/passwordGenerator.py new file mode 100644 index 00000000..8931f5a9 --- /dev/null +++ b/Python/passwordGenerator.py @@ -0,0 +1,7 @@ +import random +import string +print("Welcome to the Password Generator!") +total = string.ascii_letters + string.digits + string.punctuation +length = int(input("How many characters would you like in your password? ")) +password = "".join(random.sample(total, length)) +print(f"Your secure password is: {password}") From 3f1ba045020b4f5e0ff2941901f0892f51ecc94b Mon Sep 17 00:00:00 2001 From: Ansh <96686986+Ansh-Kushwaha@users.noreply.github.com> Date: Wed, 5 Oct 2022 18:07:25 +0530 Subject: [PATCH 324/448] Create PolynomialAddition.cpp --- PolynomialAddition.cpp | 136 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 136 insertions(+) create mode 100644 PolynomialAddition.cpp diff --git a/PolynomialAddition.cpp b/PolynomialAddition.cpp new file mode 100644 index 00000000..c10bb88f --- /dev/null +++ b/PolynomialAddition.cpp @@ -0,0 +1,136 @@ +// Github username: Ansh-Kushwaha +// Aim: To store and add polynomials +// Date: 05/10/2022 + + +#include +using namespace std; + +struct term{ + int pow, coeff; + term *next; +}; + +typedef struct polynomial{ + term* addTerm(term *first, int p, int c){ //adding term to the polynomial + if(p<0){ + cout << "Undefined power" << endl; + return first; + } + if(first == NULL){ + term *tmp = new term; + tmp->pow = p; + tmp->coeff = c; + tmp->next = first; + first = tmp; + return first; + } + else{ + int pos = 1; + term *q = first; + term *nxt = NULL; + while(q->next!=NULL){ + nxt = q->next; + if(p > q->pow) + break; + else if(p < q->pow && p > nxt->pow){ + pos++; + break; + } + else{ + q = q->next; + pos++; + } + + } + if(p < q->pow && nxt == NULL){ + pos++; + } + if(pos==1){ + term* tmp = new term; + tmp->pow = p; + tmp->coeff = c; + tmp->next = q; + q = tmp; + return q; + } + else{ + term *tmp = new term; + tmp->pow = p; + tmp->coeff = c; + tmp->next = q->next; + q->next = tmp; + return first; + } + } + return first; + } + + term* add(term* one, term* two, term* res){ //combining two polynomials + while(one!=NULL && two!=NULL){ + if(one->pow == two->pow){ + res = addTerm(res, one->pow, (one->coeff+two->coeff)); + one = one->next; + two = two->next; + } + else if(one->pow < two->pow){ + res = addTerm(res, two->pow, two->coeff); + two = two->next; + } + else if(one->pow > two->pow){ + res = addTerm(res, one->pow, one->coeff); + one = one->next; + } + } + while(one!=NULL || two!=NULL){ + if(one!= NULL){ + res = addTerm(res, one->pow, one->coeff); + one = one->next; + } + if(two!= NULL){ + res = addTerm(res, two->pow, two->coeff); + two = two->next; + } + } + return res; + } + + void printPoly(term *first){ //function to print the stored polynomial + char var = 'x'; + while(first!=NULL){ + cout <coeff << var << "^" << first->pow << " "; + first = first->next; + if(!(first == NULL)) + cout << "+ "; + } + cout << endl; + } +}poly; //Data Structure (Linked List) based polynomial addition + +int main(){ + term *first1 = NULL; + poly p1; + first1 = p1.addTerm(first1, 0, 1); + first1 = p1.addTerm(first1, 5, 2); + first1 = p1.addTerm(first1, 3, 4); + first1 = p1.addTerm(first1, 4, 9); + + term *first2 = NULL; + poly p2; + first2 = p2.addTerm(first2, 0, 2); + first2 = p2.addTerm(first2, 5, 9); + first2 = p2.addTerm(first2, 3, 10); + first2 = p2.addTerm(first2, 7, 3); + + cout << "First Polynomial : " << endl; + p1.printPoly(first1); + cout << "Second Polynomial : " << endl; + p2.printPoly(first2); + cout << endl << endl; + + term *firstR = NULL; + poly result; + firstR = result.add(first1, first2, firstR); + cout << "Sum of polynomials : " << endl; + result.printPoly(firstR); +} From dd842fe009459db922701575e7febd61094fc055 Mon Sep 17 00:00:00 2001 From: JYunth Date: Wed, 5 Oct 2022 18:11:04 +0530 Subject: [PATCH 325/448] Improve Calculator.py - Added more operators - Added more comments - Fixed Typos --- Python/Calculator.py | 45 +++++++++++++++++++++++++++++++++++--------- 1 file changed, 36 insertions(+), 9 deletions(-) diff --git a/Python/Calculator.py b/Python/Calculator.py index 8afef14c..8d50d831 100644 --- a/Python/Calculator.py +++ b/Python/Calculator.py @@ -24,7 +24,19 @@ def multiply(num1, num2): def divide(num1, num2): return num1 / num2 - + +# Function to return the remainder of the division operation + +def modulus(num1, num2): + + return num1 % num2 + +# Function to return the nearest quotient of the division operation + +def floor(num1, num2): + + return num1 // num 2 + print("Please select operation -\n" \ @@ -34,46 +46,61 @@ def divide(num1, num2): "3. Multiply\n" \ - "4. Divide\n") + "4. Divide\n" \ + + "5. Remainder" \ + + "6. Quotient") # Take input from the user -select = int(input("Select operations form 1, 2, 3, 4 :")) - +select = int(input("Select operations from 1, 2, 3, 4, 5, 6 :")) + number_1 = int(input("Enter first number: ")) number_2 = int(input("Enter second number: ")) - +# The user has selected addition if select == 1: print(number_1, "+", number_2, "=", add(number_1, number_2)) - +# The user has selected subtraction elif select == 2: print(number_1, "-", number_2, "=", subtract(number_1, number_2)) - +# The user has selected multiplication elif select == 3: print(number_1, "*", number_2, "=", multiply(number_1, number_2)) - +# The user has selected division elif select == 4: print(number_1, "/", number_2, "=", divide(number_1, number_2)) +# The user has selected the modulo operator +elif select == 5: + + print(number_1, "%", number_2, "=", modulus(number_1, number_2)) + +# The user has selected the floor division operator +elif select == 6: + + print(number_1, "//", number_2, "=", floor(number_1, number_2)) + +# The user has entered a number that is not in the list else: - print("Invalid input") + print("Invalid operation. Please retry.") From 33d7b7e557c66882d19a43756565fb74abb13248 Mon Sep 17 00:00:00 2001 From: KBhushan07 <94524217+KBhushan07@users.noreply.github.com> Date: Wed, 5 Oct 2022 18:13:19 +0530 Subject: [PATCH 326/448] Add files via upload --- Trees/Leetcode-623. Add One Row to Tree.cpp | 82 +++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 Trees/Leetcode-623. Add One Row to Tree.cpp diff --git a/Trees/Leetcode-623. Add One Row to Tree.cpp b/Trees/Leetcode-623. Add One Row to Tree.cpp new file mode 100644 index 00000000..5f55441c --- /dev/null +++ b/Trees/Leetcode-623. Add One Row to Tree.cpp @@ -0,0 +1,82 @@ +/** + * Definition for a binary tree node. + * struct TreeNode { + * int val; + * TreeNode *left; + * TreeNode *right; + * TreeNode() : val(0), left(nullptr), right(nullptr) {} + * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} + * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} + * }; + */ +class Solution { +public: + + // getting all parent nodes for which we want to append nodes + void getBfs(TreeNode* root, int depth , vector&v){ + if(depth==1 && root!=NULL){ + v.push_back(root); + return; + } + if(root==NULL)return; + + getBfs(root->left , depth-1 , v); + getBfs(root->right , depth-1 , v); + + return; + } + + //creating nodes + TreeNode* createNode(int val){ + TreeNode *temp=new TreeNode; + temp->val = val; + return temp; + } + + + TreeNode* addOneRow(TreeNode* root, int val, int depth) { + + //if depth ==1 + if(depth==1){ + TreeNode* temp = createNode(val); + temp ->left = root; + return temp; + } + + + vectorv; + getBfs(root , depth-1 , v); + int s = v.size(); + + for(int i=0; ileft && t->right){ + temp1->left=t->left; + temp2->right=t->right; + t->left = temp1; + t->right = temp2; + } + else if(t->left && t->right==NULL){ + temp1->left=t->left; + t->left = temp1; + t->right = temp2; + } + else if(t->left==NULL && t->right){ + temp2->right=t->right; + t->left = temp1; + t->right = temp2; + } + else{ + t->left = temp1; + t->right = temp2; + } + } + + + return root; + + + } +}; \ No newline at end of file From 9c11e2a44a723788664e8344f5b34cefa9522c21 Mon Sep 17 00:00:00 2001 From: KBhushan07 <94524217+KBhushan07@users.noreply.github.com> Date: Wed, 5 Oct 2022 18:19:00 +0530 Subject: [PATCH 327/448] Add files via upload --- ...ating Next Right Pointers in Each Node.cpp | 21 +++++++++++++++++++ ...eetcode-222. Count Complete Tree Nodes.cpp | 19 +++++++++++++++++ Trees/Leetcode-226. Invert Binary Tree.cpp | 8 +++++++ ...ode-230. Kth Smallest Element in a BST.cpp | 19 +++++++++++++++++ 4 files changed, 67 insertions(+) create mode 100644 Trees/Leetcode-116. Populating Next Right Pointers in Each Node.cpp create mode 100644 Trees/Leetcode-222. Count Complete Tree Nodes.cpp create mode 100644 Trees/Leetcode-226. Invert Binary Tree.cpp create mode 100644 Trees/Leetcode-230. Kth Smallest Element in a BST.cpp diff --git a/Trees/Leetcode-116. Populating Next Right Pointers in Each Node.cpp b/Trees/Leetcode-116. Populating Next Right Pointers in Each Node.cpp new file mode 100644 index 00000000..408139f2 --- /dev/null +++ b/Trees/Leetcode-116. Populating Next Right Pointers in Each Node.cpp @@ -0,0 +1,21 @@ +class Solution { +public: + + Node* connect(Node* root) { + if(root==NULL) + return NULL; + + if(root->left){ + root->left->next=root->right; + + if(root->next){ + root->right->next=root->next->left; + } + + connect(root->left); + connect(root->right); + } + return root; + + } +}; \ No newline at end of file diff --git a/Trees/Leetcode-222. Count Complete Tree Nodes.cpp b/Trees/Leetcode-222. Count Complete Tree Nodes.cpp new file mode 100644 index 00000000..b6991cb6 --- /dev/null +++ b/Trees/Leetcode-222. Count Complete Tree Nodes.cpp @@ -0,0 +1,19 @@ +class Solution { +public: + vectornum; + int countNodes(TreeNode* root) { + if(root==NULL)return 0; + queueq; + q.push(root); + while(!q.empty()){ + TreeNode*curr = q.front(); + num.push_back(curr->val); + if(curr->left!=NULL) + q.push(curr->left); + if(curr->right!=NULL) + q.push(curr->right); + q.pop(); + } + return num.size(); + } +}; \ No newline at end of file diff --git a/Trees/Leetcode-226. Invert Binary Tree.cpp b/Trees/Leetcode-226. Invert Binary Tree.cpp new file mode 100644 index 00000000..2c79c3c5 --- /dev/null +++ b/Trees/Leetcode-226. Invert Binary Tree.cpp @@ -0,0 +1,8 @@ +TreeNode* invertTree(TreeNode* root) { + if (root) { + invertTree(root->left); + invertTree(root->right); + swap(root->left, root->right); + } + return root; +} \ No newline at end of file diff --git a/Trees/Leetcode-230. Kth Smallest Element in a BST.cpp b/Trees/Leetcode-230. Kth Smallest Element in a BST.cpp new file mode 100644 index 00000000..28a8bd18 --- /dev/null +++ b/Trees/Leetcode-230. Kth Smallest Element in a BST.cpp @@ -0,0 +1,19 @@ +class Solution { +public: + vectornum; + int kthSmallest(TreeNode* root, int k) { + queueq; + q.push(root); + while(!q.empty()){ + TreeNode*curr = q.front(); + num.push_back(curr->val); + if(curr->left!=NULL) + q.push(curr->left); + if(curr->right!=NULL) + q.push(curr->right); + q.pop(); + } + sort(num.begin(), num.end()); + return num[k-1]; + } +}; \ No newline at end of file From b1166b12f0691a82bb9f7c73c6f55c34be226e31 Mon Sep 17 00:00:00 2001 From: Utkarsh Date: Wed, 5 Oct 2022 18:35:42 +0530 Subject: [PATCH 328/448] Binary Search in 2D Arrays (C++) --- Arrays/32_Binary_Search_2D_Arrays.cpp | 35 +++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 Arrays/32_Binary_Search_2D_Arrays.cpp diff --git a/Arrays/32_Binary_Search_2D_Arrays.cpp b/Arrays/32_Binary_Search_2D_Arrays.cpp new file mode 100644 index 00000000..cf39dec7 --- /dev/null +++ b/Arrays/32_Binary_Search_2D_Arrays.cpp @@ -0,0 +1,35 @@ +class Solution +{ +public: + bool searchMatrix(vector> &matrix, int target) + { + // nrows---> Number of rows, mcols---> Number of columns + int nrows = matrix.size(); + int mcols = matrix[0].size(); // Because, No. of columns = length of any particular row + + int start = 0; + int end = nrows * mcols - 1; + int mid = (start + end) / 2; // Finding mid index + + while (start <= end) + { + mid = (start + end) / 2; + + int element = matrix[mid / mcols][mid % mcols]; // Finding the element at mid index + + if (element == target) + { + return true; + } + else if (element < target) + { + start = mid + 1; + } + else //(element > target) + { + end = mid - 1; + } + } + return 0; + } +}; \ No newline at end of file From c61dde1c0358ab840429a36cb6d6219c497257c9 Mon Sep 17 00:00:00 2001 From: Bluetoothworks Date: Wed, 5 Oct 2022 18:37:23 +0530 Subject: [PATCH 329/448] leetcode soln of remove Nth node from the End --- .../Binary-search/RemoveNthNodeFromEndLL.cpp | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 Leetcode-solutions/Binary-search/RemoveNthNodeFromEndLL.cpp diff --git a/Leetcode-solutions/Binary-search/RemoveNthNodeFromEndLL.cpp b/Leetcode-solutions/Binary-search/RemoveNthNodeFromEndLL.cpp new file mode 100644 index 00000000..ccb05f6d --- /dev/null +++ b/Leetcode-solutions/Binary-search/RemoveNthNodeFromEndLL.cpp @@ -0,0 +1,24 @@ +class Solution { +public: + ListNode* removeNthFromEnd(ListNode* head, int n) { + int c=0; + if(!head) return head; + ListNode* run=new ListNode(0), *dup=run; + run->next=head; + ListNode* k=head; + while(k!=NULL) + { + if(c==n) + { + run=run->next; + } + else + c++; + k=k->next; + } + ListNode* temp=run->next; + run->next=run->next->next; + + return dup->next; + } +}; \ No newline at end of file From 4653a735eea6f950d800ccf99b823ad7f859f74c Mon Sep 17 00:00:00 2001 From: Vip2016-0 Date: Wed, 5 Oct 2022 18:49:54 +0530 Subject: [PATCH 330/448] Implement_Trie --- CPP/Tries/implementTrie.cpp | 55 +++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 CPP/Tries/implementTrie.cpp diff --git a/CPP/Tries/implementTrie.cpp b/CPP/Tries/implementTrie.cpp new file mode 100644 index 00000000..f2d99eee --- /dev/null +++ b/CPP/Tries/implementTrie.cpp @@ -0,0 +1,55 @@ +class Node { +public: + char c; + Node* child[26]; + bool isWord; + + Node(char c) { + this -> c = c; + isWord = false; + + for(int i = 0 ; i < 26 ; i++) + child[i] = NULL; + } +}; + +class Trie { + Node* root; + Node* getNode(string &s){ + Node* curr = root; + for(auto &ch:s){ + if(curr -> child[ch - 97] == NULL) + return NULL; + curr = curr -> child[ch - 97]; + } + + return curr; + } +public: + Trie() { + root = new Node('\0'); + } + + void insert(string word) { + Node* curr = root; + + for(auto &ch:word){ + if(curr -> child[ch - 97] == NULL) + curr -> child[ch - 97] = new Node(ch); + curr = curr -> child[ch - 97]; + } + + curr -> isWord = true; + } + + bool search(string word) { + Node* reqNode = getNode(word); + + return reqNode && reqNode -> isWord; + } + + bool startsWith(string prefix) { + return getNode(prefix) != NULL; + } +}; + From 6fee8a120ffc273049b3800b144903ceec2c77e1 Mon Sep 17 00:00:00 2001 From: Niladri Das <86772172+SegFault03@users.noreply.github.com> Date: Wed, 5 Oct 2022 18:50:26 +0530 Subject: [PATCH 331/448] Delete nodes in a binary tree As per user input, delete the nodes in a binary tree. --- Trees/delete_nodes_BST.cpp | 139 +++++++++++++++++++++++++++++++++++++ 1 file changed, 139 insertions(+) create mode 100644 Trees/delete_nodes_BST.cpp diff --git a/Trees/delete_nodes_BST.cpp b/Trees/delete_nodes_BST.cpp new file mode 100644 index 00000000..bf41e1d0 --- /dev/null +++ b/Trees/delete_nodes_BST.cpp @@ -0,0 +1,139 @@ +#include +using namespace std; + +class Tree +{ +public: + + int val; + Tree *left; + Tree *right; + +public: + + //class constructor called when any object or pointer is created without any parameter. + Tree() + { + val=0; + left=nullptr; + right=nullptr; + } + + //class constructor called when an object or pointer is called while passing an argument (val). + Tree(int val) + { + this->val=val; + this->left=nullptr; + this->right=nullptr; + } + + //builds a Binary Tree taking (int) value as an argument and returns the root to the tree built. + Tree* buildTree(int val) + { + if(this==nullptr) + { + Tree *temp = new Tree(val); + return temp; + } + else + { + Tree *temp=nullptr; + if(this->val>val) + { + temp=this->left->buildTree(val); + this->left=temp; + } + else + { + temp=this->right->buildTree(val); + this->right=temp; + } + return this; + } + } + + //RECURSIVE DFS PREORDER + void preOrder() + { + if(this!=nullptr) + { + cout<val<<","; + this->left->preOrder(); + this->right->preOrder(); + } + } +}; + +Tree* deleteNode(Tree *root, int val) +{ + if(root==nullptr) + return nullptr; + else + { + if(root->val>val) + root->left=deleteNode(root->left,val); + else if(root->valright=deleteNode(root->right,val); + else + { + if(root->left!=nullptr) + { + Tree *temp=root->left; + Tree *trav=temp->right; + if(trav==nullptr) + { + temp->right=root->right; + root=temp; + } + else + { + while(trav->right!=nullptr) + { + temp=trav; + trav=trav->right; + } + temp->right=trav->left; + root->val=trav->val; + trav->left=NULL; + } + } + else if(root->right!=nullptr) + { + Tree *temp=root->right; + Tree *trav=temp->left; + if(trav==nullptr) + { + temp->left=root->left; + root=temp; + } + else + { + while(trav->left!=nullptr) + { + temp=trav; + trav=trav->left; + } + temp->left=trav->right; + root->val=trav->val; + trav->right=NULL; + } + } + else + root=nullptr; + } + return root; + } +} + +int main() +{ + vectortest={8,5,3,6,11,10,9,12}; + Tree *root=nullptr; + for(int i:test) + root=root->buildTree(i); + cout<<"The tree: "; + root->preOrder(); + root=deleteNode(root,6); + cout<<"\nThe tree after deletion: "; + root->preOrder(); +} From d6c2b67c2c2f7ec580995616708e3fb0e7dcdd0f Mon Sep 17 00:00:00 2001 From: Niladri Das <86772172+SegFault03@users.noreply.github.com> Date: Wed, 5 Oct 2022 19:03:50 +0530 Subject: [PATCH 332/448] Extract all the words from a string For a given string, extract all the words without using library functions. --- String/extract_words_string.exe | Bin 0 -> 103195 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 String/extract_words_string.exe diff --git a/String/extract_words_string.exe b/String/extract_words_string.exe new file mode 100644 index 0000000000000000000000000000000000000000..66b0cbf1ec8c99be53709240207c70422fb2b568 GIT binary patch literal 103195 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 Fyd9lVqn!@?MkVhfI>wO_Hr9$(bg} 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 literal 0 HcmV?d00001 From fbe023fbe34ddf9845f6d7379fa81958b1047b1d Mon Sep 17 00:00:00 2001 From: ola-nishant Date: Wed, 5 Oct 2022 19:22:40 +0530 Subject: [PATCH 333/448] added file for operations on arrays in c language --- Arrays/32_Operations_on_arrays.c | 314 +++++++++++++++++++++++++++++++ 1 file changed, 314 insertions(+) create mode 100644 Arrays/32_Operations_on_arrays.c diff --git a/Arrays/32_Operations_on_arrays.c b/Arrays/32_Operations_on_arrays.c new file mode 100644 index 00000000..2649bfff --- /dev/null +++ b/Arrays/32_Operations_on_arrays.c @@ -0,0 +1,314 @@ +// header files +#include +#include + +// global variables +int menuOption, process = 0; + +// array and its properties +struct array +{ + int counter; + int array1[10]; +} a1; + +// setting value of variables inside the struct +void setValues() +{ + a1.counter = 0; +} + +// main menu +int menu() +{ + printf("Press 1 for insertion\n"); + printf("Press 2 for deletion\n"); + printf("Press 3 for traversing\n"); + printf("Press 4 for linear search\n"); + printf("Press 5 for selection sort\n"); + printf("Press 9 to exit\n"); + scanf("%d", &menuOption); +} + +int menu1() +{ + printf("Press 1 for insertion\n"); + printf("Press 9 to exit\n"); + scanf("%d", &menuOption); +} + +// operation functions +void printArr() +{ + if (a1.counter == 0) + { + printf("The array is empty\n"); + } + else + { + printf("The array is : "); + for (int i = 0; i < a1.counter - 1; i++) + { + printf("%d, ", a1.array1[i]); + } + printf("%d\n", a1.array1[a1.counter - 1]); + } + printf("\n"); +} + +int insertion() +{ + int element, index, choice; + int beginning() + { + printf("Enter element to insert at the beginnning\n"); + scanf("%d", &element); + if (a1.counter>0) + { + for (int i = a1.counter; i >=0 ; i--) + { + a1.array1[i] = a1.array1[i-1]; + } + } + a1.array1[0] = element; + a1.counter++; + printArr(); + } + int atIndex() + { + printf("Enter the index: "); + scanf("%d", &index); + if (index<=a1.counter) + { + printf("Enter element to insert at the index:%d\n", index); + scanf("%d", &element); + + for (int i = a1.counter; i > index; i--) + { + a1.array1[i] = a1.array1[i-1]; + } + a1.array1[index] = element; + a1.counter++; + printArr(); + } + // checks + else + { + printf("Please enter correct index"); + } + + } + int end() + { + printf("Enter element to insert at the end\n"); + scanf("%d", &element); + a1.array1[a1.counter] = element; + a1.counter++; + printArr(); + } +insertOneCheckpoint: + switch (a1.counter) + { + case 0: + beginning(); + break; + + case 2 ... 9: + printf("Enter 1 to enter in the beginning\n"); + printf("Enter 2 to enter in the end\n"); + printf("Enter 3 to enter at a specific index\n"); + scanf("%d", &choice); + if (choice == 1) + { + beginning(); + } + else if (choice == 2) + { + end(); + } + else if (choice == 3) + { + atIndex(); + } + else + { + printf("Choice out of range\n"); + goto insertOneCheckpoint; + } + break; + default: + printf("Index out of bounds\n"); + break; + + case 1: + printf("Enter 1 to enter in the beginning\n"); + printf("Enter 2 to enter in the end\n"); + scanf("%d", &choice); + if (choice == 1) + { + beginning(); + } + else if (choice == 2) + { + end(); + } + else + { + printf("Choice out of range\n"); + goto insertOneCheckpoint; + } + break; + } +} + +int deletion() +{ + int index; +insertDeleteCheckpoint: + printf("Enter the index of the element you want to delete\n"); + scanf("%d", &index); + if (index >= 0 && index <= a1.counter) + { + for (int i = index; i <= a1.counter; i++) + { + a1.array1[i] = a1.array1[i + 1]; + } + a1.counter--; + printArr(); + } + else + { + printf("Index out of range\n"); + goto insertDeleteCheckpoint; + } +} + +int traversing() +{ + int index; +insertTraverseCheckpoint: + printf("Enter the index of the element\n"); + scanf("%d", &index); + if (index >= 0 && index <= a1.counter) + { + printf("%d", a1.array1[index]); + } + else + { + printf("Index out of range"); + goto insertTraverseCheckpoint; + } + printArr(); +} + +int traversing2(){ + for (int i = 0; i < a1.counter; i++) + { + printf("%d\n",i); + } + printArr(); +} + +int searching() +{ + int element, crash = -1; +insertSearchingCheckpoint: + printf("Enter the element you want to search for: \n"); + scanf("%d", &element); + for (int i = 0; i < a1.counter; i++) + { + if (a1.array1[i] == element) + { + crash = i; + } + } + if (crash >= 0) + { + printf("The index of %d is %d\n", element, crash); + } + else + { + printf("No element found\n"); + goto insertSearchingCheckpoint; + } +} + +int sorting() +{ + int min, crash, temp; + for (int i = 0; i < a1.counter; i++) + { + min = a1.array1[i]; + for (int j = i + 1; j < a1.counter; j++) + { + if (a1.array1[j] < min) + { + min = a1.array1[j]; + crash = j; + } + } + temp = a1.array1[i]; + a1.array1[i] = min; + a1.array1[crash] = temp; + } + printArr(); +} + +// main function +int main() +{ + setValues(); + printArr(); +showMenu: + if (a1.counter == 0) + { + menu1(); + switch (menuOption) + { + case 1: + insertion(); + break; + case 9: + exit(0); + break; + default: + printf("Please enter correct input\n"); + goto showMenu; + break; + } + } + + else + { + menu(); + switch (menuOption) + { + case 1: + insertion(); + break; + case 2: + deletion(); + break; + case 3: + traversing2(); + break; + case 4: + searching(); + break; + case 5: + sorting(); + break; + case 9: + exit(0); + break; + default: + printf("Please enter correct input\n"); + goto showMenu; + break; + } + } + + // making sure our menu runs inside a loop + goto showMenu; + return 0; +} \ No newline at end of file From 0b8acd65d04927fb0c1a5e77b5af025fae4e39d3 Mon Sep 17 00:00:00 2001 From: divyaa1511 <102688183+divyaa1511@users.noreply.github.com> Date: Wed, 5 Oct 2022 20:05:22 +0530 Subject: [PATCH 334/448] stack using linked list stack using linked list --- Python/stack using linked list.py | 72 +++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 Python/stack using linked list.py diff --git a/Python/stack using linked list.py b/Python/stack using linked list.py new file mode 100644 index 00000000..cfdc545a --- /dev/null +++ b/Python/stack using linked list.py @@ -0,0 +1,72 @@ +class Node: + def __init__(self,value=None): + self.value = value + self.next=next + +class LinkedList: + def __init__(self): + self.head=None + + def __iter__(self): + curNode=self.head + while curNode: + yield curNode + curNode=curNode.next + +class Stack: + def __init__(self): + self.LinkedList=LinkedList() + + def __str__(self): + values=[str(x.value) for x in self.LinkedList] + return '\n'.join(values) + + def isEmpty(self): + if self.LinkedList.head == None: + return True + else: + return False + + def push(self,value): + node=Node(value) + node.next=self.LinkedList.head + self.LinkedList.head = node + + #pop + def pop(self): + if self.isEmpty(): + print("there is no element in the stack") + else: + nodeValue=self.LinkedList.head.value + self.LinkedList.head=self.LinkedList.head.next + return nodeValue + + # peek + def peek(self): + if self.isEmpty(): + print("there is no element in the stack") + else: + nodeValue=self.LinkedList.head.value + return nodeValue + + + + # delete entire stack + def delete(self): + self.list=None + + +customStack = Stack() +customStack.push(1) +customStack.push(2) +customStack.push(3) +print(customStack) + +print("\n") +customStack.pop() +print(customStack) + +print("\n") + +print(customStack.peek()) +print(customStack) \ No newline at end of file From c0aabf86b6bbf2c4d3d54098a02737f67fd738bd Mon Sep 17 00:00:00 2001 From: MidhaShrey Date: Wed, 5 Oct 2022 20:15:59 +0530 Subject: [PATCH 335/448] Added Detect a Cycle in a graph --- CPP/graph_tree/Detect a cycle in a graph.cpp | 76 ++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 CPP/graph_tree/Detect a cycle in a graph.cpp diff --git a/CPP/graph_tree/Detect a cycle in a graph.cpp b/CPP/graph_tree/Detect a cycle in a graph.cpp new file mode 100644 index 00000000..d3edcc1e --- /dev/null +++ b/CPP/graph_tree/Detect a cycle in a graph.cpp @@ -0,0 +1,76 @@ +#include +#include +#include +using namespace std; + +class Graph{ +int V; +list *adj; + +bool isCyclicHelper(int s,bool *visited,bool *RStack){ + if(visited[s]==false){ + visited[s] = true; + rStack[s] = true; + + for(auto it=adj[s].begin();it!=adj[s].end();it++){ + if(!visited[*it]&&isCyclicHelper(*it,visited,rStack)){ + return true; + } + else if(rStack[*it]){ + return true; + } + } + + } +RStack[s]=false; +return false; +} + + +public: + Graph(int V){ + this->V = V; + adj = new list[V]; + } + + void addEdge(int u,int v){ + adj[u].push_back(v); + + } + + bool isCyclic(){ + bool *visited = new bool[V]; + bool *rStack = new bool[V]; + + memset(visited,false,sizeof(false)); + memset(rStack,false,sizeof(false)); + + //This works if there is a single DFS forest. Otherwise use a for loop. + if(isCyclicHelper(0,visited,rStack)){ + return true; + } + else{ + return false; + } + } + +}; + +int main(){ + + Graph g(4); + g.addEdge(0, 1); + g.addEdge(0, 2); + g.addEdge(1, 2); + g.addEdge(2, 0); + g.addEdge(2, 3); + g.addEdge(3, 3); + + if(g.isCyclic()) + cout << "Graph contains cycle"; + else + cout << "Graph doesn't contain cycle"; + return 0; + +return 0; +} From a199d058986ad07b24716e62fee08c45993fec2a Mon Sep 17 00:00:00 2001 From: Vishwajeet Shivaji Hogale Date: Wed, 5 Oct 2022 21:03:17 +0530 Subject: [PATCH 336/448] Oct 5th : Add one row to tree --- Trees/addOneRowToTree.cpp | 78 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 Trees/addOneRowToTree.cpp diff --git a/Trees/addOneRowToTree.cpp b/Trees/addOneRowToTree.cpp new file mode 100644 index 00000000..aa3b902e --- /dev/null +++ b/Trees/addOneRowToTree.cpp @@ -0,0 +1,78 @@ +#include +#include +using namespace std; +struct TreeNode{ + int val; + TreeNode *left,*right; + TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} +}; + +/* + + Intuition + Use queues to peform bfs and traverse the tree. When you reach depth - 1 , + perform the operations mentioned in the question + + Approach + There are two cases when you reach depth - 1 using bfs. + Assume curr is the current node at depth - 1 + + * curr->left != NULL + * curr->left == NULL + The code handles the above two cases. + There is also one edge case that the code can't handle. + If the depth is 1 which means we need to add the new_node as the root node. + + So we have to write a seperate code to handle depth = 1 case. +*/ +TreeNode* addOneRow(TreeNode* root, int val, int depth) { + + int d = 0; + if(d == (depth - 1)){ + TreeNode *new_node = new TreeNode(val); + new_node->left = root; + root = new_node; + return root; + } + queue q; + q.push(root); + while(!q.empty()){ + int size = q.size(); + d++; + for(int i=0;ileft){ + TreeNode *temp = curr->left; + new_node->left = temp; + curr->left = new_node; + } + else{ + curr->left = new_node; + } + if(curr->right){ + TreeNode *temp = curr->right; + new_node1->right = temp; + curr->right = new_node1; + } + else{ + curr->right = new_node1; + } + + } + if(curr->left) + q.push(curr->left); + if(curr->right) + q.push(curr->right); + + } + if(d == (depth-1)) + break; + } + return root; +} \ No newline at end of file From 6983635462bfdbe20d5d34eb7afbdf91564df59c Mon Sep 17 00:00:00 2001 From: Narpat Aanjana Date: Wed, 5 Oct 2022 21:53:41 +0530 Subject: [PATCH 337/448] Create Geek and Strings.cpp --- CPP/Geek and Strings.cpp | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 CPP/Geek and Strings.cpp diff --git a/CPP/Geek and Strings.cpp b/CPP/Geek and Strings.cpp new file mode 100644 index 00000000..582da629 --- /dev/null +++ b/CPP/Geek and Strings.cpp @@ -0,0 +1,24 @@ +class Solution{ +public: + vector prefixCount(int N, int Q, string li[], string query[]) + { + unordered_map mp; + + for(int i=0;i ans(Q, 0); + for(int i=0;i Date: Wed, 5 Oct 2022 21:55:41 +0530 Subject: [PATCH 338/448] Pushkar Roy --- Arrays/4.MedianofTwoSortedArray.cpp | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 Arrays/4.MedianofTwoSortedArray.cpp diff --git a/Arrays/4.MedianofTwoSortedArray.cpp b/Arrays/4.MedianofTwoSortedArray.cpp new file mode 100644 index 00000000..80a10578 --- /dev/null +++ b/Arrays/4.MedianofTwoSortedArray.cpp @@ -0,0 +1,21 @@ +//Name ;- Pushkar Roy +//Date :- 05-10-2022 + +class Solution { +public: + double findMedianSortedArrays(vector& nums1, vector& nums2) { + for(int i=0; i Date: Wed, 5 Oct 2022 22:08:50 +0530 Subject: [PATCH 339/448] added heap sort algo An algo for heap sort --- Python/Sorting-Techniques/heapSort.py | 36 +++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 Python/Sorting-Techniques/heapSort.py diff --git a/Python/Sorting-Techniques/heapSort.py b/Python/Sorting-Techniques/heapSort.py new file mode 100644 index 00000000..f934d145 --- /dev/null +++ b/Python/Sorting-Techniques/heapSort.py @@ -0,0 +1,36 @@ +def heapify(arr, N, i): + largest = i + l = 2 * i + 1 + r = 2 * i + 2 + + if l < N and arr[largest] < arr[l]: + largest = l + + if r < N and arr[largest] < arr[r]: + largest = r + + if largest != i: + arr[i], arr[largest] = arr[largest], arr[i] + + heapify(arr, N, largest) + +def heapSort(arr): + N = len(arr) + + for i in range(N//2 - 1, -1, -1): + heapify(arr, N, i) + + for i in range(N-1, 0, -1): + arr[i], arr[0] = arr[0], arr[i] + heapify(arr, i, 0) + +if __name__ == '__main__': + arr = [12, 11, 13, 5, 6, 7] + + heapSort(arr) + N = len(arr) + + print("Sorted array is") + for i in range(N): + print("%d" % arr[i], end=" ") + From 1246dc729c99c8eda27612a455eaad02ee255035 Mon Sep 17 00:00:00 2001 From: Gaurish Ojha Date: Wed, 5 Oct 2022 22:20:22 +0530 Subject: [PATCH 340/448] Added Leetcode Problem 48 Name: Rotate Image(Medium) Url:https://leetcode.com/problems/rotate-image --- ...x_II.cpp => 240_Search_a_2D_Matrix_II.cpp} | 42 +++++++++---------- LeetCode Solutions/48_Rotate_Image.cpp | 24 +++++++++++ 2 files changed, 45 insertions(+), 21 deletions(-) rename LeetCode Solutions/{Search_a_2D_Matrix_II.cpp => 240_Search_a_2D_Matrix_II.cpp} (95%) create mode 100644 LeetCode Solutions/48_Rotate_Image.cpp diff --git a/LeetCode Solutions/Search_a_2D_Matrix_II.cpp b/LeetCode Solutions/240_Search_a_2D_Matrix_II.cpp similarity index 95% rename from LeetCode Solutions/Search_a_2D_Matrix_II.cpp rename to LeetCode Solutions/240_Search_a_2D_Matrix_II.cpp index 2ef54497..a161e878 100644 --- a/LeetCode Solutions/Search_a_2D_Matrix_II.cpp +++ b/LeetCode Solutions/240_Search_a_2D_Matrix_II.cpp @@ -1,22 +1,22 @@ -class Solution -{ -public: - bool searchMatrix(vector> &matrix, int target) - { - int j = matrix[0].size() - 1, i = 0; - while (1) - { - if (j < 0 || i > matrix.size() - 1) - return 0; - if (matrix[i][j] > target) - j--; - else if (matrix[i][j] < target) - i++; - else - return 1; - } - if (matrix[i][j] == target) - return 1; - return 0; - } +class Solution +{ +public: + bool searchMatrix(vector> &matrix, int target) + { + int j = matrix[0].size() - 1, i = 0; + while (1) + { + if (j < 0 || i > matrix.size() - 1) + return 0; + if (matrix[i][j] > target) + j--; + else if (matrix[i][j] < target) + i++; + else + return 1; + } + if (matrix[i][j] == target) + return 1; + return 0; + } }; \ No newline at end of file diff --git a/LeetCode Solutions/48_Rotate_Image.cpp b/LeetCode Solutions/48_Rotate_Image.cpp new file mode 100644 index 00000000..1e61afaa --- /dev/null +++ b/LeetCode Solutions/48_Rotate_Image.cpp @@ -0,0 +1,24 @@ +class Solution +{ +public: + void rotate(vector> &mt) + { + int n = mt.size(); + int tmp = 0; + for (int i = 0; i < n; i++) + { + for (int j = tmp; j < n; j++) + { + swap(mt[i][j], mt[j][i]); + } + tmp++; + } + for (int i = 0; i < n; i++) + { + for (int j = 0; j < (n / 2); j++) + { + swap(mt[i][j], mt[i][n - j - 1]); + } + } + } +}; \ No newline at end of file From 471d67ec53638ccbcf723f9c4e19061fd9fe59ad Mon Sep 17 00:00:00 2001 From: GAURISH OJHA <97218624+GaurishIIITNR@users.noreply.github.com> Date: Wed, 5 Oct 2022 22:34:56 +0530 Subject: [PATCH 341/448] Added Leetcode Problem 48 Name: Rotate Image(Medium) Url : https://leetcode.com/problems/rotate-image --- LeetCode Solutions/48_Rotate_Image.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/LeetCode Solutions/48_Rotate_Image.cpp b/LeetCode Solutions/48_Rotate_Image.cpp index 1e61afaa..7ab5b944 100644 --- a/LeetCode Solutions/48_Rotate_Image.cpp +++ b/LeetCode Solutions/48_Rotate_Image.cpp @@ -1,3 +1,5 @@ +// Name: Rotate Image(Medium) +// Url : https://leetcode.com/problems/rotate-image class Solution { public: @@ -21,4 +23,4 @@ class Solution } } } -}; \ No newline at end of file +}; From 47866eb1bad0b7081785e9b9375101014894c680 Mon Sep 17 00:00:00 2001 From: GAURISH OJHA <97218624+GaurishIIITNR@users.noreply.github.com> Date: Wed, 5 Oct 2022 22:40:03 +0530 Subject: [PATCH 342/448] Added Leetcode Problem 240 Name : Search_a_2D_Matrix_II Leetcode Problem 240 (Medium) Url : https://leetcode.com/problems/search-a-2d-matrix-ii/ --- LeetCode Solutions/240_Search_a_2D_Matrix_II.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/LeetCode Solutions/240_Search_a_2D_Matrix_II.cpp b/LeetCode Solutions/240_Search_a_2D_Matrix_II.cpp index a161e878..adc9cd62 100644 --- a/LeetCode Solutions/240_Search_a_2D_Matrix_II.cpp +++ b/LeetCode Solutions/240_Search_a_2D_Matrix_II.cpp @@ -1,3 +1,6 @@ +// Name : Search_a_2D_Matrix_II +// Leetcode Problem 240 (Medium) +// Url : https://leetcode.com/problems/search-a-2d-matrix-ii/ class Solution { public: @@ -19,4 +22,4 @@ class Solution return 1; return 0; } -}; \ No newline at end of file +}; From e6328b8a16f38b05a1a3b2f8396e9c19b2f3710e Mon Sep 17 00:00:00 2001 From: GAURISH OJHA <97218624+GaurishIIITNR@users.noreply.github.com> Date: Wed, 5 Oct 2022 22:44:23 +0530 Subject: [PATCH 343/448] Update 240_Search_a_2D_Matrix_II.cpp --- .../240_Search_a_2D_Matrix_II.cpp | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/LeetCode Solutions/240_Search_a_2D_Matrix_II.cpp b/LeetCode Solutions/240_Search_a_2D_Matrix_II.cpp index adc9cd62..05988bf5 100644 --- a/LeetCode Solutions/240_Search_a_2D_Matrix_II.cpp +++ b/LeetCode Solutions/240_Search_a_2D_Matrix_II.cpp @@ -1,6 +1,8 @@ // Name : Search_a_2D_Matrix_II // Leetcode Problem 240 (Medium) // Url : https://leetcode.com/problems/search-a-2d-matrix-ii/ + +// Approach 1 (Best Approach) class Solution { public: @@ -23,3 +25,27 @@ class Solution return 0; } }; + +// Approach 2 + +class Solution { +public: + bool searchMatrix(vector>& matrix, int target) { + for(int i=0;itarget) + return 0; + int low=0,high=matrix.size()-1; + while(low Date: Wed, 5 Oct 2022 23:13:46 +0530 Subject: [PATCH 344/448] codeX1616-Code to override Object.equals() method in any java class --- Java/OverridingEqualsMethod/Abc.class | Bin 0 -> 675 bytes Java/OverridingEqualsMethod/Abc.java | 31 ++++++++++++++++++ Java/OverridingEqualsMethod/EqualsCheck.class | Bin 0 -> 666 bytes Java/OverridingEqualsMethod/EqualsCheck.java | 13 ++++++++ 4 files changed, 44 insertions(+) create mode 100644 Java/OverridingEqualsMethod/Abc.class create mode 100644 Java/OverridingEqualsMethod/Abc.java create mode 100644 Java/OverridingEqualsMethod/EqualsCheck.class create mode 100644 Java/OverridingEqualsMethod/EqualsCheck.java diff --git a/Java/OverridingEqualsMethod/Abc.class b/Java/OverridingEqualsMethod/Abc.class new file mode 100644 index 0000000000000000000000000000000000000000..22a0a79b627959afabcd482b96b678a09ae10075 GIT binary patch literal 675 zcmZutOD_Xq6g}U}H=XGiEk(WRQLnU9VZn|Fkw_#Si;9Kav?k3|6*cu=SXr^@g2W@S z5Vn4kh%?g$LB8aE_i^qy_ujXUr)L23n2JJTFfb_-28MJDn+!%wj3OO)V>-qKBBy@M ztCj>38)fIrnXNe0(riA=EeL35PNnV&h;@Nz$@QBBf$mK9Ke${y+9x``;Z@zO`eDJX z?Kp)BGX{Hin^bBhOR~tKSM~fQfn??{(Ry~52=}D!R89qYej>IDWw+=rWcLKx^S)C& z*mRCV4X!6(=8x*NqPymWnk$9kOt6!MC`=1&uq=cuX@5w{Kj zdxgA!rZ#dfkek7*(+|)d5IIMJk-|v7gf6ck)nGIw++u)xfUFvMb@WlCpZP&%Qs`yH Sg4B(7q*+@I&d?ur4txTrX>Pgz literal 0 HcmV?d00001 diff --git a/Java/OverridingEqualsMethod/Abc.java b/Java/OverridingEqualsMethod/Abc.java new file mode 100644 index 00000000..d6e0c783 --- /dev/null +++ b/Java/OverridingEqualsMethod/Abc.java @@ -0,0 +1,31 @@ +public class Abc { + + public String getString() { + return string; + } + + public int getValue() { + return value; + } + + private String string; + private int value; + + public Abc(String string, int value) { + this.string = string; + this.value = value; + } + + @Override + public boolean equals(Object object) { + if (object == this) { + return true; + } + if (!(object instanceof Abc)) { + return false; + } + Abc abc = (Abc) object; + return string.equals(abc.getString()) && value == abc.getValue(); + } + +} \ No newline at end of file diff --git a/Java/OverridingEqualsMethod/EqualsCheck.class b/Java/OverridingEqualsMethod/EqualsCheck.class new file mode 100644 index 0000000000000000000000000000000000000000..e829a57e5c3a5f28d9b50fa74fe70bf5b00b2c4d GIT binary patch literal 666 zcmZWn+e*Vg5Ivj5ZrY|^s@7{Y_1apoh`v<>6$PPQpdzSGo49DSO|(rEKgBQbSsxS> z`~W{noQSIR*?2CZS$$-yL#$9dWY9PKQ_0X(bv?NoHf-5E5O$p+dPBG#L$+{Iy%0B|To>M1xfV2C z@2sK{)3rc2mpkGr!jn2fvgU_PM{c<)zkBmK6!q4|xpXcU6oUy9X_8&D9by-@v#27I zCZ;gWF=JvD1=3shgLBKbFQgN+EYXyfR6HC-6LTmr4E_UzUIbxC{gI>se#_pA=u|WR zd)Zda#3P0lL;qjIcUq-*+(uTrYX!1Fjrd_e3EzyaU*4zD1T-Ki8Wo1#NWDGGz^@dj zPIGM&`WY+oP=~1=4NMJ;Y$xq Date: Wed, 5 Oct 2022 23:15:06 +0530 Subject: [PATCH 345/448] Removing compiled java class files --- Java/OverridingEqualsMethod/Abc.class | Bin 675 -> 0 bytes Java/OverridingEqualsMethod/EqualsCheck.class | Bin 666 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Java/OverridingEqualsMethod/Abc.class delete mode 100644 Java/OverridingEqualsMethod/EqualsCheck.class diff --git a/Java/OverridingEqualsMethod/Abc.class b/Java/OverridingEqualsMethod/Abc.class deleted file mode 100644 index 22a0a79b627959afabcd482b96b678a09ae10075..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 675 zcmZutOD_Xq6g}U}H=XGiEk(WRQLnU9VZn|Fkw_#Si;9Kav?k3|6*cu=SXr^@g2W@S z5Vn4kh%?g$LB8aE_i^qy_ujXUr)L23n2JJTFfb_-28MJDn+!%wj3OO)V>-qKBBy@M ztCj>38)fIrnXNe0(riA=EeL35PNnV&h;@Nz$@QBBf$mK9Ke${y+9x``;Z@zO`eDJX z?Kp)BGX{Hin^bBhOR~tKSM~fQfn??{(Ry~52=}D!R89qYej>IDWw+=rWcLKx^S)C& z*mRCV4X!6(=8x*NqPymWnk$9kOt6!MC`=1&uq=cuX@5w{Kj zdxgA!rZ#dfkek7*(+|)d5IIMJk-|v7gf6ck)nGIw++u)xfUFvMb@WlCpZP&%Qs`yH Sg4B(7q*+@I&d?ur4txTrX>Pgz diff --git a/Java/OverridingEqualsMethod/EqualsCheck.class b/Java/OverridingEqualsMethod/EqualsCheck.class deleted file mode 100644 index e829a57e5c3a5f28d9b50fa74fe70bf5b00b2c4d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 666 zcmZWn+e*Vg5Ivj5ZrY|^s@7{Y_1apoh`v<>6$PPQpdzSGo49DSO|(rEKgBQbSsxS> z`~W{noQSIR*?2CZS$$-yL#$9dWY9PKQ_0X(bv?NoHf-5E5O$p+dPBG#L$+{Iy%0B|To>M1xfV2C z@2sK{)3rc2mpkGr!jn2fvgU_PM{c<)zkBmK6!q4|xpXcU6oUy9X_8&D9by-@v#27I zCZ;gWF=JvD1=3shgLBKbFQgN+EYXyfR6HC-6LTmr4E_UzUIbxC{gI>se#_pA=u|WR zd)Zda#3P0lL;qjIcUq-*+(uTrYX!1Fjrd_e3EzyaU*4zD1T-Ki8Wo1#NWDGGz^@dj zPIGM&`WY+oP=~1=4NMJ;Y$xq Date: Wed, 5 Oct 2022 23:20:32 +0530 Subject: [PATCH 346/448] Added Leetcode Problem 1404 Name: Number of Steps to Reduce a Number in Binary Representation to One Url: https://leetcode.com/problems/number-of-steps-to-reduce-a-number-in-binary-representation-to-one/ --- ...umber_in _Binary_Representation_to_One.cpp | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 String/1404_Number_of_Steps_to_Reduce_a_Number_in _Binary_Representation_to_One.cpp diff --git a/String/1404_Number_of_Steps_to_Reduce_a_Number_in _Binary_Representation_to_One.cpp b/String/1404_Number_of_Steps_to_Reduce_a_Number_in _Binary_Representation_to_One.cpp new file mode 100644 index 00000000..cce983cf --- /dev/null +++ b/String/1404_Number_of_Steps_to_Reduce_a_Number_in _Binary_Representation_to_One.cpp @@ -0,0 +1,27 @@ +// Name: Number_of_Steps_to_Reduce_a_Number_in _Binary_Representation_to_One +// Url: https://leetcode.com/problems/number-of-steps-to-reduce-a-number-in-binary-representation-to-one/ + +class Solution +{ +public: + int numSteps(string s) + { + int cnt = 0, cntz = 0; + + for (int i = s.length() - 1; i > 0; i--) + { + if (s[i] == '0' && cntz == 0) + cnt++; + else if (s[i] == '0') + cnt += 2; + else + { + cntz++; + cnt++; + }; + } + if (cntz > 0) + cnt += 2; + return cnt; + } +}; \ No newline at end of file From 56843f7b3a97cc15d9f335c116731289cc907748 Mon Sep 17 00:00:00 2001 From: Gaurish Ojha Date: Wed, 5 Oct 2022 23:22:40 +0530 Subject: [PATCH 347/448] Added Leetcode Problem 1404 Name: Number of Steps to Reduce a Number in Binary Representation to One Url: https://leetcode.com/problems/number-of-steps-to-reduce-a-number-in-binary-representation-to-one/ --- ...teps_to_Reduce_a_Number_in _Binary_Representation_to_One.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/String/1404_Number_of_Steps_to_Reduce_a_Number_in _Binary_Representation_to_One.cpp b/String/1404_Number_of_Steps_to_Reduce_a_Number_in _Binary_Representation_to_One.cpp index cce983cf..42544b3f 100644 --- a/String/1404_Number_of_Steps_to_Reduce_a_Number_in _Binary_Representation_to_One.cpp +++ b/String/1404_Number_of_Steps_to_Reduce_a_Number_in _Binary_Representation_to_One.cpp @@ -1,6 +1,6 @@ // Name: Number_of_Steps_to_Reduce_a_Number_in _Binary_Representation_to_One // Url: https://leetcode.com/problems/number-of-steps-to-reduce-a-number-in-binary-representation-to-one/ - +//----------------------------------------------------------------------------------------------------------- class Solution { public: From a52a88b4890544b87e6dc13ed7f7b15180b11acb Mon Sep 17 00:00:00 2001 From: AmanDekate1 <101728835+AmanDekate1@users.noreply.github.com> Date: Wed, 5 Oct 2022 23:24:59 +0530 Subject: [PATCH 348/448] Create NCRcombination.c NCR formula is used to find the number of ways where r objects chosen from n objects and the order is not important. --- Arrays/NCRcombination.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 Arrays/NCRcombination.c diff --git a/Arrays/NCRcombination.c b/Arrays/NCRcombination.c new file mode 100644 index 00000000..6fee2dc0 --- /dev/null +++ b/Arrays/NCRcombination.c @@ -0,0 +1,28 @@ +#include + +int fact(int n) +{ + if(n==0)return 1; + return fact(n-1)*n; +} +int nCr(int n,int r) +{ + int num,den; + + num=fact(n); + den=fact(r)*fact(n-r); + + return num/den; +} +int NCR(int n,int r) +{ + if(n==r || r==0) + return 1; + return NCR(n-1,r-1)+NCR(n-1,r); + +} +int main() +{ + printf("%d \n",NCR(5,3)); + return 0; +} From 3f3a88f6b6424849d680c4ff5dfe743bfdcd7fce Mon Sep 17 00:00:00 2001 From: Gaurish Ojha Date: Wed, 5 Oct 2022 23:33:10 +0530 Subject: [PATCH 349/448] Added Leetcode String Problem 1404 Name: Number of Steps to Reduce a Number in Binary Representation to One Url: https://leetcode.com/problems/number-of-steps-to-reduce-a-number-in-binary-representation-to-one/ Tag: String --- ...Steps_to_Reduce_a_Number_in _Binary_Representation_to_One.c++} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename String/{1404_Number_of_Steps_to_Reduce_a_Number_in _Binary_Representation_to_One.cpp => 1404 Number_of_Steps_to_Reduce_a_Number_in _Binary_Representation_to_One.c++} (100%) diff --git a/String/1404_Number_of_Steps_to_Reduce_a_Number_in _Binary_Representation_to_One.cpp b/String/1404 Number_of_Steps_to_Reduce_a_Number_in _Binary_Representation_to_One.c++ similarity index 100% rename from String/1404_Number_of_Steps_to_Reduce_a_Number_in _Binary_Representation_to_One.cpp rename to String/1404 Number_of_Steps_to_Reduce_a_Number_in _Binary_Representation_to_One.c++ From 40a773a9edf42f69c56aadf6ac8130538bac63f2 Mon Sep 17 00:00:00 2001 From: arpitghura Date: Wed, 5 Oct 2022 23:41:50 +0530 Subject: [PATCH 350/448] Refactorised Java Folder --- Java/.idea/.gitignore | 3 - .../FindGreatestCommonDivisorOfArray.java | 0 .../{ => Array}/FindNoWithEvenNoOfDigits.java | 0 Java/{ => Array}/LeftRotateArrayByD.java | 120 ++++++------- Java/{ => Array}/NextGreaterElement2 | 0 .../RoatateNumberInRightKTimes.java | 110 ++++++------ .../{arrangeNumbers => arrangeNumbers.java} | 0 Java/BinarySearch.java | 19 -- Java/FiveBitManipulation/BitOperations.class | Bin 1106 -> 0 bytes .../FastExponentiation.class | Bin 555 -> 0 bytes .../{ => Leetcode}/LeetCodeBestPokerHand.java | 0 Java/{ => Leetcode}/LeetCodePlusOne.java | 0 .../LeetcodeIteratorForCombination.java | 0 .../LeetcodeLetterTilePossibilities.java | 0 Java/{ => Leetcode}/LeetcodeLruCache.java | 0 .../LeetcodeNThTribonacciNumber.java | 0 .../LeetcodeReverseNodesInKGroup.java | 0 .../LeetcodeSumOfAllSubsetXorTotals.java | 0 .../LeetcodeTheSkylineProblem.java | 0 .../leetcode_Valid Parentheses.java} | 0 .../Copy_List_with_Random_Pointer.java | 0 ...eTwoSortedList => MergeTwoSortedList.java} | 0 Java/{ => Matrix}/MatirixMultiplication | 0 .../MatrixChainMultiplication.java | 0 Java/{ => Matrix}/SpiralMatrix.java | 0 .../Question15.java | 0 .../BinarySearchSQRT.java | 86 ++++----- .../{InsertionSort => InsertionSort.java} | 0 Java/{ => SortingTechniques}/MergeSort | 0 Java/{ => Stack}/Balanced_Brackets.java | 76 ++++---- .../InfixToPostfix_byManik.java | 0 .../InfixToPostfix_byManik.class | Bin 2227 -> 0 bytes .../{ => String}/NumOfStringsOutOfString.java | 168 +++++++++--------- ...tring => Optimal Partition of String.java} | 0 Java/{ => String}/RomanToInteger.java | 0 .../reversewordinastring.java | 0 Java/bubblesort.java | 35 ---- 37 files changed, 280 insertions(+), 337 deletions(-) delete mode 100644 Java/.idea/.gitignore rename Java/{ => Array}/FindGreatestCommonDivisorOfArray.java (100%) rename Java/{ => Array}/FindNoWithEvenNoOfDigits.java (100%) rename Java/{ => Array}/LeftRotateArrayByD.java (96%) rename Java/{ => Array}/NextGreaterElement2 (100%) rename Java/{ => Array}/RoatateNumberInRightKTimes.java (97%) rename Java/Array/{arrangeNumbers => arrangeNumbers.java} (100%) delete mode 100644 Java/BinarySearch.java delete mode 100644 Java/FiveBitManipulation/BitOperations.class delete mode 100644 Java/FiveBitManipulation/FastExponentiation.class rename Java/{ => Leetcode}/LeetCodeBestPokerHand.java (100%) rename Java/{ => Leetcode}/LeetCodePlusOne.java (100%) rename Java/{ => Leetcode}/LeetcodeIteratorForCombination.java (100%) rename Java/{ => Leetcode}/LeetcodeLetterTilePossibilities.java (100%) rename Java/{ => Leetcode}/LeetcodeLruCache.java (100%) rename Java/{ => Leetcode}/LeetcodeNThTribonacciNumber.java (100%) rename Java/{ => Leetcode}/LeetcodeReverseNodesInKGroup.java (100%) rename Java/{ => Leetcode}/LeetcodeSumOfAllSubsetXorTotals.java (100%) rename Java/{ => Leetcode}/LeetcodeTheSkylineProblem.java (100%) rename Java/{leetcode_Valid Parentheses => Leetcode/leetcode_Valid Parentheses.java} (100%) rename Java/{Linked List => LinkedList}/Copy_List_with_Random_Pointer.java (100%) rename Java/LinkedList/{MergeTwoSortedList => MergeTwoSortedList.java} (100%) rename Java/{ => Matrix}/MatirixMultiplication (100%) rename Java/{ => Matrix}/MatrixChainMultiplication.java (100%) rename Java/{ => Matrix}/SpiralMatrix.java (100%) rename Java/{Pattern-Questions => PatternQuestions}/Question15.java (100%) rename Java/{ => SearchingAlgorithms}/BinarySearchSQRT.java (95%) rename Java/SortingTechniques/{InsertionSort => InsertionSort.java} (100%) rename Java/{ => SortingTechniques}/MergeSort (100%) rename Java/{ => Stack}/Balanced_Brackets.java (96%) rename Java/Stack/{InfixToPostfix@java => InfixToPostfix}/InfixToPostfix_byManik.java (100%) delete mode 100644 Java/Stack/InfixToPostfix@java/InfixToPostfix_byManik.class rename Java/{ => String}/NumOfStringsOutOfString.java (97%) rename Java/String/{Optimal Partition of String => Optimal Partition of String.java} (100%) rename Java/{ => String}/RomanToInteger.java (100%) rename Java/{Reverse-words-in-a-string => String}/reversewordinastring.java (100%) delete mode 100644 Java/bubblesort.java diff --git a/Java/.idea/.gitignore b/Java/.idea/.gitignore deleted file mode 100644 index 26d33521..00000000 --- a/Java/.idea/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -# Default ignored files -/shelf/ -/workspace.xml diff --git a/Java/FindGreatestCommonDivisorOfArray.java b/Java/Array/FindGreatestCommonDivisorOfArray.java similarity index 100% rename from Java/FindGreatestCommonDivisorOfArray.java rename to Java/Array/FindGreatestCommonDivisorOfArray.java diff --git a/Java/FindNoWithEvenNoOfDigits.java b/Java/Array/FindNoWithEvenNoOfDigits.java similarity index 100% rename from Java/FindNoWithEvenNoOfDigits.java rename to Java/Array/FindNoWithEvenNoOfDigits.java diff --git a/Java/LeftRotateArrayByD.java b/Java/Array/LeftRotateArrayByD.java similarity index 96% rename from Java/LeftRotateArrayByD.java rename to Java/Array/LeftRotateArrayByD.java index 857c21fb..e02d46fd 100644 --- a/Java/LeftRotateArrayByD.java +++ b/Java/Array/LeftRotateArrayByD.java @@ -1,60 +1,60 @@ -package com.company; - -public class LeftRotateArrayByD { - - //Reversal Algorithm--> - static void reverse(int[] arr, int low, int high){ - int temp=0; - while (low - -// static void leftRotate(int[] arr, int d){ -// int[] temp = new int[d]; -// for (int i=0; i - -// static void leftRotateOne(int[] arr){ -// int n = arr.length; -// int temp = arr[0]; -// for (int i=1; i + static void reverse(int[] arr, int low, int high){ + int temp=0; + while (low + +// static void leftRotate(int[] arr, int d){ +// int[] temp = new int[d]; +// for (int i=0; i + +// static void leftRotateOne(int[] arr){ +// int n = arr.length; +// int temp = arr[0]; +// for (int i=1; i nums[mid]) - start = mid + 1; - else - return mid; - } - return -1; - } -} diff --git a/Java/FiveBitManipulation/BitOperations.class b/Java/FiveBitManipulation/BitOperations.class deleted file mode 100644 index c861dd27c7a3ca855b1d15e724cb14bf5f2cd5fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1106 zcmZuw-A)rh7(LT&yL4Gf0gJk&{3u`x2vHNFv@}E#lO`y{8WQzt+pf6S?l$dK(F;S2 zFM%(>jW>Fs#0ww5m+=MsJF~mAXiSs&rZaPXzB9Ametr20pok?65kyreI%0?mr1s6{ z=1RkK_Exs5`&P{ph!<_g_DTZLTz*%>01_%R9fQyXhHl&5cFSs;p6xmvfx%kCGTUYE zDc1#JxpFyQP9TY46)7Df82wA3^0MPuO%l6Zo=$K1+P1s0)3zP2;4zR(W(yJ_Xj4k~vs6CSJdT8a;-h zyysfPN6E(mDE!4R%^4+sASpH^&rFYJHsl!ycn&2#Pz~@J@qGv{8+!Q03CU&-`*K-*0J3WI69L|w> zo`|`gn#?9nwQ(X!bg9%=m26r$T#Xs&*crE@zNbZwOYH9|Juj1I9#=xw*XT+npEL}m zE)!OmaI~Lra4$FfbYqC<8!}ox{t*5!49bWWm389?V~pwu@wY-4%B#Zh@9&vD)g)93 z-6Y}`?X2;#3j7j_v{d3Zv*Al55d8^72t7`j9P*(|jv(n$|A?Vf;sj%#aK8U`f{ZrV N-yNP>;JFAE{{XIft5g60 diff --git a/Java/FiveBitManipulation/FastExponentiation.class b/Java/FiveBitManipulation/FastExponentiation.class deleted file mode 100644 index efae5c79a58dc382a1dfbbe9a932bc5d21249be5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 555 zcmZva%}&BV5Xb*pN*78I6cwcSbt@j^0RS&X6B54?j2BM}Ho6Ec!NsqG@8QL(7cY8H zDT~4vQh%5yzs^6~TUGv(@q2 ziovSMK&mB%m{;COB7r1_?H~o`S9 z?~qvz_k4!TnhgAnVXx&6wneK;f6`4Q+K20+{~en>AxSpr?S9cl$0k%6>{oRmyBQ7# zZGTm2asDstqUOOo9m=3#0x=LcELx{1nkLK0#upyIZpmRN(yF($pVTuTt5bLNC6Jvq z>+Tf_u6c0@UMe2ci^YSgYo6DxKVC~Wlwd?9X28ieDYEF}aOhI9(8Ef>B^sA@6NtUR mU}>8gl_D11$cq>O=MFq!JtBRN+z*<53m~ji1U5syf!R-I-DhY3 diff --git a/Java/LeetCodeBestPokerHand.java b/Java/Leetcode/LeetCodeBestPokerHand.java similarity index 100% rename from Java/LeetCodeBestPokerHand.java rename to Java/Leetcode/LeetCodeBestPokerHand.java diff --git a/Java/LeetCodePlusOne.java b/Java/Leetcode/LeetCodePlusOne.java similarity index 100% rename from Java/LeetCodePlusOne.java rename to Java/Leetcode/LeetCodePlusOne.java diff --git a/Java/LeetcodeIteratorForCombination.java b/Java/Leetcode/LeetcodeIteratorForCombination.java similarity index 100% rename from Java/LeetcodeIteratorForCombination.java rename to Java/Leetcode/LeetcodeIteratorForCombination.java diff --git a/Java/LeetcodeLetterTilePossibilities.java b/Java/Leetcode/LeetcodeLetterTilePossibilities.java similarity index 100% rename from Java/LeetcodeLetterTilePossibilities.java rename to Java/Leetcode/LeetcodeLetterTilePossibilities.java diff --git a/Java/LeetcodeLruCache.java b/Java/Leetcode/LeetcodeLruCache.java similarity index 100% rename from Java/LeetcodeLruCache.java rename to Java/Leetcode/LeetcodeLruCache.java diff --git a/Java/LeetcodeNThTribonacciNumber.java b/Java/Leetcode/LeetcodeNThTribonacciNumber.java similarity index 100% rename from Java/LeetcodeNThTribonacciNumber.java rename to Java/Leetcode/LeetcodeNThTribonacciNumber.java diff --git a/Java/LeetcodeReverseNodesInKGroup.java b/Java/Leetcode/LeetcodeReverseNodesInKGroup.java similarity index 100% rename from Java/LeetcodeReverseNodesInKGroup.java rename to Java/Leetcode/LeetcodeReverseNodesInKGroup.java diff --git a/Java/LeetcodeSumOfAllSubsetXorTotals.java b/Java/Leetcode/LeetcodeSumOfAllSubsetXorTotals.java similarity index 100% rename from Java/LeetcodeSumOfAllSubsetXorTotals.java rename to Java/Leetcode/LeetcodeSumOfAllSubsetXorTotals.java diff --git a/Java/LeetcodeTheSkylineProblem.java b/Java/Leetcode/LeetcodeTheSkylineProblem.java similarity index 100% rename from Java/LeetcodeTheSkylineProblem.java rename to Java/Leetcode/LeetcodeTheSkylineProblem.java diff --git a/Java/leetcode_Valid Parentheses b/Java/Leetcode/leetcode_Valid Parentheses.java similarity index 100% rename from Java/leetcode_Valid Parentheses rename to Java/Leetcode/leetcode_Valid Parentheses.java diff --git a/Java/Linked List/Copy_List_with_Random_Pointer.java b/Java/LinkedList/Copy_List_with_Random_Pointer.java similarity index 100% rename from Java/Linked List/Copy_List_with_Random_Pointer.java rename to Java/LinkedList/Copy_List_with_Random_Pointer.java diff --git a/Java/LinkedList/MergeTwoSortedList b/Java/LinkedList/MergeTwoSortedList.java similarity index 100% rename from Java/LinkedList/MergeTwoSortedList rename to Java/LinkedList/MergeTwoSortedList.java diff --git a/Java/MatirixMultiplication b/Java/Matrix/MatirixMultiplication similarity index 100% rename from Java/MatirixMultiplication rename to Java/Matrix/MatirixMultiplication diff --git a/Java/MatrixChainMultiplication.java b/Java/Matrix/MatrixChainMultiplication.java similarity index 100% rename from Java/MatrixChainMultiplication.java rename to Java/Matrix/MatrixChainMultiplication.java diff --git a/Java/SpiralMatrix.java b/Java/Matrix/SpiralMatrix.java similarity index 100% rename from Java/SpiralMatrix.java rename to Java/Matrix/SpiralMatrix.java diff --git a/Java/Pattern-Questions/Question15.java b/Java/PatternQuestions/Question15.java similarity index 100% rename from Java/Pattern-Questions/Question15.java rename to Java/PatternQuestions/Question15.java diff --git a/Java/BinarySearchSQRT.java b/Java/SearchingAlgorithms/BinarySearchSQRT.java similarity index 95% rename from Java/BinarySearchSQRT.java rename to Java/SearchingAlgorithms/BinarySearchSQRT.java index 97cb8a8b..0558ee3b 100644 --- a/Java/BinarySearchSQRT.java +++ b/Java/SearchingAlgorithms/BinarySearchSQRT.java @@ -1,43 +1,43 @@ -package Searching; - - -public class BinarySearchSQRT { - public static void main(String[] args) { - int n = 40; - int p = 3; - System.out.printf("%.3f",sqrt(n,p)); - - } - //time complexity: O(log n) - static double sqrt(int n, int p) - { - int start = 0; - int end = n; - double root = 0.0; - - while(start <= end) - { - int m = start + (end - start) / 2; - - if(m * m == n) - return m; - if(m * m > n) - { - end = m - 1; - } - else - start = m + 1; - } - double incr = 0.1; - for(int i = 0; i < p; i++) - { - while(root * root <= n) - root += incr; - root -= incr; - incr /= 10; - - } - return root; - } - } - +package Searching; + + +public class BinarySearchSQRT { + public static void main(String[] args) { + int n = 40; + int p = 3; + System.out.printf("%.3f",sqrt(n,p)); + + } + //time complexity: O(log n) + static double sqrt(int n, int p) + { + int start = 0; + int end = n; + double root = 0.0; + + while(start <= end) + { + int m = start + (end - start) / 2; + + if(m * m == n) + return m; + if(m * m > n) + { + end = m - 1; + } + else + start = m + 1; + } + double incr = 0.1; + for(int i = 0; i < p; i++) + { + while(root * root <= n) + root += incr; + root -= incr; + incr /= 10; + + } + return root; + } + } + diff --git a/Java/SortingTechniques/InsertionSort b/Java/SortingTechniques/InsertionSort.java similarity index 100% rename from Java/SortingTechniques/InsertionSort rename to Java/SortingTechniques/InsertionSort.java diff --git a/Java/MergeSort b/Java/SortingTechniques/MergeSort similarity index 100% rename from Java/MergeSort rename to Java/SortingTechniques/MergeSort diff --git a/Java/Balanced_Brackets.java b/Java/Stack/Balanced_Brackets.java similarity index 96% rename from Java/Balanced_Brackets.java rename to Java/Stack/Balanced_Brackets.java index 2b653619..ca014d0c 100644 --- a/Java/Balanced_Brackets.java +++ b/Java/Stack/Balanced_Brackets.java @@ -1,38 +1,38 @@ -//For a given a string expression containing only round brackets or parentheses, check if they are balanced or not. Brackets are said to be balanced if the bracket which opens last, closes first. - -package Stack; -import java.util.Stack; - -public class Balanced_Brackets { - - public static boolean checkBalanced(String str) { - Stack stack = new Stack<>(); - for (int i = 0; i < str.length(); i++) { - char ch = str.charAt(i); - if (ch == '(' || ch == '{' || ch == '[') { - stack.push(ch); - } else if( ch=='}' || ch==')' || ch==']' ) { - - if(stack.isEmpty()) { - return false; - } - else if(ch==')' && stack.peek()=='('||ch==']'&& stack.peek()=='['||ch=='}'&& stack.peek()=='{') - stack.pop(); - else { - return false; - } - } - } - if(stack.isEmpty()) { - return true; - } - else { - return false; - } - } - - public static void main(String[] args) { - String string = "{ a + [ b+ (c + d)] + (e + f) }"; - System.out.println(checkBalanced(string)); - } -} +//For a given a string expression containing only round brackets or parentheses, check if they are balanced or not. Brackets are said to be balanced if the bracket which opens last, closes first. + +package Stack; +import java.util.Stack; + +public class Balanced_Brackets { + + public static boolean checkBalanced(String str) { + Stack stack = new Stack<>(); + for (int i = 0; i < str.length(); i++) { + char ch = str.charAt(i); + if (ch == '(' || ch == '{' || ch == '[') { + stack.push(ch); + } else if( ch=='}' || ch==')' || ch==']' ) { + + if(stack.isEmpty()) { + return false; + } + else if(ch==')' && stack.peek()=='('||ch==']'&& stack.peek()=='['||ch=='}'&& stack.peek()=='{') + stack.pop(); + else { + return false; + } + } + } + if(stack.isEmpty()) { + return true; + } + else { + return false; + } + } + + public static void main(String[] args) { + String string = "{ a + [ b+ (c + d)] + (e + f) }"; + System.out.println(checkBalanced(string)); + } +} diff --git a/Java/Stack/InfixToPostfix@java/InfixToPostfix_byManik.java b/Java/Stack/InfixToPostfix/InfixToPostfix_byManik.java similarity index 100% rename from Java/Stack/InfixToPostfix@java/InfixToPostfix_byManik.java rename to Java/Stack/InfixToPostfix/InfixToPostfix_byManik.java diff --git a/Java/Stack/InfixToPostfix@java/InfixToPostfix_byManik.class b/Java/Stack/InfixToPostfix@java/InfixToPostfix_byManik.class deleted file mode 100644 index 78678c254bbe65ccc99aa91f9418d011396b5de1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2227 zcmaJ?+jA3D82_E-vPoEINt;qGg(9USO{E~^V#__YQcVGE2}0$vO;6jU$!^SUYKt>I z`RcQd4+`o`AFMNqGl40iZZYFb&Yp9=`}h04@8tJqtG@s^ zg^yxrLO?@MM+jkomOI9R(O)pE+5SsYcVylb2%j`9(>*N^NTzZTL!iXxOe}2X+dyk6JV4;)H$Kc3d8AO)ZTXmN_pFE0twlPD?8@B{B>+inNYCWjs)_OL5|RP)9!w32ZAG^D<*wdBeSGx^p}^u3@>3z=@>KeGQ@^ zAEj1BHzv~8$>LiuN zpvq%N;DBGH9>@lVYr#cvO2=u{0zt>TD>a-I*y?MTykS|g9L0HLG`yi>7$Y0IWyx`6 zQJ~4R1QNBBOuK*7Dpg!Mkw%dzoxugwwxcTVh9aq)^6<8fEXG(ByTa~TH+Go~`NCKP zm)H!$7K_~F&dILfMfR2Bn6?$eJ9t;axQ+>2dC?XO#iz{*l$5Q4inRemsho=Ss*d+? zjeuBkk#TJ7ygG1k2uv!l-+!q-b-us2Ygli?O&zzC$`*5dN=D4ZIA?p34m0*No3uG= zTJmD0I3>#y##Din&EDLO8KwF?STq#e?a4`B554f5c+d+5P{bd`xSYU@xE1CQdLA zWNYz>=hxt^lRF=BgnA!B{K$jA6u*iM1Q1cLF3(D|#9dKO?)Z*h;B~GLS1;F5t~A#X zu2<`OKX*mH$#p!q5?TqbG_CO54-#~oz!nVh&mvEWFoFX@2zqBX*Sw1v z>V?VsGp=PHBYN#2HjM>NclK7He~tUSomIq-1rxzXX#Wy}eO2uG0zKTienoc`JtTX) z``DT$wRcrTnO%PVSDzvuuHxv`Wn4)FTT=IMSP9hBj)fATmgHC1nNEaORl-?6Z~6J( z%jlv~@*Z0JhV*nISQGywAeNusV4T!D`3>59&OO#Y=^xe*$sxgWf~dD+6U&uA2X+zt zZhp_QP#3WWljtIPdtvdQXBf;vCKjaA(CuIs(D!>ii>b2^Gv*1CiLKHaSM5ds>(jF ch2 = new ArrayList<>(); - - int maincount = 0; - - for(int i=0; i ch2 = new ArrayList<>(); + + int maincount = 0; + + for(int i=0; i arr[j]){ - //swap elements - temp = arr[j-1]; - arr[j-1] = arr[j]; - arr[j] = temp; - } - - } - } - - } - public static void main(String[] args) { - int arr[] ={3,60,35,2,45,320,5}; - - System.out.println("Array Before Bubble Sort"); - for(int i=0; i < arr.length; i++){ - System.out.print(arr[i] + " "); - } - System.out.println(); - - bubbleSort(arr);//sorting array elements using bubble sort - - System.out.println("Array After Bubble Sort"); - for(int i=0; i < arr.length; i++){ - System.out.print(arr[i] + " "); - } - - } -} From 39f1d205ece22818db9842335364d99e5775a46c Mon Sep 17 00:00:00 2001 From: Gaurish Ojha Date: Wed, 5 Oct 2022 23:46:58 +0530 Subject: [PATCH 351/448] Added Leetcode String Problem 443 Name: String Compression Url: https://leetcode.com/problems/string-compression/ Tag: String --- ...umber_in _Binary_Representation_to_One.c++ | 27 ------------ String/443_String_Compression.c++ | 44 +++++++++++++++++++ 2 files changed, 44 insertions(+), 27 deletions(-) delete mode 100644 String/1404 Number_of_Steps_to_Reduce_a_Number_in _Binary_Representation_to_One.c++ create mode 100644 String/443_String_Compression.c++ diff --git a/String/1404 Number_of_Steps_to_Reduce_a_Number_in _Binary_Representation_to_One.c++ b/String/1404 Number_of_Steps_to_Reduce_a_Number_in _Binary_Representation_to_One.c++ deleted file mode 100644 index 42544b3f..00000000 --- a/String/1404 Number_of_Steps_to_Reduce_a_Number_in _Binary_Representation_to_One.c++ +++ /dev/null @@ -1,27 +0,0 @@ -// Name: Number_of_Steps_to_Reduce_a_Number_in _Binary_Representation_to_One -// Url: https://leetcode.com/problems/number-of-steps-to-reduce-a-number-in-binary-representation-to-one/ -//----------------------------------------------------------------------------------------------------------- -class Solution -{ -public: - int numSteps(string s) - { - int cnt = 0, cntz = 0; - - for (int i = s.length() - 1; i > 0; i--) - { - if (s[i] == '0' && cntz == 0) - cnt++; - else if (s[i] == '0') - cnt += 2; - else - { - cntz++; - cnt++; - }; - } - if (cntz > 0) - cnt += 2; - return cnt; - } -}; \ No newline at end of file diff --git a/String/443_String_Compression.c++ b/String/443_String_Compression.c++ new file mode 100644 index 00000000..8db94432 --- /dev/null +++ b/String/443_String_Compression.c++ @@ -0,0 +1,44 @@ +// Name :String Compression +// Url: https://leetcode.com/problems/string-compression/ +// Tag : String + +class Solution +{ +public: + int compress(vector &chars) + { + + char temp = chars[0]; + int cnt = 0, n = chars.size(); + for (int i = 0; i < n; i++) + { + if (chars[i] == temp) + cnt++; + else + { + chars.erase(chars.begin(), chars.begin() + i); + i = 0; + n -= cnt; + chars.push_back(temp); + if (cnt != 1) + { + string k = to_string(cnt); + for (auto x : k) + chars.push_back(x); + } + temp = chars[i]; + cnt = 1; + continue; + } + } + chars.erase(chars.begin(), chars.begin() + cnt); + chars.push_back(temp); + if (cnt != 1) + { + string k = to_string(cnt); + for (auto x : k) + chars.push_back(x); + } + return chars.size(); + } +}; \ No newline at end of file From 1b897e1508aae7e1fa3c7935dd9a727b92ff7f39 Mon Sep 17 00:00:00 2001 From: Jayesh Date: Thu, 6 Oct 2022 00:22:10 +0530 Subject: [PATCH 352/448] Added code for Burning tree --- Trees/burningTree.cpp | 175 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 175 insertions(+) create mode 100644 Trees/burningTree.cpp diff --git a/Trees/burningTree.cpp b/Trees/burningTree.cpp new file mode 100644 index 00000000..46e6ff6b --- /dev/null +++ b/Trees/burningTree.cpp @@ -0,0 +1,175 @@ +// Burning tree + + +#include +using namespace std; + +struct Node { + int data; + Node *left; + Node *right; + + Node (int val) { + data = val; + left = right = NULL; + } +}; + + +Node *buildTree (string str) { + // Corner Case + if (str.length() == 0 || str[0] == 'N') + return NULL; + + // Creating vector of strings from input + // string after spliting by space + vector ip; + + istringstream iss(str); + for (string str; iss >> str;) + ip.push_back(str); + + // Create the root of the tree + Node *root = new Node (stoi (ip[0])); + + // Push the root to the queue + queue queue; + queue.push(root); + + // Starting from the second element + int i = 1; + while (!queue.empty() && i < ip.size()) { + + // Get and remove the front of the queue + Node *currNode = queue.front(); + queue.pop(); + + // Get the current Node's value from the string + string currVal = ip[i]; + + // If the left child is not null + if (currVal != "N") { + + // Create the left child for the current Node + currNode->left = new Node (stoi(currVal)); + + // Push it to the queue + queue.push(currNode->left); + } + + // For the right child + i++; + if (i >= ip.size()) + break; + currVal = ip[i]; + + // If the right child is not null + if (currVal != "N") { + + // Create the right child for the current Node + currNode->right = new Node (stoi(currVal)); + + // Push it to the queue + queue.push(currNode->right); + } + i++; + } + + return root; +} + + + + + +class Solution { + public: + Node* createParentMapping(Node* root, int target, map &nodeToParent){ + Node* res = NULL; + + queue q; + q.push(root); + nodeToParent[root] = NULL; + + while(!q.empty()){ + Node* front = q.front(); + q.pop(); + if(front->data == target){ + res = front; + } + if(front->left){ + nodeToParent[front->left] = front; + q.push(front->left); + } + if(front->right){ + nodeToParent[front->right] = front; + q.push(front->right); + } + } + return res; + } + + int burnTree(Node* targetNode, map nodeToParent){ + map visited; + queue q; + q.push(targetNode); + visited[targetNode] = true; + + int ans = 0; + + while(!q.empty()){ + bool flag = 0; + int size = q.size(); + for(int i=0; ileft && !visited[front->left]){ + flag = 1; + q.push(front->left); + visited[front->left] = 1; + } + if(front->right && !visited[front->right]){ + flag = 1; + q.push(front->right); + visited[front->right] = 1; + } + if(nodeToParent[front] && !visited[nodeToParent[front]]){ + flag = 1; + q.push(nodeToParent[front]); + visited[nodeToParent[front]] = 1; + } + } + if(flag){ + ans++; + } + } + return ans; + } + + int minTime(Node* root, int target){ + map nodeToParent; + Node* targetNode = createParentMapping(root, target, nodeToParent); + + int ans = burnTree(targetNode, nodeToParent); + return ans; + } +}; + +int main() { + int t; + cin; + while (t--) { + string s; + getline(cin, s); + Node *root = buildTree(s); + + int target; + cin >> target; + Solution ob; + cout << ob.minTime(root, target) << endl; + } + return 0; +} + + From a22c53754111cb87049a626a8cb3a76bab40d585 Mon Sep 17 00:00:00 2001 From: Aishal Gupta Date: Thu, 6 Oct 2022 00:22:27 +0530 Subject: [PATCH 353/448] Codeforces 49A in C++ From de5e39aad97c4359845257aa0290a0c97488a2bc Mon Sep 17 00:00:00 2001 From: Vaibhav Pandey Date: Thu, 6 Oct 2022 00:48:07 +0530 Subject: [PATCH 354/448] Added code for Implementing Linked List using Java --- Java/Linked List/LinkedList.java | 76 ++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 Java/Linked List/LinkedList.java diff --git a/Java/Linked List/LinkedList.java b/Java/Linked List/LinkedList.java new file mode 100644 index 00000000..74eeb3ac --- /dev/null +++ b/Java/Linked List/LinkedList.java @@ -0,0 +1,76 @@ +//Author: Vaibhav Pandey +//Date Created: 06/03/2022 +//Title: Implementing Linked List data structure in Java from scratch + + +//Start of main LinkedList class +public class LinkedList{ + + //Node class for storing current node's value and the address to the next node + static class Node{ + Node next; + int value; + + //Constructor that initializes node's value + public Node(int value){ + this.value = value; + } + } + + //Initializing the first node to null + Node first = null; + + //Function for adding elements at the front of the list + public void addAtFront(Node node){ + //Assign the next node's address to first and store the current node's address in first + node.next = first; + first = node; + } + + //Function for adding elements at the end of the list + public void addAtEnd(Node node){ + //If the list is already empty, just assign the first address to the current node + if(first == null){ + first = node; + } + //If the list is not empty, traverse the list from the first element to the last element and add the current node at last + else{ + Node ptr = first; + while(ptr.next != null){ + ptr = ptr.next; + } + ptr.next = node; + } + } + + //Function for removing the first element of the list + public void removeFront(){ + //To remove the first element, just set the next element to first + first = first.next; + } + + + //Function to print the list + public void print(){ + //For printing just traverse the list from first to last + Node ptr = first.next; + System.out.print(first.value); + while(ptr != null){ + System.out.print(" -> " + ptr.value); + ptr = ptr.next; + } + System.out.println(" -> null"); + //The last element of the list points to null + } + + //Main function to run the LinkedList class + public static void main(String[] args){ + LinkedList list = new LinkedList(); + list.addAtEnd(new Node(5)); + list.addAtEnd(new Node(7)); + list.addAtFront(new Node(10)); + list.addAtEnd(new Node(2)); + list.print(); + } + +} \ No newline at end of file From 516287b76e037f8c7b0bd476ae8e5a0dc2bd78a2 Mon Sep 17 00:00:00 2001 From: ShreyasiDebnath <92165807+ShreyasiDebnath@users.noreply.github.com> Date: Thu, 6 Oct 2022 01:15:49 +0530 Subject: [PATCH 355/448] Create InsertionInABST.cpp --- CPP/BST/InsertionInABST.cpp | 90 +++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 CPP/BST/InsertionInABST.cpp diff --git a/CPP/BST/InsertionInABST.cpp b/CPP/BST/InsertionInABST.cpp new file mode 100644 index 00000000..efb61fd0 --- /dev/null +++ b/CPP/BST/InsertionInABST.cpp @@ -0,0 +1,90 @@ +#include +#include +using namespace std; + +struct node { + int data; + struct node *left, *right; +}; + +// Create a node +struct node *createnode(int item) { + struct node *temp = (struct node *)malloc(sizeof(struct node)); + temp->data = item; + temp->left = temp->right = NULL; + return temp; +} +void inorder(struct node *root) { + if (root != NULL) { + inorder(root->left); + cout << root->data << " "; + inorder(root->right); + } +} +int search(struct node *root, int key){ + struct node *prev = NULL; + while(root!=NULL){ + prev = root; + if(key==root->data){ + printf("Cannot insert %d, already in BST", key); + return 1; + } + else if(keydata){ + root = root->left; + } + else{ + root = root->right; + } + } + return 0; +} +struct node *insert(struct node *node, int key) { + if(search(node,key)==0){ + + if (node == NULL){ + return createnode(key); + } + if (key < node->data){ + node->left = insert(node->left, key); + } + else{ + node->right = insert(node->right, key); + } + } + + return node; +} + + +int main() { + struct node *root = NULL; + int ch; + int x; + cout<<"Press 0 to exit else enter 1: "; + cin>>ch; + while(ch!=0) + { + cout<<"\n"<<"1.Insertion"<<"\n"<<"2.View"<<"\n"; + cout<<"\n"<<"Enter choice :"; + cin>>ch; + switch (ch) + { + case 1: + cout<<"Enter the value you want to insert in binary search tree: "; + cin>>x; + root = insert(root, x); + break; + case 2: + cout << "Inorder traversal: "; + inorder(root); + break; + + default: + printf("\nINVALID CHOICE !!"); + break; + } + } +return 0; + + +} From f81746e0e6f4be16f659c40d275445ceb775702f Mon Sep 17 00:00:00 2001 From: Gantavya Malviya <39916680+gantavyamalviya@users.noreply.github.com> Date: Thu, 6 Oct 2022 16:19:43 +0530 Subject: [PATCH 356/448] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index d3e848a4..c31fa0ae 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,4 @@ +## This repository is not a part of Hacktoberfest 2022

Data Structures and Algorithms

@@ -15,7 +16,7 @@ Steps to contribute in this repository 3. Add useful code for the open-source community 4. Make pull request 5. Now, it time for review (Don't worry, our team we will review your Pull Request(PR) within 12 hours. -## Maintainers (Our Team for HacktoberFest) +## Maintainers From 12912fabd251370a6b856ff3b66399ebd859c0d6 Mon Sep 17 00:00:00 2001 From: Gantavya Malviya <39916680+gantavyamalviya@users.noreply.github.com> Date: Thu, 6 Oct 2022 16:22:47 +0530 Subject: [PATCH 357/448] Create contributors.yml --- .github/workflows/contributors.yml | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 .github/workflows/contributors.yml diff --git a/.github/workflows/contributors.yml b/.github/workflows/contributors.yml new file mode 100644 index 00000000..64d7775e --- /dev/null +++ b/.github/workflows/contributors.yml @@ -0,0 +1,23 @@ +name: Add contributors +on: + schedule: + - cron: '20 20 * * *' + push: + branches: + - main + +jobs: + add-contributors: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: BobAnkh/add-contributors@master + with: + CONTRIBUTOR: '### Contributors' + COLUMN_PER_ROW: '6' + ACCESS_TOKEN: ${{secrets.GITHUB_TOKEN}} + IMG_WIDTH: '100' + FONT_SIZE: '14' + PATH: '/README.md' + COMMIT_MESSAGE: 'docs(README): update contributors' + AVATAR_SHAPE: 'round' From 141c22f624fceeabaa563c0aef39ccd96bdd5572 Mon Sep 17 00:00:00 2001 From: Gantavya Malviya <39916680+gantavyamalviya@users.noreply.github.com> Date: Thu, 6 Oct 2022 16:23:24 +0530 Subject: [PATCH 358/448] Update README.md --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index c31fa0ae..aba3385c 100644 --- a/README.md +++ b/README.md @@ -32,8 +32,9 @@ Steps to contribute in this repository
-## Top Contributors -Update in progress.... +### Contributors + + -### Thanks for visiting! -### Regards, -### Team CodeMistic -[![Linkedin](https://img.shields.io/badge/-LinkedIn-blue?style=flat-square&logo=Linkedin&logoColor=white&link=https://www.linkedin.com/company/codemistic/)](https://www.linkedin.com/company/codemistic/) -[![Twitter](https://img.shields.io/badge/-Twitter-%231DA1F2.svg?style=flat-square&logo=twitter&logoColor=white&link=https://www.twitter.com/codemistic/)](https://www.twitter.com/codemistic/) -[![Instagram](https://img.shields.io/badge/-Instagram-red?style=flat-square&logo=Instagram&logoColor=white&link=https://www.instagram.com/codemistic.in/)](https://www.instagram.com/codemistic.in/) -[![GitHub](https://img.shields.io/badge/-Github-%23100000.svg?&style=flat-square&logo=github&logoColor=white&link=https://www.github.com/codemistic/)](https://www.github.com/codemistic/) -[![views](https://komarev.com/ghpvc/?username=codemistic&label=Profile%20views&color=0e75b6&style=flat)](https://github.com/codemistic) - -
Telegram for codemistic Group + \ No newline at end of file From 3c97f65a4f69a15e8f1d76dfc286c52859e25d8e Mon Sep 17 00:00:00 2001 From: Gantavya Malviya <39916680+gantavyamalviya@users.noreply.github.com> Date: Thu, 6 Oct 2022 16:26:31 +0530 Subject: [PATCH 361/448] Update README.md --- README.md | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index a0f1dff6..3769a392 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -## This repository is not a part of Hacktoberfest 2022 +## This repository is no longer a part of Hacktoberfest 2022

Data Structures and Algorithms

@@ -16,7 +16,19 @@ Steps to contribute in this repository 3. Add useful code for the open-source community 4. Make pull request 5. Now, it time for review (Don't worry, our team we will review your Pull Request(PR) within 12 hours. -## Maintainers + +### Thanks for your contribution! +### Regards, +### Team CodeMistic +[![Linkedin](https://img.shields.io/badge/-LinkedIn-blue?style=flat-square&logo=Linkedin&logoColor=white&link=https://www.linkedin.com/company/codemistic/)](https://www.linkedin.com/company/codemistic/) +[![Twitter](https://img.shields.io/badge/-Twitter-%231DA1F2.svg?style=flat-square&logo=twitter&logoColor=white&link=https://www.twitter.com/codemistic/)](https://www.twitter.com/codemistic/) +[![Instagram](https://img.shields.io/badge/-Instagram-red?style=flat-square&logo=Instagram&logoColor=white&link=https://www.instagram.com/codemistic.in/)](https://www.instagram.com/codemistic.in/) +[![GitHub](https://img.shields.io/badge/-Github-%23100000.svg?&style=flat-square&logo=github&logoColor=white&link=https://www.github.com/codemistic/)](https://www.github.com/codemistic/) +[![views](https://komarev.com/ghpvc/?username=codemistic&label=Profile%20views&color=0e75b6&style=flat)](https://github.com/codemistic) + +Telegram for codemistic Group + +### Maintainers @@ -2247,4 +2259,4 @@ Steps to contribute in this repository Aryan Bhardwaj - \ No newline at end of file + From bda2705554417ea23e3710b2f0a6484b6685ed31 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 6 Oct 2022 20:42:57 +0000 Subject: [PATCH 362/448] docs(README): update contributors --- README.md | 153 ++++++++++++++++++++++++++---------------------------- 1 file changed, 73 insertions(+), 80 deletions(-) diff --git a/README.md b/README.md index 3769a392..e002b65a 100644 --- a/README.md +++ b/README.md @@ -699,15 +699,6 @@ Steps to contribute in this repository gantavya12 - - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + From 74db799df422ae4d6076f90ce1b72079f6796d9b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 11 Oct 2022 20:44:43 +0000 Subject: [PATCH 365/448] docs(README): update contributors --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index f63240e9..ab9aa92c 100644 --- a/README.md +++ b/README.md @@ -965,9 +965,9 @@ Steps to contribute in this repository From 89c15a8c0f73010c1cc98919f0a21cb3134203a5 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 12 Oct 2022 20:43:41 +0000 Subject: [PATCH 366/448] docs(README): update contributors --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index ab9aa92c..7968017d 100644 --- a/README.md +++ b/README.md @@ -115,9 +115,9 @@ Steps to contribute in this repository From d17292ef891ce3f133163e2190e144278707976e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 10 Nov 2022 20:37:12 +0000 Subject: [PATCH 373/448] docs(README): update contributors --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 8994c996..d8d361f6 100644 --- a/README.md +++ b/README.md @@ -993,10 +993,10 @@ Steps to contribute in this repository - - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - @@ -1609,7 +1609,7 @@ Steps to contribute in this repository From 2549b2f9970409bf61b5ac08a40e299bc7254039 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 16 Mar 2023 20:30:04 +0000 Subject: [PATCH 391/448] docs(README): update contributors --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index a6a86ca3..c36b0bd0 100644 --- a/README.md +++ b/README.md @@ -313,9 +313,9 @@ Steps to contribute in this repository From 356fec05a603c0a12422242c1a744942a1974bfc Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 19 Aug 2023 20:27:21 +0000 Subject: [PATCH 405/448] docs(README): update contributors --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 36d76fb4..17c0edba 100644 --- a/README.md +++ b/README.md @@ -774,9 +774,9 @@ Steps to contribute in this repository - - - + + + + + - - From c733eba4fb9e071027411913c2aeb80f8bac11e9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 22 Sep 2023 20:26:52 +0000 Subject: [PATCH 412/448] docs(README): update contributors --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 755ccbec..74f88d00 100644 --- a/README.md +++ b/README.md @@ -2182,9 +2182,9 @@ Steps to contribute in this repository - - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + + + + + + + + + + + + + + + + + + + + - - + + - - + + + - - + + + + @@ -590,177 +722,198 @@ Steps to contribute in this repository + + + + + - - + + - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - From a7375a04e4905da37fe3ce80233873b67b87d778 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 12 Jan 2024 20:26:49 +0000 Subject: [PATCH 420/448] docs(README): update contributors --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 18ab2f7f..6c839130 100644 --- a/README.md +++ b/README.md @@ -1792,7 +1792,7 @@ Steps to contribute in this repository - - - + + - - + + - - + + + - - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + From bb967dcec63fda4439254357f9ec10401b4a980e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 28 Feb 2024 20:26:42 +0000 Subject: [PATCH 425/448] docs(README): update contributors --- README.md | 155 ++++++++++++++++++++++++++++-------------------------- 1 file changed, 81 insertions(+), 74 deletions(-) diff --git a/README.md b/README.md index 49fd5125..6f2922d5 100644 --- a/README.md +++ b/README.md @@ -779,6 +779,13 @@ Steps to contribute in this repository Solaris + + + - - + + - - + + - - - + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - - - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - - + + + - - + + - - + + - - + + + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + + - - - + + - - + + - - + + - - - - - + + + + + + - - + + - - + + - - + + - - + + - - + + - - + + - - - + + + - - + + - - + + - - - - - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + From a8dd8bc77ff9cd0eab596a804f8502d8075123fb Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 4 Jul 2024 20:27:38 +0000 Subject: [PATCH 435/448] docs(README): update contributors --- README.md | 311 ++++++++++++++++++++++++++---------------------------- 1 file changed, 152 insertions(+), 159 deletions(-) diff --git a/README.md b/README.md index 8ece56b4..fc4a1960 100644 --- a/README.md +++ b/README.md @@ -803,10 +803,10 @@ Steps to contribute in this repository + + + - - - - - - + + - - + + - - + + + - - - - + + - - + + - - + + + + + + + - - + + - - + + - - - - - - + + - - + + - - + + + + + + - - - - - - + + - - + + - - + + - - - - + + + + - - - + + - - + + + + + + - - + + - - + + - - - - - - + + - - + + - - + + + + + + - - + + - - + + - - - - - - + + - - + + - - + + + + + + - - + + - - + + - - - + + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + + - - + + - - - + + - - + + - - + + - - - - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - - + + - - + + - - + + + - - - + + - - + + - - + + +
- - precisecharmer/ -
- precisecharmer -
-
Adarsh/ @@ -715,6 +706,8 @@ Steps to contribute in this repository Adarsh
Anish @@ -750,8 +743,6 @@ Steps to contribute in this repository ADITYA SAI
Abhimanyu @@ -759,6 +750,8 @@ Steps to contribute in this repository Abhimanyu Chauhan
Alok @@ -794,8 +787,6 @@ Steps to contribute in this repository Bhaswati Roy
Dipendra @@ -803,6 +794,8 @@ Steps to contribute in this repository Dipendra Raghav
Jheyanth @@ -838,8 +831,6 @@ Steps to contribute in this repository Manas Rai
Md @@ -847,6 +838,8 @@ Steps to contribute in this repository Md Tausif Siddiqui
Niladri @@ -882,8 +875,6 @@ Steps to contribute in this repository Satyam Tripathi
SavvyShivam/ @@ -891,6 +882,8 @@ Steps to contribute in this repository SavvyShivam
Shakti @@ -926,8 +919,6 @@ Steps to contribute in this repository Siddharth Reddy Anthireddy
Solaris/ @@ -935,6 +926,8 @@ Steps to contribute in this repository Solaris
Sudhir8787/ @@ -970,8 +963,6 @@ Steps to contribute in this repository avishagoyal08
das-amit/ @@ -979,6 +970,8 @@ Steps to contribute in this repository das-amit
lifeashaze/ @@ -1001,10 +994,10 @@ Steps to contribute in this repository - - priya-19054/ + + chop-suey54/
- priya-19054 + chop-suey54
@@ -1014,8 +1007,6 @@ Steps to contribute in this repository sameer-19
siddharth @@ -1023,6 +1014,8 @@ Steps to contribute in this repository siddharth jain
Shreyas @@ -1058,8 +1051,6 @@ Steps to contribute in this repository Rai_M
ADITYA @@ -1067,6 +1058,8 @@ Steps to contribute in this repository ADITYA PATHAK
AMAN @@ -1102,8 +1095,6 @@ Steps to contribute in this repository Abhiroop-Singh
Abhishek @@ -1111,6 +1102,8 @@ Steps to contribute in this repository Abhishek Kumar
Abhishek @@ -1146,8 +1139,6 @@ Steps to contribute in this repository Aditya Raj
Agrim @@ -1155,6 +1146,8 @@ Steps to contribute in this repository Agrim Jain
Aiyan @@ -1190,8 +1183,6 @@ Steps to contribute in this repository Amelia Dutta
Aneesh @@ -1199,6 +1190,8 @@ Steps to contribute in this repository Aneesh Gupta
Aniket @@ -1234,8 +1227,6 @@ Steps to contribute in this repository Anshsahu0802
Anshul @@ -1243,6 +1234,8 @@ Steps to contribute in this repository Anshul Nigam
Anshuman @@ -1278,8 +1271,6 @@ Steps to contribute in this repository Arnav Agarwal
Arpit @@ -1287,6 +1278,8 @@ Steps to contribute in this repository Arpit Rath
Arya @@ -1322,8 +1315,6 @@ Steps to contribute in this repository Ayush Rawat
Bhavna @@ -1331,6 +1322,8 @@ Steps to contribute in this repository Bhavna Panjwani
Rik @@ -1366,8 +1359,6 @@ Steps to contribute in this repository Durgesh Sahu
Firejoust/ @@ -1375,6 +1366,8 @@ Steps to contribute in this repository Firejoust
Harshit @@ -1410,8 +1403,6 @@ Steps to contribute in this repository Jayesh Kumavat
JeetuGuptaa/ @@ -1419,6 +1410,8 @@ Steps to contribute in this repository JeetuGuptaa
K @@ -1454,8 +1447,6 @@ Steps to contribute in this repository Kashish Ahuja
Kashish @@ -1463,6 +1454,8 @@ Steps to contribute in this repository Kashish Lakhara
Kasun @@ -1498,8 +1491,6 @@ Steps to contribute in this repository Paolo Cretaro
Shrey @@ -1507,6 +1498,8 @@ Steps to contribute in this repository Shrey Midha
Mohammad @@ -1542,8 +1535,6 @@ Steps to contribute in this repository Muhammad Noorani
Muhammad @@ -1551,6 +1542,8 @@ Steps to contribute in this repository Muhammad Sameer Farooq
Nakul @@ -1586,8 +1579,6 @@ Steps to contribute in this repository Pavan
Prajwal/ @@ -1595,6 +1586,8 @@ Steps to contribute in this repository Prajwal
PranathiJyothi/ @@ -1630,8 +1623,6 @@ Steps to contribute in this repository Rahmat Sulistio
Rahul @@ -1639,6 +1630,8 @@ Steps to contribute in this repository Rahul Singh Gurjar
Raj @@ -1674,8 +1667,6 @@ Steps to contribute in this repository Sachin Kamath
Sachin @@ -1683,6 +1674,8 @@ Steps to contribute in this repository Sachin Kant
Sam/ @@ -1718,8 +1711,6 @@ Steps to contribute in this repository Sarthak Kurothe
Shalin @@ -1727,6 +1718,8 @@ Steps to contribute in this repository Shalin Bhavsar
Shitij @@ -1762,8 +1755,6 @@ Steps to contribute in this repository Sid
Sinu @@ -1771,6 +1762,8 @@ Steps to contribute in this repository Sinu Xavier
sohandiginnk/ @@ -1806,8 +1799,6 @@ Steps to contribute in this repository Storm_Chaser
Sudhanshu-Purohit/ @@ -1815,6 +1806,8 @@ Steps to contribute in this repository Sudhanshu-Purohit
Sumit @@ -1850,8 +1843,6 @@ Steps to contribute in this repository Taneesha Suwandarachchi
Tanmoy @@ -1859,6 +1850,8 @@ Steps to contribute in this repository Tanmoy Sengupta
Tanuj @@ -1894,8 +1887,6 @@ Steps to contribute in this repository Utkarsh Rai
vaibhav0806/ @@ -1903,6 +1894,8 @@ Steps to contribute in this repository vaibhav0806
Vandana @@ -1938,8 +1931,6 @@ Steps to contribute in this repository Vishal Sharma
Vishesh @@ -1947,6 +1938,8 @@ Steps to contribute in this repository Vishesh Gupta
Yasir @@ -1982,8 +1975,6 @@ Steps to contribute in this repository ankit20214
Arhum @@ -1991,6 +1982,8 @@ Steps to contribute in this repository Arhum Khan
Arpit @@ -2026,8 +2019,6 @@ Steps to contribute in this repository hruday007
jenna/ @@ -2035,6 +2026,8 @@ Steps to contribute in this repository jenna
@thisiskshitijbansod/ @@ -2070,8 +2063,6 @@ Steps to contribute in this repository Nikita Singh
Nilesh @@ -2079,6 +2070,8 @@ Steps to contribute in this repository Nilesh Das
Nishant/ @@ -2114,8 +2107,6 @@ Steps to contribute in this repository rohinipatil89
RUDRANEEL @@ -2123,6 +2114,8 @@ Steps to contribute in this repository RUDRANEEL DUTTA
Rupesh @@ -2158,8 +2151,6 @@ Steps to contribute in this repository shrutij1247
snatchysquid/ @@ -2167,6 +2158,8 @@ Steps to contribute in this repository snatchysquid
MD @@ -2202,8 +2195,6 @@ Steps to contribute in this repository Vansh Chopra
xoxo16/ @@ -2211,6 +2202,8 @@ Steps to contribute in this repository xoxo16
xsnatchysquidx/ From 88ceff2f25fe4d080e1e4ad5b259efebc1e9d0b9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 7 Oct 2022 20:42:45 +0000 Subject: [PATCH 363/448] docs(README): update contributors --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index e002b65a..ce52b906 100644 --- a/README.md +++ b/README.md @@ -314,9 +314,9 @@ Steps to contribute in this repository
- Aakash + joker_007/
- Aakash Singh + joker_007
From 23e18f4afb5a19cdf7ea310c71afc5b207f1d0a8 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 9 Oct 2022 20:41:25 +0000 Subject: [PATCH 364/448] docs(README): update contributors --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index ce52b906..f63240e9 100644 --- a/README.md +++ b/README.md @@ -129,9 +129,9 @@ Steps to contribute in this repository - yash/ + yash
- yash + yash suthar
- das-amit/ + Amit
- das-amit + Amit Das
- GAURISH + Gaurish
- GAURISH OJHA + Gaurish Ojha
From e4a0c9284c5767534d1e9665e7ec9a8107269503 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 15 Oct 2022 20:41:22 +0000 Subject: [PATCH 367/448] docs(README): update contributors --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 7968017d..e1e62939 100644 --- a/README.md +++ b/README.md @@ -1377,9 +1377,9 @@ Steps to contribute in this repository - HeyItsMeBJ/ + Bhupesh
- HeyItsMeBJ + Bhupesh Jain
From 077577133ec77c2c31df907d1371f1fd39849c0d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 20 Oct 2022 20:43:54 +0000 Subject: [PATCH 368/448] docs(README): update contributors --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index e1e62939..6cb88c79 100644 --- a/README.md +++ b/README.md @@ -1963,9 +1963,9 @@ Steps to contribute in this repository - amanydv72/ + Aman
- amanydv72 + Aman Yadav
From 1b3e09eca66cfc8e84dad0a24a39af749ded6700 Mon Sep 17 00:00:00 2001 From: Gantavya Malviya <39916680+gantavyamalviya@users.noreply.github.com> Date: Sun, 30 Oct 2022 23:13:25 +0530 Subject: [PATCH 369/448] Update README.md --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 6cb88c79..1e7c7895 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,3 @@ -## This repository is no longer a part of Hacktoberfest 2022

Data Structures and Algorithms

From b3dc30387b41bb518c2f751a9bb254bbd5af5445 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 3 Nov 2022 20:29:40 +0000 Subject: [PATCH 370/448] docs(README): update contributors --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1e7c7895..18208a37 100644 --- a/README.md +++ b/README.md @@ -1822,7 +1822,7 @@ Steps to contribute in this repository
- + Tamanna
Tamanna Sharma From 0c309b8754901d7f0376cc7d5b648fade1a30de0 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 6 Nov 2022 20:34:31 +0000 Subject: [PATCH 371/448] docs(README): update contributors --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 18208a37..1e733529 100644 --- a/README.md +++ b/README.md @@ -1089,9 +1089,9 @@ Steps to contribute in this repository
- Abhiroop-Singh/ + Abhiroop
- Abhiroop-Singh + Abhiroop Singh
From 383919ec28bdc3498d832af91ef1572eca5024f0 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 8 Nov 2022 20:38:10 +0000 Subject: [PATCH 372/448] docs(README): update contributors --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 1e733529..8994c996 100644 --- a/README.md +++ b/README.md @@ -1404,9 +1404,9 @@ Steps to contribute in this repository - JeetuGuptaa/ + Jeetu
- JeetuGuptaa + Jeetu Gupta
- - chop-suey54/ + + priyayadav19054/
- chop-suey54 + priyayadav19054
From d38f742be486fc97ac0f0d0b593093adda34389a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 16 Dec 2022 20:29:02 +0000 Subject: [PATCH 374/448] docs(README): update contributors --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d8d361f6..d77c1459 100644 --- a/README.md +++ b/README.md @@ -868,7 +868,7 @@ Steps to contribute in this repository - + Satyam
Satyam Tripathi From ce5db6351019a5f9d8084b4ba9e5ea3cf1c01b17 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 24 Dec 2022 20:27:56 +0000 Subject: [PATCH 375/448] docs(README): update contributors --- README.md | 67 +++++++++++++++++++++++++------------------------------ 1 file changed, 30 insertions(+), 37 deletions(-) diff --git a/README.md b/README.md index d77c1459..8a37e1cb 100644 --- a/README.md +++ b/README.md @@ -1564,13 +1564,6 @@ Steps to contribute in this repository Nitya Anuga
- - Krishna -
- Krishna Kant Maurya -
-
Pavan/ @@ -1585,8 +1578,6 @@ Steps to contribute in this repository Prajwal
PranathiJyothi/ @@ -1594,6 +1585,8 @@ Steps to contribute in this repository PranathiJyothi
Prashantsetia/ @@ -1629,8 +1622,6 @@ Steps to contribute in this repository Rahul Singh Gurjar
Raj @@ -1638,6 +1629,8 @@ Steps to contribute in this repository Raj
Rituraj @@ -1673,8 +1666,6 @@ Steps to contribute in this repository Sachin Kant
Sam/ @@ -1682,6 +1673,8 @@ Steps to contribute in this repository Sam
Sandeep @@ -1717,8 +1710,6 @@ Steps to contribute in this repository Shalin Bhavsar
Shitij @@ -1726,6 +1717,8 @@ Steps to contribute in this repository Shitij Agrawal
Shreya @@ -1761,8 +1754,6 @@ Steps to contribute in this repository Sinu Xavier
sohandiginnk/ @@ -1770,6 +1761,8 @@ Steps to contribute in this repository sohandiginnk
Sohan @@ -1805,8 +1798,6 @@ Steps to contribute in this repository Sudhanshu-Purohit
Sumit @@ -1814,6 +1805,8 @@ Steps to contribute in this repository Sumit Kumar Rai
SwetaDas16/ @@ -1849,8 +1842,6 @@ Steps to contribute in this repository Tanmoy Sengupta
Tanuj @@ -1858,6 +1849,8 @@ Steps to contribute in this repository Tanuj Sharma
Timileyin @@ -1893,8 +1886,6 @@ Steps to contribute in this repository vaibhav0806
Vandana @@ -1902,6 +1893,8 @@ Steps to contribute in this repository Vandana Singh
Vardaan @@ -1937,8 +1930,6 @@ Steps to contribute in this repository Vishesh Gupta
Yasir @@ -1946,6 +1937,8 @@ Steps to contribute in this repository Yasir Jafri
Aman @@ -1981,8 +1974,6 @@ Steps to contribute in this repository Arhum Khan
Arpit @@ -1990,6 +1981,8 @@ Steps to contribute in this repository Arpit Ghura
Ashutosh @@ -2025,8 +2018,6 @@ Steps to contribute in this repository jenna
@thisiskshitijbansod/ @@ -2034,6 +2025,8 @@ Steps to contribute in this repository @thisiskshitijbansod
mas-mis/ @@ -2069,8 +2062,6 @@ Steps to contribute in this repository Nilesh Das
Nishant/ @@ -2078,6 +2069,8 @@ Steps to contribute in this repository Nishant
priyanshu @@ -2113,8 +2106,6 @@ Steps to contribute in this repository RUDRANEEL DUTTA
Rupesh @@ -2122,6 +2113,8 @@ Steps to contribute in this repository Rupesh Piwal
Sahan @@ -2157,8 +2150,6 @@ Steps to contribute in this repository snatchysquid
MD @@ -2166,6 +2157,8 @@ Steps to contribute in this repository MD SOHAIL ANSARI
Sourav @@ -2201,8 +2194,6 @@ Steps to contribute in this repository xoxo16
xsnatchysquidx/ @@ -2210,6 +2201,8 @@ Steps to contribute in this repository xsnatchysquidx
yusmnn/ From baa42635ecc1501bb74b991b90106a9c091bcbc9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 27 Dec 2022 20:28:27 +0000 Subject: [PATCH 376/448] docs(README): update contributors --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 8a37e1cb..ed3dff02 100644 --- a/README.md +++ b/README.md @@ -371,9 +371,9 @@ Steps to contribute in this repository - DharmaWarrior/ + Saar
- DharmaWarrior + Saar Agrawal
@@ -641,7 +641,7 @@ Steps to contribute in this repository - + Sanjay
Sanjay Sathyanarayanan From 035b4c365c1939fc2c04cc8771dff6db92039766 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 28 Dec 2022 20:28:39 +0000 Subject: [PATCH 377/448] docs(README): update contributors --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ed3dff02..06f094c4 100644 --- a/README.md +++ b/README.md @@ -641,7 +641,7 @@ Steps to contribute in this repository
- + Sanjay
Sanjay Sathyanarayanan From a94abdfbe911a8641545a870e563e4877473fb97 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 3 Jan 2023 20:30:01 +0000 Subject: [PATCH 378/448] docs(README): update contributors --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 06f094c4..c5bbbaad 100644 --- a/README.md +++ b/README.md @@ -1609,7 +1609,7 @@ Steps to contribute in this repository
- + Rahmat
Rahmat Sulistio From 773d10807355a45bddb68114a13164867243a1b1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 18 Jan 2023 20:29:50 +0000 Subject: [PATCH 379/448] docs(README): update contributors --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index c5bbbaad..10fa814d 100644 --- a/README.md +++ b/README.md @@ -1999,9 +1999,9 @@ Steps to contribute in this repository
- harsh0050/ + Harsh
- harsh0050 + Harsh Bhikadiya
From 193e35bee35470cb5eb88f70fa99551eec26c7e5 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 23 Jan 2023 20:29:49 +0000 Subject: [PATCH 380/448] docs(README): update contributors --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 10fa814d..b8cfcd4c 100644 --- a/README.md +++ b/README.md @@ -76,7 +76,7 @@ Steps to contribute in this repository - + Aishal
Aishal Gupta From f3511a1a57d65358b0dfef4d199c93c6a28a1afc Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 24 Jan 2023 20:29:32 +0000 Subject: [PATCH 381/448] docs(README): update contributors --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b8cfcd4c..a80caf68 100644 --- a/README.md +++ b/README.md @@ -76,7 +76,7 @@ Steps to contribute in this repository
- + Aishal
Aishal Gupta From 07f8a853c57d62fd775f5c8847d76339aa00fce6 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 4 Feb 2023 20:28:19 +0000 Subject: [PATCH 382/448] docs(README): update contributors --- README.md | 39 ++++++++++++++++----------------------- 1 file changed, 16 insertions(+), 23 deletions(-) diff --git a/README.md b/README.md index a80caf68..0fd6e48e 100644 --- a/README.md +++ b/README.md @@ -1865,13 +1865,6 @@ Steps to contribute in this repository Tunwase Ayobami
- - Usama -
- Usama Jamil -
-
Utkarsh @@ -1893,8 +1886,6 @@ Steps to contribute in this repository Vandana Singh
Vardaan @@ -1902,6 +1893,8 @@ Steps to contribute in this repository Vardaan Raj Singh
Vinamra/ @@ -1937,8 +1930,6 @@ Steps to contribute in this repository Yasir Jafri
Aman @@ -1946,6 +1937,8 @@ Steps to contribute in this repository Aman Ali
adityasingh0149/ @@ -1981,8 +1974,6 @@ Steps to contribute in this repository Arpit Ghura
Ashutosh @@ -1990,6 +1981,8 @@ Steps to contribute in this repository Ashutosh Saxena
bhavy007/ @@ -2025,8 +2018,6 @@ Steps to contribute in this repository @thisiskshitijbansod
mas-mis/ @@ -2034,6 +2025,8 @@ Steps to contribute in this repository mas-mis
Sudhakar @@ -2069,8 +2062,6 @@ Steps to contribute in this repository Nishant
priyanshu @@ -2078,6 +2069,8 @@ Steps to contribute in this repository priyanshu mundra
Rahul/ @@ -2113,8 +2106,6 @@ Steps to contribute in this repository Rupesh Piwal
Sahan @@ -2122,6 +2113,8 @@ Steps to contribute in this repository Sahan Mondal
sajjad @@ -2157,8 +2150,6 @@ Steps to contribute in this repository MD SOHAIL ANSARI
Sourav @@ -2166,6 +2157,8 @@ Steps to contribute in this repository Sourav khan
swarup-0508/ @@ -2201,8 +2194,6 @@ Steps to contribute in this repository xsnatchysquidx
yusmnn/ @@ -2210,6 +2201,8 @@ Steps to contribute in this repository yusmnn
zebi29/ From 028c2bfbac4c2836cf22ceeb8e541c97c3c7672f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 13 Feb 2023 20:31:07 +0000 Subject: [PATCH 383/448] docs(README): update contributors --- README.md | 129 +++++++++++++++++++++++++----------------------------- 1 file changed, 60 insertions(+), 69 deletions(-) diff --git a/README.md b/README.md index 0fd6e48e..7918d930 100644 --- a/README.md +++ b/README.md @@ -867,13 +867,6 @@ Steps to contribute in this repository Samrat Dawn - - Satyam -
- Satyam Tripathi -
-
SavvyShivam/ @@ -881,8 +874,6 @@ Steps to contribute in this repository SavvyShivam
Shakti @@ -890,6 +881,8 @@ Steps to contribute in this repository Shakti Maddheshiya
Shreyan @@ -925,8 +918,6 @@ Steps to contribute in this repository Solaris
Sudhir8787/ @@ -934,6 +925,8 @@ Steps to contribute in this repository Sudhir8787
Sugash @@ -969,8 +962,6 @@ Steps to contribute in this repository Amit Das
lifeashaze/ @@ -978,6 +969,8 @@ Steps to contribute in this repository lifeashaze
namita27/ @@ -1013,8 +1006,6 @@ Steps to contribute in this repository siddharth jain
Shreyas @@ -1022,6 +1013,8 @@ Steps to contribute in this repository Shreyas Kamath
Md @@ -1057,8 +1050,6 @@ Steps to contribute in this repository ADITYA PATHAK
AMAN @@ -1066,6 +1057,8 @@ Steps to contribute in this repository AMAN SHRIVASTAVA
ARYAN @@ -1101,8 +1094,6 @@ Steps to contribute in this repository Abhishek Kumar
Abhishek @@ -1110,6 +1101,8 @@ Steps to contribute in this repository Abhishek Srivastava
Achintya @@ -1145,8 +1138,6 @@ Steps to contribute in this repository Agrim Jain
Aiyan @@ -1154,6 +1145,8 @@ Steps to contribute in this repository Aiyan Faras
Akshay @@ -1189,8 +1182,6 @@ Steps to contribute in this repository Aneesh Gupta
Aniket @@ -1198,6 +1189,8 @@ Steps to contribute in this repository Aniket Bindhani
Aniruddho @@ -1233,8 +1226,6 @@ Steps to contribute in this repository Anshul Nigam
Anshuman @@ -1242,6 +1233,8 @@ Steps to contribute in this repository Anshuman Shukla
Apoorv @@ -1277,8 +1270,6 @@ Steps to contribute in this repository Arpit Rath
Arya @@ -1286,6 +1277,8 @@ Steps to contribute in this repository Arya Gupta
Auro @@ -1321,8 +1314,6 @@ Steps to contribute in this repository Bhavna Panjwani
Rik @@ -1330,6 +1321,8 @@ Steps to contribute in this repository Rik Chatterjee
ANURAG @@ -1365,8 +1358,6 @@ Steps to contribute in this repository Firejoust
Harshit @@ -1374,6 +1365,8 @@ Steps to contribute in this repository Harshit kumar
Bhupesh @@ -1409,8 +1402,6 @@ Steps to contribute in this repository Jeetu Gupta
K @@ -1418,6 +1409,8 @@ Steps to contribute in this repository K Zayd Ahmed
Kapadiatathya/ @@ -1453,8 +1446,6 @@ Steps to contribute in this repository Kashish Lakhara
Kasun @@ -1462,6 +1453,8 @@ Steps to contribute in this repository Kasun Hewagama
Lisha @@ -1497,8 +1490,6 @@ Steps to contribute in this repository Shrey Midha
Mohammad @@ -1506,6 +1497,8 @@ Steps to contribute in this repository Mohammad Palla
Mohammed @@ -1541,8 +1534,6 @@ Steps to contribute in this repository Muhammad Sameer Farooq
Nakul @@ -1550,6 +1541,8 @@ Steps to contribute in this repository Nakul Bhangale
Nayan @@ -1585,8 +1578,6 @@ Steps to contribute in this repository PranathiJyothi
Prashantsetia/ @@ -1594,6 +1585,8 @@ Steps to contribute in this repository Prashantsetia
Pratik @@ -1629,8 +1622,6 @@ Steps to contribute in this repository Raj
Rituraj @@ -1638,6 +1629,8 @@ Steps to contribute in this repository Rituraj Dey
Rusheel @@ -1673,8 +1666,6 @@ Steps to contribute in this repository Sam
Sandeep @@ -1682,6 +1673,8 @@ Steps to contribute in this repository Sandeep V
Sanjanabharadwaj25/ @@ -1717,8 +1710,6 @@ Steps to contribute in this repository Shitij Agrawal
Shreya @@ -1726,6 +1717,8 @@ Steps to contribute in this repository Shreya Gupta
Shubham @@ -1761,8 +1754,6 @@ Steps to contribute in this repository sohandiginnk
Sohan @@ -1770,6 +1761,8 @@ Steps to contribute in this repository Sohan Agashimani
Soumili @@ -1805,8 +1798,6 @@ Steps to contribute in this repository Sumit Kumar Rai
SwetaDas16/ @@ -1814,6 +1805,8 @@ Steps to contribute in this repository SwetaDas16
Tamanna @@ -1849,8 +1842,6 @@ Steps to contribute in this repository Tanuj Sharma
Timileyin @@ -1858,6 +1849,8 @@ Steps to contribute in this repository Timileyin Daso
Tunwase @@ -1893,8 +1886,6 @@ Steps to contribute in this repository Vardaan Raj Singh
Vinamra/ @@ -1902,6 +1893,8 @@ Steps to contribute in this repository Vinamra
Vishal/ @@ -1937,8 +1930,6 @@ Steps to contribute in this repository Aman Ali
adityasingh0149/ @@ -1946,6 +1937,8 @@ Steps to contribute in this repository adityasingh0149
Aman @@ -1981,8 +1974,6 @@ Steps to contribute in this repository Ashutosh Saxena
bhavy007/ @@ -1990,6 +1981,8 @@ Steps to contribute in this repository bhavy007
Harsh @@ -2025,8 +2018,6 @@ Steps to contribute in this repository mas-mis
Sudhakar @@ -2034,6 +2025,8 @@ Steps to contribute in this repository Sudhakar Singh
Nihar @@ -2069,8 +2062,6 @@ Steps to contribute in this repository priyanshu mundra
Rahul/ @@ -2078,6 +2069,8 @@ Steps to contribute in this repository Rahul
raju121097/ @@ -2113,8 +2106,6 @@ Steps to contribute in this repository Sahan Mondal
sajjad @@ -2122,6 +2113,8 @@ Steps to contribute in this repository sajjad rahman
sanu-020/ @@ -2157,8 +2150,6 @@ Steps to contribute in this repository Sourav khan
swarup-0508/ @@ -2166,6 +2157,8 @@ Steps to contribute in this repository swarup-0508
Kirtan @@ -2201,8 +2194,6 @@ Steps to contribute in this repository yusmnn
zebi29/ From 41d91018afe1112271f3d4e2d80ea5bb37a8033e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 15 Feb 2023 20:30:55 +0000 Subject: [PATCH 384/448] docs(README): update contributors --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 7918d930..0a3d9034 100644 --- a/README.md +++ b/README.md @@ -1149,9 +1149,9 @@ Steps to contribute in this repository
- Akshay + akshay-gidwani-psl/
- Akshay Gidwani + akshay-gidwani-psl
From fbf615f3db5c6f9cd0ab8e492cb0223b30ccd6f1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 2 Mar 2023 20:31:40 +0000 Subject: [PATCH 385/448] docs(README): update contributors --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 0a3d9034..b22e1d06 100644 --- a/README.md +++ b/README.md @@ -2006,9 +2006,9 @@ Steps to contribute in this repository - @thisiskshitijbansod/ + @kshitij7/
- @thisiskshitijbansod + @kshitij7
From 44c95ae2fd79128772a08208a08eeae0dcc1e7d6 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 3 Mar 2023 20:30:55 +0000 Subject: [PATCH 386/448] docs(README): update contributors --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b22e1d06..96cb5330 100644 --- a/README.md +++ b/README.md @@ -818,9 +818,9 @@ Steps to contribute in this repository - Lokesh + Lokesh
- Lokesh Choudhary Medharametla + Lokesh Chowdary Medharametla
From 92bfbf902720d6ccf4128841ab24317da9fd5311 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 5 Mar 2023 20:29:35 +0000 Subject: [PATCH 387/448] docs(README): update contributors --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 96cb5330..55c928b9 100644 --- a/README.md +++ b/README.md @@ -1640,9 +1640,9 @@ Steps to contribute in this repository - SUSAJJIT/ + Susajjit
- SUSAJJIT + Susajjit kumar Singh
From 22bb2e1452419ea0b4fe7eb84297cab9b8b02f92 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 7 Mar 2023 20:31:46 +0000 Subject: [PATCH 388/448] docs(README): update contributors --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 55c928b9..c376795b 100644 --- a/README.md +++ b/README.md @@ -1404,9 +1404,9 @@ Steps to contribute in this repository - K + Zayd/
- K Zayd Ahmed + Zayd
- + Rahul
Rahul Singh Gurjar From 84b6a890b19b8f699baa41e57ec80ce1d4b48e2c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 11 Mar 2023 20:28:12 +0000 Subject: [PATCH 389/448] docs(README): update contributors --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index c376795b..d0126fa6 100644 --- a/README.md +++ b/README.md @@ -1207,9 +1207,9 @@ Steps to contribute in this repository
- Ansh/ + Ansh
- Ansh + Ansh Kushwaha
From 881d8ab23be99c82a66072cdbb780b1fd6445ed7 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 13 Mar 2023 20:29:33 +0000 Subject: [PATCH 390/448] docs(README): update contributors --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index d0126fa6..a6a86ca3 100644 --- a/README.md +++ b/README.md @@ -1976,9 +1976,9 @@ Steps to contribute in this repository - bhavy007/ + Bhavy
- bhavy007 + Bhavy Khatter
- joker_007/ + Aakash
- joker_007 + Aakash Singh
From 5abac9b8d160742860f4b24e24e8299b103bd016 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 24 Mar 2023 20:28:39 +0000 Subject: [PATCH 392/448] docs(README): update contributors --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c36b0bd0..b7250150 100644 --- a/README.md +++ b/README.md @@ -1690,7 +1690,7 @@ Steps to contribute in this repository - + Sarthak
Sarthak Kurothe From 816deb8727c50629b67a2e0a9fe571764bee5f1d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 26 Mar 2023 20:27:28 +0000 Subject: [PATCH 393/448] docs(README): update contributors --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index b7250150..358a70cc 100644 --- a/README.md +++ b/README.md @@ -208,7 +208,7 @@ Steps to contribute in this repository
- + Baibhav
Baibhav Tiwari @@ -1353,9 +1353,9 @@ Steps to contribute in this repository
- Firejoust/ + firejoust/
- Firejoust + firejoust
From 5e8f7a262333952daad65f7d336c466e50578c8c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 2 Apr 2023 20:27:13 +0000 Subject: [PATCH 394/448] docs(README): update contributors --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 358a70cc..005d6a96 100644 --- a/README.md +++ b/README.md @@ -2107,7 +2107,7 @@ Steps to contribute in this repository - + sajjad
sajjad rahman From 91ed764ce42db2bf84ba64a55b14bfdda8508c01 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 7 Apr 2023 20:27:23 +0000 Subject: [PATCH 395/448] docs(README): update contributors --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 005d6a96..b0cf74a1 100644 --- a/README.md +++ b/README.md @@ -885,9 +885,9 @@ Steps to contribute in this repository
- Shreyan + Shreyan/
- Shreyan + Shreyan
From cfaac9e94727a0afc50e16bf83fd8b6f6e907582 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 12 Apr 2023 20:27:11 +0000 Subject: [PATCH 396/448] docs(README): update contributors --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b0cf74a1..0e47ba73 100644 --- a/README.md +++ b/README.md @@ -752,7 +752,7 @@ Steps to contribute in this repository
- + Alok
Alok Khansali From e275c2975943cc556b07baf0c232048b41c855e6 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 29 Apr 2023 20:26:58 +0000 Subject: [PATCH 397/448] docs(README): update contributors --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0e47ba73..243ee8e0 100644 --- a/README.md +++ b/README.md @@ -1375,7 +1375,7 @@ Steps to contribute in this repository
- + Hiya
Hiya Shivnani From 9c93351f067fa86d910b1ae77270de1a96ea070a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 8 May 2023 20:26:46 +0000 Subject: [PATCH 398/448] docs(README): update contributors --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 243ee8e0..1d937750 100644 --- a/README.md +++ b/README.md @@ -1734,7 +1734,7 @@ Steps to contribute in this repository
- + Sid/
Sid From 9c2b3e6b4126d3fb32cb40a86c8c979751361a9e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 24 Jun 2023 20:29:36 +0000 Subject: [PATCH 399/448] docs(README): update contributors --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1d937750..243ee8e0 100644 --- a/README.md +++ b/README.md @@ -1734,7 +1734,7 @@ Steps to contribute in this repository
- + Sid/
Sid From f893674794b9c0fd41ff6530c1837703d96b5008 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 29 Jul 2023 20:26:48 +0000 Subject: [PATCH 400/448] docs(README): update contributors --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 243ee8e0..d0e41535 100644 --- a/README.md +++ b/README.md @@ -1867,9 +1867,9 @@ Steps to contribute in this repository
- vaibhav0806/ + Vaibhav/
- vaibhav0806 + Vaibhav
From cb9352385c176ca317a5d50d1f9ee980c8fdd8d1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 31 Jul 2023 20:26:50 +0000 Subject: [PATCH 401/448] docs(README): update contributors --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index d0e41535..4142c402 100644 --- a/README.md +++ b/README.md @@ -811,9 +811,9 @@ Steps to contribute in this repository - KBhushan07/ + Bhushan
- KBhushan07 + Bhushan K
From 9fdd0e07e01510d61759780234e1ab8ef0f2e278 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 8 Aug 2023 20:27:36 +0000 Subject: [PATCH 402/448] docs(README): update contributors --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 4142c402..38e7b56c 100644 --- a/README.md +++ b/README.md @@ -2013,9 +2013,9 @@ Steps to contribute in this repository - mas-mis/ + Masoom
- mas-mis + Masoom Mishra
From 681132e52161b4dbbd0770a9d4d9dd5e1fb17737 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 11 Aug 2023 20:26:41 +0000 Subject: [PATCH 403/448] docs(README): update contributors --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 38e7b56c..912c1f2b 100644 --- a/README.md +++ b/README.md @@ -224,10 +224,10 @@ Steps to contribute in this repository
- - Himanshu + + Himanshu
- Himanshu Sharma + Himanshu Kumar Sharma
From a66c13527b0b9971b648aafbbb0cdd85763f4789 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 13 Aug 2023 20:26:55 +0000 Subject: [PATCH 404/448] docs(README): update contributors --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 912c1f2b..36d76fb4 100644 --- a/README.md +++ b/README.md @@ -128,9 +128,9 @@ Steps to contribute in this repository - yash + Yash
- yash suthar + Yash Suthar
- Aswin + Aswin
- Aswin Dev SP + Aswin Dev S P
From ece47d64bdfbc6194997cc6a469183e3656b5696 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 20 Aug 2023 20:27:03 +0000 Subject: [PATCH 406/448] docs(README): update contributors --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 17c0edba..f43ddafd 100644 --- a/README.md +++ b/README.md @@ -818,9 +818,9 @@ Steps to contribute in this repository - Lokesh + Lokesh
- Lokesh Chowdary Medharametla + Lokesh Medharimetla
From 16778bcd3367e16a0ae7b383289703df4e4ed391 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 30 Aug 2023 20:27:06 +0000 Subject: [PATCH 407/448] docs(README): update contributors --- README.md | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index f43ddafd..ec2a735d 100644 --- a/README.md +++ b/README.md @@ -2136,13 +2136,6 @@ Steps to contribute in this repository snatchysquid - - MD -
- MD SOHAIL ANSARI -
-
Sourav @@ -2157,8 +2150,6 @@ Steps to contribute in this repository swarup-0508
Kirtan @@ -2166,6 +2157,8 @@ Steps to contribute in this repository Kirtan Kushwah
Vansh From a21cc0b9e436675c591d61fb61944dbfcdeaccab Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 31 Aug 2023 20:27:06 +0000 Subject: [PATCH 408/448] docs(README): update contributors --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index ec2a735d..c6c90150 100644 --- a/README.md +++ b/README.md @@ -209,9 +209,9 @@ Steps to contribute in this repository - Baibhav + Baibhav/
- Baibhav Tiwari + Baibhav
From fb819bc090f560da9fa6eb01a93b08a5b83e58f6 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 1 Sep 2023 20:27:11 +0000 Subject: [PATCH 409/448] docs(README): update contributors --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index c6c90150..109b6b1d 100644 --- a/README.md +++ b/README.md @@ -1786,9 +1786,9 @@ Steps to contribute in this repository - Sudhanshu-Purohit/ + Sudhanshu
- Sudhanshu-Purohit + Sudhanshu Purohit
From d1b1d054c2d34c75abad564ed6a73ad4911a226d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 11 Sep 2023 20:26:54 +0000 Subject: [PATCH 410/448] docs(README): update contributors --- README.md | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 109b6b1d..fac17349 100644 --- a/README.md +++ b/README.md @@ -2136,6 +2136,13 @@ Steps to contribute in this repository snatchysquid + + MD +
+ MD SOHAIL ANSARI +
+
Sourav @@ -2150,6 +2157,8 @@ Steps to contribute in this repository swarup-0508
Kirtan @@ -2157,8 +2166,6 @@ Steps to contribute in this repository Kirtan Kushwah
Vansh From 696676c5aa1c793df1eba8466956a25a1c753c51 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 18 Sep 2023 20:26:55 +0000 Subject: [PATCH 411/448] docs(README): update contributors --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index fac17349..755ccbec 100644 --- a/README.md +++ b/README.md @@ -612,9 +612,9 @@ Steps to contribute in this repository - Shaury17/ + Shaury
- Shaury17 + Shaury R Srivastava
- xsnatchysquidx/ + Daniel
- xsnatchysquidx + Daniel Deychev
From d369c05978ca2af4dcfd1b510469314f901cbc22 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 4 Oct 2023 20:27:32 +0000 Subject: [PATCH 413/448] docs(README): update contributors --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 74f88d00..e7080702 100644 --- a/README.md +++ b/README.md @@ -201,7 +201,7 @@ Steps to contribute in this repository - + Akshat
Akshat Jain From b4b46fcb714cfa9796706a5ef927d7949826e38a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 28 Oct 2023 20:26:47 +0000 Subject: [PATCH 414/448] docs(README): update contributors --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e7080702..97ecb173 100644 --- a/README.md +++ b/README.md @@ -224,7 +224,7 @@ Steps to contribute in this repository
- + Himanshu
Himanshu Kumar Sharma From 44d44bf59bfe29e745dde677caec15010706a42a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 15 Nov 2023 20:27:38 +0000 Subject: [PATCH 415/448] docs(README): update contributors --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 97ecb173..6c991cb0 100644 --- a/README.md +++ b/README.md @@ -817,10 +817,10 @@ Steps to contribute in this repository
- - Lokesh + + Lokesh
- Lokesh Medharimetla + Lokesh Medharametla
From 2c51424754e6ed880fb68c436fe23c55ed3533ac Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 19 Nov 2023 20:27:08 +0000 Subject: [PATCH 416/448] docs(README): update contributors --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 6c991cb0..2ea00158 100644 --- a/README.md +++ b/README.md @@ -885,9 +885,9 @@ Steps to contribute in this repository
- Shreyan/ + Shreyan
- Shreyan + Shreyan Haldankar
From bdcf79dd3bf4a14d97415810afa214e46c276bdc Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 29 Nov 2023 20:27:31 +0000 Subject: [PATCH 417/448] docs(README): update contributors --- README.md | 75 +++++++++++++++++++++++++------------------------------ 1 file changed, 34 insertions(+), 41 deletions(-) diff --git a/README.md b/README.md index 2ea00158..b3b5562e 100644 --- a/README.md +++ b/README.md @@ -1425,13 +1425,6 @@ Steps to contribute in this repository Aditya Shukla - - Kartikey -
- Kartikey Tandon -
-
Kashish @@ -1453,8 +1446,6 @@ Steps to contribute in this repository Kasun Hewagama
Lisha @@ -1462,6 +1453,8 @@ Steps to contribute in this repository Lisha Kothari
Dhruv @@ -1497,8 +1490,6 @@ Steps to contribute in this repository Mohammad Palla
Mohammed @@ -1506,6 +1497,8 @@ Steps to contribute in this repository Mohammed Imtiyaz
Mohit @@ -1541,8 +1534,6 @@ Steps to contribute in this repository Nakul Bhangale
Nayan @@ -1550,6 +1541,8 @@ Steps to contribute in this repository Nayan Koshta
Nitya @@ -1585,8 +1578,6 @@ Steps to contribute in this repository Prashantsetia
Pratik @@ -1594,6 +1585,8 @@ Steps to contribute in this repository Pratik Agrawal
Raghav @@ -1629,8 +1622,6 @@ Steps to contribute in this repository Rituraj Dey
Rusheel @@ -1638,6 +1629,8 @@ Steps to contribute in this repository Rusheel Dalal
Susajjit @@ -1673,8 +1666,6 @@ Steps to contribute in this repository Sandeep V
Sanjanabharadwaj25/ @@ -1682,6 +1673,8 @@ Steps to contribute in this repository Sanjanabharadwaj25
Sarthak @@ -1717,8 +1710,6 @@ Steps to contribute in this repository Shreya Gupta
Shubham @@ -1726,6 +1717,8 @@ Steps to contribute in this repository Shubham Kashyap
Shubham @@ -1761,8 +1754,6 @@ Steps to contribute in this repository Sohan Agashimani
Soumili @@ -1770,6 +1761,8 @@ Steps to contribute in this repository Soumili Chakraborty
Soyeb @@ -1805,8 +1798,6 @@ Steps to contribute in this repository SwetaDas16
Tamanna @@ -1814,6 +1805,8 @@ Steps to contribute in this repository Tamanna Sharma
Tandrima @@ -1849,8 +1842,6 @@ Steps to contribute in this repository Timileyin Daso
Tunwase @@ -1858,6 +1849,8 @@ Steps to contribute in this repository Tunwase Ayobami
Utkarsh @@ -1893,8 +1886,6 @@ Steps to contribute in this repository Vinamra
Vishal/ @@ -1902,6 +1893,8 @@ Steps to contribute in this repository Vishal
Vishal @@ -1937,8 +1930,6 @@ Steps to contribute in this repository adityasingh0149
Aman @@ -1946,6 +1937,8 @@ Steps to contribute in this repository Aman Yadav
ankit20214/ @@ -1981,8 +1974,6 @@ Steps to contribute in this repository Bhavy Khatter
Harsh @@ -1990,6 +1981,8 @@ Steps to contribute in this repository Harsh Bhikadiya
hruday007/ @@ -2025,8 +2018,6 @@ Steps to contribute in this repository Sudhakar Singh
Nihar @@ -2034,6 +2025,8 @@ Steps to contribute in this repository Nihar Bansal
Nikita @@ -2069,8 +2062,6 @@ Steps to contribute in this repository Rahul
raju121097/ @@ -2078,6 +2069,8 @@ Steps to contribute in this repository raju121097
rohinipatil89/ @@ -2113,8 +2106,6 @@ Steps to contribute in this repository sajjad rahman
sanu-020/ @@ -2122,6 +2113,8 @@ Steps to contribute in this repository sanu-020
shrutij1247/ @@ -2157,8 +2150,6 @@ Steps to contribute in this repository swarup-0508
Kirtan @@ -2166,6 +2157,8 @@ Steps to contribute in this repository Kirtan Kushwah
Vansh From f672d5d8380e7617e74eca60f175e47f79cd5008 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 4 Dec 2023 20:27:48 +0000 Subject: [PATCH 418/448] docs(README): update contributors --- README.md | 75 ++++++++++++++++++++++++++++++------------------------- 1 file changed, 41 insertions(+), 34 deletions(-) diff --git a/README.md b/README.md index b3b5562e..2ea00158 100644 --- a/README.md +++ b/README.md @@ -1425,6 +1425,13 @@ Steps to contribute in this repository Aditya Shukla + + Kartikey +
+ Kartikey Tandon +
+
Kashish @@ -1446,6 +1453,8 @@ Steps to contribute in this repository Kasun Hewagama
Lisha @@ -1453,8 +1462,6 @@ Steps to contribute in this repository Lisha Kothari
Dhruv @@ -1490,6 +1497,8 @@ Steps to contribute in this repository Mohammad Palla
Mohammed @@ -1497,8 +1506,6 @@ Steps to contribute in this repository Mohammed Imtiyaz
Mohit @@ -1534,6 +1541,8 @@ Steps to contribute in this repository Nakul Bhangale
Nayan @@ -1541,8 +1550,6 @@ Steps to contribute in this repository Nayan Koshta
Nitya @@ -1578,6 +1585,8 @@ Steps to contribute in this repository Prashantsetia
Pratik @@ -1585,8 +1594,6 @@ Steps to contribute in this repository Pratik Agrawal
Raghav @@ -1622,6 +1629,8 @@ Steps to contribute in this repository Rituraj Dey
Rusheel @@ -1629,8 +1638,6 @@ Steps to contribute in this repository Rusheel Dalal
Susajjit @@ -1666,6 +1673,8 @@ Steps to contribute in this repository Sandeep V
Sanjanabharadwaj25/ @@ -1673,8 +1682,6 @@ Steps to contribute in this repository Sanjanabharadwaj25
Sarthak @@ -1710,6 +1717,8 @@ Steps to contribute in this repository Shreya Gupta
Shubham @@ -1717,8 +1726,6 @@ Steps to contribute in this repository Shubham Kashyap
Shubham @@ -1754,6 +1761,8 @@ Steps to contribute in this repository Sohan Agashimani
Soumili @@ -1761,8 +1770,6 @@ Steps to contribute in this repository Soumili Chakraborty
Soyeb @@ -1798,6 +1805,8 @@ Steps to contribute in this repository SwetaDas16
Tamanna @@ -1805,8 +1814,6 @@ Steps to contribute in this repository Tamanna Sharma
Tandrima @@ -1842,6 +1849,8 @@ Steps to contribute in this repository Timileyin Daso
Tunwase @@ -1849,8 +1858,6 @@ Steps to contribute in this repository Tunwase Ayobami
Utkarsh @@ -1886,6 +1893,8 @@ Steps to contribute in this repository Vinamra
Vishal/ @@ -1893,8 +1902,6 @@ Steps to contribute in this repository Vishal
Vishal @@ -1930,6 +1937,8 @@ Steps to contribute in this repository adityasingh0149
Aman @@ -1937,8 +1946,6 @@ Steps to contribute in this repository Aman Yadav
ankit20214/ @@ -1974,6 +1981,8 @@ Steps to contribute in this repository Bhavy Khatter
Harsh @@ -1981,8 +1990,6 @@ Steps to contribute in this repository Harsh Bhikadiya
hruday007/ @@ -2018,6 +2025,8 @@ Steps to contribute in this repository Sudhakar Singh
Nihar @@ -2025,8 +2034,6 @@ Steps to contribute in this repository Nihar Bansal
Nikita @@ -2062,6 +2069,8 @@ Steps to contribute in this repository Rahul
raju121097/ @@ -2069,8 +2078,6 @@ Steps to contribute in this repository raju121097
rohinipatil89/ @@ -2106,6 +2113,8 @@ Steps to contribute in this repository sajjad rahman
sanu-020/ @@ -2113,8 +2122,6 @@ Steps to contribute in this repository sanu-020
shrutij1247/ @@ -2150,6 +2157,8 @@ Steps to contribute in this repository swarup-0508
Kirtan @@ -2157,8 +2166,6 @@ Steps to contribute in this repository Kirtan Kushwah
Vansh From 40518ef40998d5bf187b41a0f83d43c8599f4f8d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 2 Jan 2024 20:27:04 +0000 Subject: [PATCH 419/448] docs(README): update contributors --- README.md | 1678 ++++++++++++++++++++++++++--------------------------- 1 file changed, 839 insertions(+), 839 deletions(-) diff --git a/README.md b/README.md index 2ea00158..18ab2f7f 100644 --- a/README.md +++ b/README.md @@ -76,10 +76,10 @@ Steps to contribute in this repository - - Aishal + + Rohit
- Aishal Gupta + Rohit Singh
@@ -92,10 +92,10 @@ Steps to contribute in this repository
- - Rohit + + Aishal
- Rohit Singh + Aishal Gupta
@@ -157,17 +157,17 @@ Steps to contribute in this repository - - Dhruv + + varun
- Dhruv Solanki + varun jain
- - Mercapto/ + + rohansrivastava5491/
- Mercapto + rohansrivastava5491
@@ -180,68 +180,75 @@ Steps to contribute in this repository
- - rohansrivastava5491/ + + Mercapto/
- rohansrivastava5491 + Mercapto
- - varun + + Dhruv
- varun jain + Dhruv Solanki
- - Adarsh + + Rakesh
- Adarsh Soni + Rakesh Sabale
- - Akshat + + pranava7/
- Akshat Jain + pranava7
- - Baibhav/ + + Shiva
- Baibhav + Shiva Abhishek
- - CHALLANIKITHA/ + + DarkSpy25/
- CHALLANIKITHA + DarkSpy25
- - Himanshu + + Ebenezer
- Himanshu Kumar Sharma + Ebenezer R.
- - Kalyan/ + + Rohit
- Kalyan + Rohit Yadav
- - Kanishka + + Shubham
- Kanishka Gour + Shubham Kumar +
+
+ + Shashank +
+ Shashank Singh
@@ -252,65 +259,167 @@ Steps to contribute in this repository - - Shashank + + Kanishka
- Shashank Singh + Kanishka Gour
- - Shubham + + Kalyan/
- Shubham Kumar + Kalyan +
+
+ + Himanshu +
+ Himanshu Kumar Sharma +
+
+ + CHALLANIKITHA/ +
+ CHALLANIKITHA +
+
+ + Baibhav/ +
+ Baibhav +
+
+ + Adarsh +
+ Adarsh Soni +
+
+ + Akshat +
+ Akshat Jain
- - Rakesh + + Saksham
- Rakesh Sabale + Saksham Sharma
- - pranava7/ + + Sanskar
- pranava7 + Sanskar Goyal
- - Shiva + + Sarthak
- Shiva Abhishek + Sarthak Verma
- - DarkSpy25/ + + Shubh
- DarkSpy25 + Shubh Rastogi
- - Ebenezer + + Siddhant
- Ebenezer R. + Siddhant Singh
- - Rohit + + Sujit
- Rohit Yadav + Sujit Jaunjal +
+
+ + SwagsShivamOp/ +
+ SwagsShivamOp +
+
+ + Vkwinner/ +
+ Vkwinner +
+
+ + Yash +
+ Yash Gautam +
+
+ + alex-2003-47/ +
+ alex-2003-47 +
+
+ + gantavya123/ +
+ gantavya123 +
+
+ + gantavya1234/ +
+ gantavya1234
+ + lnctcoders/ +
+ lnctcoders +
+
+ + rishi +
+ rishi chaitanya Tiwari +
+
+ + shivamsingh67/ +
+ shivamsingh67 +
+
Aakash @@ -332,6 +441,8 @@ Steps to contribute in this repository Abhijeet Tiwari
Anish @@ -353,8 +464,6 @@ Steps to contribute in this repository Ayush Agrawal
Ayush @@ -376,6 +485,8 @@ Steps to contribute in this repository Saar Agrawal
Dhiraj @@ -397,8 +508,6 @@ Steps to contribute in this repository John Abraham
Kalyan @@ -420,6 +529,8 @@ Steps to contribute in this repository Naman Paliwal
Narpat @@ -434,6 +545,13 @@ Steps to contribute in this repository Nikhil Dhariwal + + Rohit +
+ Rohit Kumar +
+
Om @@ -441,8 +559,6 @@ Steps to contribute in this repository Om Prakash
Rahul @@ -451,126 +567,142 @@ Steps to contribute in this repository - - Rohit + + Saurav
- Rohit Kumar + Saurav Navdhare
- - Saksham + + Soham
- Saksham Sharma + Soham Datta
- - Sanskar + + Sparsh
- Sanskar Goyal + Sparsh kishore kumar
- - Sarthak + + Yash
- Sarthak Verma + Yash Bansal
- - Shubh + + aayush920/
- Shubh Rastogi + aayush920 +
+
+ + Pratik +
+ Pratik Joshi +
+
+ + gantavya12/ +
+ gantavya12
- - Siddhant + + Adarsh/
- Siddhant Singh + Adarsh
- - Sujit + + Anish
- Sujit Jaunjal + Anish Tiwari
- - SwagsShivamOp/ + + Joseph2001-braganza/
- SwagsShivamOp + Joseph2001-braganza
- - Vkwinner/ + + Pritom
- Vkwinner + Pritom Karmokar
- - Yash + + Sanjay
- Yash Gautam + Sanjay Sathyanarayanan
- - alex-2003-47/ + + Paras
- alex-2003-47 + Paras Sharma
- - gantavya123/ + + Nishitbariya/
- gantavya123 + Nishitbariya
- - gantavya1234/ + + Harsh
- gantavya1234 + Harsh Bhatt
- - lnctcoders/ + + Shaury
- lnctcoders + Shaury R Srivastava
- - rishi + + Asha/
- rishi chaitanya Tiwari + Asha
- - shivamsingh67/ + + Arun
- shivamsingh67 + Arun Singh Kushwaha
- - Aarush + + Abhishek
- Aarush Kansal + Abhishek Mallick
- - Abhishek + + Aarush
- Abhishek Mallick + Aarush Kansal
- - Arun + + Amit
- Arun Singh Kushwaha + Amit Das
- - Asha/ + + avishagoyal08/
- Asha + avishagoyal08
- - Shaury + + Vaibhav
- Shaury R Srivastava + Vaibhav Varshney
- - Harsh + + Umang
- Harsh Bhatt + Umang Devanshu
- - Nishitbariya/ + + Sugash
- Nishitbariya + Sugash Srimari R
- - Paras + + Sudhir8787/
- Paras Sharma + Sudhir8787
- - Sanjay + + Solaris/
- Sanjay Sathyanarayanan + Solaris
- - Saurav + + Siddharth
- Saurav Navdhare + Siddharth Reddy Anthireddy
- - Soham + + Shubham
- Soham Datta + Shubham S Jagtap
- - Sparsh + + ShreyasiDebnath/
- Sparsh kishore kumar + ShreyasiDebnath
- - Yash + + Abhimanyu
- Yash Bansal + Abhimanyu Chauhan
- - aayush920/ + + lifeashaze/
- aayush920 + lifeashaze
- - Pratik + + namita27/
- Pratik Joshi + namita27
- - gantavya12/ + + PAKHI
- gantavya12 + PAKHI VASHISHTH
- - Adarsh/ + + priyayadav19054/
- Adarsh + priyayadav19054
- - Anish + + sameer-19/
- Anish Tiwari + sameer-19
- - Joseph2001-braganza/ + + siddharth
- Joseph2001-braganza + siddharth jain
- - Pritom + + Shreyas
- Pritom Karmokar + Shreyas Kamath
- - ABHISHEK + + Md
- ABHISHEK KUMAR DEY + Md Shafaullah
- - ADITYA + + Namrata/
- ADITYA SAI + Namrata
- - Abhimanyu + + PRABHAT
- Abhimanyu Chauhan + PRABHAT KUMAR MISHRA
- - Alok + + Rai_M/
- Alok Khansali + Rai_M
- - Anshu + + ADITYA +
+ ADITYA SAI +
+
+ + Alok +
+ Alok Khansali +
+
+ + ABHISHEK +
+ ABHISHEK KUMAR DEY +
+
+ + Anshu
Anshu Pandey
@@ -772,6 +925,8 @@ Steps to contribute in this repository Arya Singh
Aswin @@ -793,8 +948,6 @@ Steps to contribute in this repository Dipendra Raghav
Jheyanth @@ -816,6 +969,8 @@ Steps to contribute in this repository Bhushan K
Lokesh @@ -837,8 +992,6 @@ Steps to contribute in this repository Md Tausif Siddiqui
Niladri @@ -860,6 +1013,8 @@ Steps to contribute in this repository Ronica Singh
Samrat @@ -874,6 +1029,13 @@ Steps to contribute in this repository SavvyShivam + + Shreyan +
+ Shreyan Haldankar +
+
Shakti @@ -881,1324 +1043,1162 @@ Steps to contribute in this repository Shakti Maddheshiya + + Taneesha +
+ Taneesha Suwandarachchi +
+
+ + Tandrima +
+ Tandrima Singha +
+
- - Shreyan + + Tamanna
- Shreyan Haldankar + Tamanna Sharma
- - ShreyasiDebnath/ + + SwetaDas16/
- ShreyasiDebnath + SwetaDas16
- - Shubham + + Sumit
- Shubham S Jagtap + Sumit Kumar Rai
- - Siddharth + + Sudhanshu
- Siddharth Reddy Anthireddy + Sudhanshu Purohit
- - Solaris/ + + Storm_Chaser/
- Solaris + Storm_Chaser
- - Sudhir8787/ + + Soyeb
- Sudhir8787 + Soyeb Sarkar
- - Sugash + + Rituraj
- Sugash Srimari R + Rituraj Dey
- - Umang + + Tanmoy
- Umang Devanshu + Tanmoy Sengupta
- - Vaibhav + + Tanuj
- Vaibhav Varshney + Tanuj Sharma
- - avishagoyal08/ + + Timileyin
- avishagoyal08 + Timileyin Daso
- - Amit + + Tunwase
- Amit Das + Tunwase Ayobami
- - lifeashaze/ + + Utkarsh
- lifeashaze + Utkarsh Rai
- - namita27/ + + Vaibhav/
- namita27 + Vaibhav
- - PAKHI + + Vandana
- PAKHI VASHISHTH + Vandana Singh
- - priyayadav19054/ + + Vardaan
- priyayadav19054 + Vardaan Raj Singh
- - sameer-19/ + + Vinamra/
- sameer-19 + Vinamra
- - siddharth + + Nishant/
- siddharth jain + Nishant
- - Shreyas + + Rusheel
- Shreyas Kamath + Rusheel Dalal
- - Md + + Susajjit
- Md Shafaullah + Susajjit kumar Singh
- - Namrata/ + + Sachin
- Namrata + Sachin Kamath
- - PRABHAT + + Sachin
- PRABHAT KUMAR MISHRA + Sachin Kant
- - Rai_M/ + + Sam/
- Rai_M + Sam
- - ADITYA + + Sandeep
- ADITYA PATHAK + Sandeep V
- - AMAN + + Sanjanabharadwaj25/
- AMAN SHRIVASTAVA + Sanjanabharadwaj25
- - ARYAN + + Sarthak
- ARYAN GULATI + Sarthak Rajput
- - Aayush + + Sarthak
- Aayush Girdhar + Sarthak Kurothe
- - Abhiram + + Shalin
- Abhiram J + Shalin Bhavsar
- - Abhiroop + + Shitij
- Abhiroop Singh + Shitij Agrawal
- - Abhishek + + Shreya
- Abhishek Kumar + Shreya Gupta
- - Abhishek + + Shubham
- Abhishek Srivastava + Shubham Kashyap
- - Achintya + + Shubham
- Achintya Saxena + Shubham Rajendra Burad
- - Adithyan + + Sid/
- Adithyan Madhu + Sid
- - Aditya + + Sinu
- Aditya Mandage + Sinu Xavier
- - Aditya + + sohandiginnk/
- Aditya Raj + sohandiginnk
- - Agrim + + Sohan
- Agrim Jain + Sohan Agashimani
- - Aiyan + + Soumili
- Aiyan Faras + Soumili Chakraborty
- - akshay-gidwani-psl/ + + priyanshu
- akshay-gidwani-psl + priyanshu mundra
- - Akshay + + Rahul/
- Akshay Khatter + Rahul
- - AmanDekate1/ + + raju121097/
- AmanDekate1 + raju121097
- - Amelia + + rohinipatil89/
- Amelia Dutta + rohinipatil89
- - Aneesh + + RUDRANEEL
- Aneesh Gupta + RUDRANEEL DUTTA
- - Aniket + + Rupesh
- Aniket Bindhani + Rupesh Piwal
- - Aniruddho + + Sahan
- Aniruddho Mitra + Sahan Mondal
- - Anisha + + sajjad
- Anisha Shende + sajjad rahman
- - Ansh + + sanu-020/
- Ansh Kushwaha + sanu-020
- - Anshsahu0802/ + + shrutij1247/
- Anshsahu0802 + shrutij1247
- - Anshul + + snatchysquid/
- Anshul Nigam + snatchysquid
- - Anshuman + + MD
- Anshuman Shukla + MD SOHAIL ANSARI
- - Apoorv + + Sourav
- Apoorv Chandrakar + Sourav khan
- - Aratrik + + swarup-0508/
- Aratrik Basak + swarup-0508
- - Armaan + + Kirtan
- Armaan Khan + Kirtan Kushwah
- - Arnav + + Vansh
- Arnav Agarwal + Vansh Chopra
- - Arpit + + xoxo16/
- Arpit Rath + xoxo16
- - Arya + + Daniel
- Arya Gupta + Daniel Deychev
- - Auro + + yusmnn/
- Auro Saswat Raj + yusmnn
- - Av-nish/ + + zebi29/
- Av-nish + zebi29
- - Ayush + + Vishal/
- Ayush Kedia + Vishal
- - Ayush + + Vishal
- Ayush Rawat + Vishal Sharma
- - Bhavna + + Vishesh
- Bhavna Panjwani + Vishesh Gupta
- - Rik + + Yasir
- Rik Chatterjee + Yasir Jafri
- - ANURAG + + Aman
- ANURAG TIWARI + Aman Ali
- - Dibendu + + adityasingh0149/
- Dibendu G. + adityasingh0149
- - Divyansh + + Aman
- Divyansh Pratap Singh + Aman Yadav
- - Durgesh + + ankit20214/
- Durgesh Sahu + ankit20214
- - firejoust/ + + Arhum
- firejoust + Arhum Khan
- - Harshit + + Arpit
- Harshit kumar + Arpit Ghura
- - Bhupesh + + Ashutosh
- Bhupesh Jain + Ashutosh Saxena
- - Hiya + + Bhavy
- Hiya Shivnani + Bhavy Khatter
- - Jashan + + Harsh
- Jashan Warraich + Harsh Bhikadiya
- - Jayesh + + hruday007/
- Jayesh Kumavat + hruday007
- - Jeetu + + jenna/
- Jeetu Gupta + jenna
- - Zayd/ + + @kshitij7/
- Zayd + @kshitij7
- - Kapadiatathya/ + + Masoom
- Kapadiatathya + Masoom Mishra
- - Aditya + + Sudhakar
- Aditya Shukla + Sudhakar Singh
- - Kartikey + + Nihar
- Kartikey Tandon + Nihar Bansal
- - Kashish + + Nikita
- Kashish Ahuja + Nikita Singh
- - Kashish + + Nilesh
- Kashish Lakhara + Nilesh Das
- - Kasun + + Aniruddho
- Kasun Hewagama + Aniruddho Mitra
- - Lisha + + Anisha
- Lisha Kothari + Anisha Shende
- - Dhruv + + Ansh
- Dhruv Gupta + Ansh Kushwaha
- - ManikSingh29/ + + Anshsahu0802/
- ManikSingh29 + Anshsahu0802
- - Paolo + + Anshul
- Paolo Cretaro + Anshul Nigam
- - Shrey + + Anshuman
- Shrey Midha + Anshuman Shukla
- - Mohammad + + Apoorv
- Mohammad Palla + Apoorv Chandrakar
- - Mohammed + + Aratrik
- Mohammed Imtiyaz + Aratrik Basak
- - Mohit + + Armaan
- Mohit Gaur + Armaan Khan
- - Mohit + + Arnav
- Mohit Patni + Arnav Agarwal
- - Muhammad + + Arpit
- Muhammad Noorani + Arpit Rath
- - Muhammad + + Arya
- Muhammad Sameer Farooq + Arya Gupta
- - Nakul + + Auro
- Nakul Bhangale + Auro Saswat Raj
- - Nayan + + Av-nish/
- Nayan Koshta + Av-nish
- - Nitya + + Ayush
- Nitya Anuga + Ayush Kedia
- - Pavan/ + + Ayush
- Pavan + Ayush Rawat
- - Prajwal/ + + Bhavna
- Prajwal + Bhavna Panjwani
- - PranathiJyothi/ + + Rik
- PranathiJyothi + Rik Chatterjee
- - Prashantsetia/ + + ANURAG
- Prashantsetia + ANURAG TIWARI
- - Pratik + + Paolo
- Pratik Agrawal + Paolo Cretaro
- - Raghav + + ADITYA
- Raghav Babbar + ADITYA PATHAK
- - Rahmat + + AMAN
- Rahmat Sulistio + AMAN SHRIVASTAVA
- - Rahul + + ARYAN
- Rahul Singh Gurjar + ARYAN GULATI
- - Raj + + Aayush
- Raj + Aayush Girdhar
- - Rituraj + + Abhiram
- Rituraj Dey + Abhiram J
- - Rusheel + + Abhiroop
- Rusheel Dalal + Abhiroop Singh
- - Susajjit + + Abhishek
- Susajjit kumar Singh + Abhishek Kumar
- - Sachin + + Abhishek
- Sachin Kamath + Abhishek Srivastava
- - Sachin + + Achintya
- Sachin Kant + Achintya Saxena
- - Sam/ + + Adithyan
- Sam + Adithyan Madhu
- - Sandeep + + Aditya
- Sandeep V + Aditya Mandage
- - Sanjanabharadwaj25/ + + Aditya
- Sanjanabharadwaj25 + Aditya Raj
- - Sarthak + + Agrim
- Sarthak Rajput + Agrim Jain
- - Sarthak + + Aiyan
- Sarthak Kurothe + Aiyan Faras
- - Shalin + + akshay-gidwani-psl/
- Shalin Bhavsar + akshay-gidwani-psl
- - Shitij + + Akshay
- Shitij Agrawal + Akshay Khatter
- - Shreya + + AmanDekate1/
- Shreya Gupta + AmanDekate1
- - Shubham + + Amelia
- Shubham Kashyap + Amelia Dutta
- - Shubham + + Aneesh
- Shubham Rajendra Burad + Aneesh Gupta
- - Sid/ + + Aniket
- Sid + Aniket Bindhani
- - Sinu + + Shrey
- Sinu Xavier + Shrey Midha
- - sohandiginnk/ + + Mohammad
- sohandiginnk + Mohammad Palla
- - Sohan -
- Sohan Agashimani -
-
- - Soumili -
- Soumili Chakraborty -
-
- - Soyeb -
- Soyeb Sarkar -
-
- - Storm_Chaser/ -
- Storm_Chaser -
-
- - Sudhanshu -
- Sudhanshu Purohit -
-
- - Sumit -
- Sumit Kumar Rai -
-
- - SwetaDas16/ -
- SwetaDas16 -
-
- - Tamanna -
- Tamanna Sharma -
-
- - Tandrima -
- Tandrima Singha -
-
- - Taneesha -
- Taneesha Suwandarachchi -
-
- - Tanmoy -
- Tanmoy Sengupta -
-
- - Tanuj -
- Tanuj Sharma -
-
- - Timileyin -
- Timileyin Daso -
-
- - Tunwase -
- Tunwase Ayobami -
-
- - Utkarsh -
- Utkarsh Rai -
-
- - Vaibhav/ -
- Vaibhav -
-
- - Vandana -
- Vandana Singh -
-
- - Vardaan -
- Vardaan Raj Singh -
-
- - Vinamra/ -
- Vinamra -
-
- - Vishal/ -
- Vishal -
-
- - Vishal -
- Vishal Sharma -
-
- - Vishesh -
- Vishesh Gupta -
-
- - Yasir -
- Yasir Jafri -
-
- - Aman -
- Aman Ali -
-
- - adityasingh0149/ + + Mohammed
- adityasingh0149 + Mohammed Imtiyaz
- - Aman + + Mohit
- Aman Yadav + Mohit Gaur
- - ankit20214/ + + Mohit
- ankit20214 + Mohit Patni
- - Arhum + + Muhammad
- Arhum Khan + Muhammad Noorani
- - Arpit + + Muhammad
- Arpit Ghura + Muhammad Sameer Farooq
- - Ashutosh + + Nakul
- Ashutosh Saxena + Nakul Bhangale
- - Bhavy + + Nayan
- Bhavy Khatter + Nayan Koshta
- - Harsh + + Nitya
- Harsh Bhikadiya + Nitya Anuga
- - hruday007/ + + Pavan/
- hruday007 + Pavan
- - jenna/ + + Prajwal/
- jenna + Prajwal
- - @kshitij7/ + + PranathiJyothi/
- @kshitij7 + PranathiJyothi
- - Masoom + + Prashantsetia/
- Masoom Mishra + Prashantsetia
- - Sudhakar + + Pratik
- Sudhakar Singh + Pratik Agrawal
- - Nihar + + Raghav
- Nihar Bansal + Raghav Babbar
- - Nikita + + Rahmat
- Nikita Singh + Rahmat Sulistio
- - Nilesh + + Rahul
- Nilesh Das + Rahul Singh Gurjar
- - Nishant/ + + Raj
- Nishant + Raj
- - priyanshu + + Dibendu
- priyanshu mundra + Dibendu G.
- - Rahul/ + + Divyansh
- Rahul + Divyansh Pratap Singh
- - raju121097/ + + Durgesh
- raju121097 + Durgesh Sahu
- - rohinipatil89/ + + firejoust/
- rohinipatil89 + firejoust
- - RUDRANEEL + + Harshit
- RUDRANEEL DUTTA + Harshit kumar
- - Rupesh + + Bhupesh
- Rupesh Piwal + Bhupesh Jain
- - Sahan + + Hiya
- Sahan Mondal + Hiya Shivnani
- - sajjad + + Jashan
- sajjad rahman + Jashan Warraich
- - sanu-020/ + + Jayesh
- sanu-020 + Jayesh Kumavat
- - shrutij1247/ + + Jeetu
- shrutij1247 + Jeetu Gupta
- - snatchysquid/ + + Zayd/
- snatchysquid + Zayd
- - MD + + Kapadiatathya/
- MD SOHAIL ANSARI + Kapadiatathya
- - Sourav + + Aditya
- Sourav khan + Aditya Shukla
- - swarup-0508/ + + Kartikey
- swarup-0508 + Kartikey Tandon
- - Kirtan + + Kashish
- Kirtan Kushwah + Kashish Ahuja
- - Vansh + + Kashish
- Vansh Chopra + Kashish Lakhara
- - xoxo16/ + + Kasun
- xoxo16 + Kasun Hewagama
- - Daniel + + Lisha
- Daniel Deychev + Lisha Kothari
- - yusmnn/ + + Dhruv
- yusmnn + Dhruv Gupta
- - zebi29/ + + ManikSingh29/
- zebi29 + ManikSingh29
- + Aayush
Aayush Girdhar From 723ad1c445466b95e4bc6037f24fd3944ddf202f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 31 Jan 2024 20:26:41 +0000 Subject: [PATCH 421/448] docs(README): update contributors --- README.md | 155 ++++++++++++++++++++++++++---------------------------- 1 file changed, 74 insertions(+), 81 deletions(-) diff --git a/README.md b/README.md index 6c839130..a3e1e5ea 100644 --- a/README.md +++ b/README.md @@ -779,13 +779,6 @@ Steps to contribute in this repository Solaris
- - Siddharth -
- Siddharth Reddy Anthireddy -
-
Shubham @@ -793,8 +786,6 @@ Steps to contribute in this repository Shubham S Jagtap
ShreyasiDebnath/ @@ -802,11 +793,13 @@ Steps to contribute in this repository ShreyasiDebnath
- - Abhimanyu + + Shreyan
- Abhimanyu Chauhan + Shreyan Haldankar
@@ -837,8 +830,6 @@ Steps to contribute in this repository priyayadav19054
sameer-19/ @@ -846,6 +837,8 @@ Steps to contribute in this repository sameer-19
siddharth @@ -881,8 +874,6 @@ Steps to contribute in this repository PRABHAT KUMAR MISHRA
Rai_M/ @@ -890,6 +881,15 @@ Steps to contribute in this repository Rai_M
+ + Abhimanyu +
+ Abhimanyu Chauhan +
+
ADITYA @@ -1023,24 +1023,17 @@ Steps to contribute in this repository - - SavvyShivam/ -
- SavvyShivam -
-
- - Shreyan + + Shakti
- Shreyan Haldankar + Shakti Maddheshiya
- - Shakti + + SavvyShivam/
- Shakti Maddheshiya + SavvyShivam
@@ -1057,8 +1050,6 @@ Steps to contribute in this repository Tandrima Singha
Tamanna @@ -1066,6 +1057,8 @@ Steps to contribute in this repository Tamanna Sharma
SwetaDas16/ @@ -1101,8 +1094,6 @@ Steps to contribute in this repository Soyeb Sarkar
Rituraj @@ -1110,6 +1101,8 @@ Steps to contribute in this repository Rituraj Dey
Tanmoy @@ -1145,8 +1138,6 @@ Steps to contribute in this repository Utkarsh Rai
Vaibhav/ @@ -1154,6 +1145,8 @@ Steps to contribute in this repository Vaibhav
Vandana @@ -1189,8 +1182,6 @@ Steps to contribute in this repository Rusheel Dalal
Susajjit @@ -1198,6 +1189,8 @@ Steps to contribute in this repository Susajjit kumar Singh
Sachin @@ -1233,8 +1226,6 @@ Steps to contribute in this repository Sanjanabharadwaj25
Sarthak @@ -1242,6 +1233,8 @@ Steps to contribute in this repository Sarthak Rajput
Sarthak @@ -1277,8 +1270,6 @@ Steps to contribute in this repository Shubham Kashyap
Shubham @@ -1286,6 +1277,8 @@ Steps to contribute in this repository Shubham Rajendra Burad
Sid/ @@ -1321,8 +1314,6 @@ Steps to contribute in this repository Soumili Chakraborty
priyanshu @@ -1330,6 +1321,8 @@ Steps to contribute in this repository priyanshu mundra
Rahul/ @@ -1365,8 +1358,6 @@ Steps to contribute in this repository Rupesh Piwal
Sahan @@ -1374,6 +1365,8 @@ Steps to contribute in this repository Sahan Mondal
sajjad @@ -1409,8 +1402,6 @@ Steps to contribute in this repository MD SOHAIL ANSARI
Sourav @@ -1418,6 +1409,8 @@ Steps to contribute in this repository Sourav khan
swarup-0508/ @@ -1453,8 +1446,6 @@ Steps to contribute in this repository Daniel Deychev
yusmnn/ @@ -1462,6 +1453,8 @@ Steps to contribute in this repository yusmnn
zebi29/ @@ -1497,8 +1490,6 @@ Steps to contribute in this repository Yasir Jafri
Aman @@ -1506,6 +1497,8 @@ Steps to contribute in this repository Aman Ali
adityasingh0149/ @@ -1541,8 +1534,6 @@ Steps to contribute in this repository Arpit Ghura
Ashutosh @@ -1550,6 +1541,8 @@ Steps to contribute in this repository Ashutosh Saxena
Bhavy @@ -1585,8 +1578,6 @@ Steps to contribute in this repository @kshitij7
Masoom @@ -1594,6 +1585,8 @@ Steps to contribute in this repository Masoom Mishra
Sudhakar @@ -1629,8 +1622,6 @@ Steps to contribute in this repository Aniruddho Mitra
Anisha @@ -1638,6 +1629,8 @@ Steps to contribute in this repository Anisha Shende
Ansh @@ -1673,8 +1666,6 @@ Steps to contribute in this repository Apoorv Chandrakar
Aratrik @@ -1682,6 +1673,8 @@ Steps to contribute in this repository Aratrik Basak
Armaan @@ -1717,8 +1710,6 @@ Steps to contribute in this repository Auro Saswat Raj
Av-nish/ @@ -1726,6 +1717,8 @@ Steps to contribute in this repository Av-nish
Ayush @@ -1761,8 +1754,6 @@ Steps to contribute in this repository ANURAG TIWARI
Paolo @@ -1770,6 +1761,8 @@ Steps to contribute in this repository Paolo Cretaro
ADITYA @@ -1805,8 +1798,6 @@ Steps to contribute in this repository Abhiram J
Abhiroop @@ -1814,6 +1805,8 @@ Steps to contribute in this repository Abhiroop Singh
Abhishek @@ -1849,8 +1842,6 @@ Steps to contribute in this repository Aditya Mandage
Aditya @@ -1858,6 +1849,8 @@ Steps to contribute in this repository Aditya Raj
Agrim @@ -1893,8 +1886,6 @@ Steps to contribute in this repository AmanDekate1
Amelia @@ -1902,6 +1893,8 @@ Steps to contribute in this repository Amelia Dutta
Aneesh @@ -1937,8 +1930,6 @@ Steps to contribute in this repository Mohammed Imtiyaz
Mohit @@ -1946,6 +1937,8 @@ Steps to contribute in this repository Mohit Gaur
Mohit @@ -1981,8 +1974,6 @@ Steps to contribute in this repository Nayan Koshta
Nitya @@ -1990,6 +1981,8 @@ Steps to contribute in this repository Nitya Anuga
Pavan/ @@ -2025,8 +2018,6 @@ Steps to contribute in this repository Pratik Agrawal
Raghav @@ -2034,6 +2025,8 @@ Steps to contribute in this repository Raghav Babbar
Rahmat @@ -2069,8 +2062,6 @@ Steps to contribute in this repository Divyansh Pratap Singh
Durgesh @@ -2078,6 +2069,8 @@ Steps to contribute in this repository Durgesh Sahu
firejoust/ @@ -2113,8 +2106,6 @@ Steps to contribute in this repository Jashan Warraich
Jayesh @@ -2122,6 +2113,8 @@ Steps to contribute in this repository Jayesh Kumavat
Jeetu @@ -2157,8 +2150,6 @@ Steps to contribute in this repository Kartikey Tandon
Kashish @@ -2166,6 +2157,8 @@ Steps to contribute in this repository Kashish Ahuja
Kashish From 84dc84a3265fb5c215d13e344bd38d916d322411 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 5 Feb 2024 20:27:14 +0000 Subject: [PATCH 422/448] docs(README): update contributors --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index a3e1e5ea..fc316746 100644 --- a/README.md +++ b/README.md @@ -275,7 +275,7 @@ Steps to contribute in this repository - + Himanshu
Himanshu Kumar Sharma @@ -1573,9 +1573,9 @@ Steps to contribute in this repository
- @kshitij7/ + @devkshitij7/
- @kshitij7 + @devkshitij7
From 42b54ef772abc5a5a91554be5b2f346167b61932 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 6 Feb 2024 20:26:35 +0000 Subject: [PATCH 423/448] docs(README): update contributors --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index fc316746..731f3209 100644 --- a/README.md +++ b/README.md @@ -973,9 +973,9 @@ Steps to contribute in this repository
- Lokesh + Lokesh
- Lokesh Medharametla + Lokesh Medharimetla
From 62bd7606d51ca375be484fa66eb46bc84b7a4c3d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 11 Feb 2024 20:27:02 +0000 Subject: [PATCH 424/448] docs(README): update contributors --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 731f3209..49fd5125 100644 --- a/README.md +++ b/README.md @@ -216,9 +216,9 @@ Steps to contribute in this repository - DarkSpy25/ + Ankita
- DarkSpy25 + Ankita Patil
+ + Siddharth +
+ Siddharth Reddy Anthireddy +
+
Shubham @@ -786,6 +793,8 @@ Steps to contribute in this repository Shubham S Jagtap
ShreyasiDebnath/ @@ -793,13 +802,11 @@ Steps to contribute in this repository ShreyasiDebnath
- - Shreyan + + Abhimanyu
- Shreyan Haldankar + Abhimanyu Chauhan
@@ -830,6 +837,8 @@ Steps to contribute in this repository priyayadav19054
sameer-19/ @@ -837,8 +846,6 @@ Steps to contribute in this repository sameer-19
siddharth @@ -874,6 +881,8 @@ Steps to contribute in this repository PRABHAT KUMAR MISHRA
Rai_M/ @@ -881,15 +890,6 @@ Steps to contribute in this repository Rai_M
- - Abhimanyu -
- Abhimanyu Chauhan -
-
ADITYA @@ -1023,17 +1023,24 @@ Steps to contribute in this repository - - Shakti + + SavvyShivam/
- Shakti Maddheshiya + SavvyShivam
- - SavvyShivam/ + + Shreyan
- SavvyShivam + Shreyan Haldankar +
+
+ + Shakti +
+ Shakti Maddheshiya
@@ -1050,6 +1057,8 @@ Steps to contribute in this repository Tandrima Singha
Tamanna @@ -1057,8 +1066,6 @@ Steps to contribute in this repository Tamanna Sharma
SwetaDas16/ @@ -1094,6 +1101,8 @@ Steps to contribute in this repository Soyeb Sarkar
Rituraj @@ -1101,8 +1110,6 @@ Steps to contribute in this repository Rituraj Dey
Tanmoy @@ -1138,6 +1145,8 @@ Steps to contribute in this repository Utkarsh Rai
Vaibhav/ @@ -1145,8 +1154,6 @@ Steps to contribute in this repository Vaibhav
Vandana @@ -1182,6 +1189,8 @@ Steps to contribute in this repository Rusheel Dalal
Susajjit @@ -1189,8 +1198,6 @@ Steps to contribute in this repository Susajjit kumar Singh
Sachin @@ -1226,6 +1233,8 @@ Steps to contribute in this repository Sanjanabharadwaj25
Sarthak @@ -1233,8 +1242,6 @@ Steps to contribute in this repository Sarthak Rajput
Sarthak @@ -1270,6 +1277,8 @@ Steps to contribute in this repository Shubham Kashyap
Shubham @@ -1277,8 +1286,6 @@ Steps to contribute in this repository Shubham Rajendra Burad
Sid/ @@ -1314,6 +1321,8 @@ Steps to contribute in this repository Soumili Chakraborty
priyanshu @@ -1321,8 +1330,6 @@ Steps to contribute in this repository priyanshu mundra
Rahul/ @@ -1358,6 +1365,8 @@ Steps to contribute in this repository Rupesh Piwal
Sahan @@ -1365,8 +1374,6 @@ Steps to contribute in this repository Sahan Mondal
sajjad @@ -1402,6 +1409,8 @@ Steps to contribute in this repository MD SOHAIL ANSARI
Sourav @@ -1409,8 +1418,6 @@ Steps to contribute in this repository Sourav khan
swarup-0508/ @@ -1446,6 +1453,8 @@ Steps to contribute in this repository Daniel Deychev
yusmnn/ @@ -1453,8 +1462,6 @@ Steps to contribute in this repository yusmnn
zebi29/ @@ -1490,6 +1497,8 @@ Steps to contribute in this repository Yasir Jafri
Aman @@ -1497,8 +1506,6 @@ Steps to contribute in this repository Aman Ali
adityasingh0149/ @@ -1534,6 +1541,8 @@ Steps to contribute in this repository Arpit Ghura
Ashutosh @@ -1541,8 +1550,6 @@ Steps to contribute in this repository Ashutosh Saxena
Bhavy @@ -1578,6 +1585,8 @@ Steps to contribute in this repository @devkshitij7
Masoom @@ -1585,8 +1594,6 @@ Steps to contribute in this repository Masoom Mishra
Sudhakar @@ -1622,6 +1629,8 @@ Steps to contribute in this repository Aniruddho Mitra
Anisha @@ -1629,8 +1638,6 @@ Steps to contribute in this repository Anisha Shende
Ansh @@ -1666,6 +1673,8 @@ Steps to contribute in this repository Apoorv Chandrakar
Aratrik @@ -1673,8 +1682,6 @@ Steps to contribute in this repository Aratrik Basak
Armaan @@ -1710,6 +1717,8 @@ Steps to contribute in this repository Auro Saswat Raj
Av-nish/ @@ -1717,8 +1726,6 @@ Steps to contribute in this repository Av-nish
Ayush @@ -1754,6 +1761,8 @@ Steps to contribute in this repository ANURAG TIWARI
Paolo @@ -1761,8 +1770,6 @@ Steps to contribute in this repository Paolo Cretaro
ADITYA @@ -1798,6 +1805,8 @@ Steps to contribute in this repository Abhiram J
Abhiroop @@ -1805,8 +1814,6 @@ Steps to contribute in this repository Abhiroop Singh
Abhishek @@ -1842,6 +1849,8 @@ Steps to contribute in this repository Aditya Mandage
Aditya @@ -1849,8 +1858,6 @@ Steps to contribute in this repository Aditya Raj
Agrim @@ -1886,6 +1893,8 @@ Steps to contribute in this repository AmanDekate1
Amelia @@ -1893,8 +1902,6 @@ Steps to contribute in this repository Amelia Dutta
Aneesh @@ -1930,6 +1937,8 @@ Steps to contribute in this repository Mohammed Imtiyaz
Mohit @@ -1937,8 +1946,6 @@ Steps to contribute in this repository Mohit Gaur
Mohit @@ -1974,6 +1981,8 @@ Steps to contribute in this repository Nayan Koshta
Nitya @@ -1981,8 +1990,6 @@ Steps to contribute in this repository Nitya Anuga
Pavan/ @@ -2018,6 +2025,8 @@ Steps to contribute in this repository Pratik Agrawal
Raghav @@ -2025,8 +2034,6 @@ Steps to contribute in this repository Raghav Babbar
Rahmat @@ -2062,6 +2069,8 @@ Steps to contribute in this repository Divyansh Pratap Singh
Durgesh @@ -2069,8 +2078,6 @@ Steps to contribute in this repository Durgesh Sahu
firejoust/ @@ -2106,6 +2113,8 @@ Steps to contribute in this repository Jashan Warraich
Jayesh @@ -2113,8 +2122,6 @@ Steps to contribute in this repository Jayesh Kumavat
Jeetu @@ -2150,6 +2157,8 @@ Steps to contribute in this repository Kartikey Tandon
Kashish @@ -2157,8 +2166,6 @@ Steps to contribute in this repository Kashish Ahuja
Kashish From a671ee2f98f6da16cf2c4797b1f7895f58e352c6 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 17 Mar 2024 20:26:46 +0000 Subject: [PATCH 426/448] docs(README): update contributors --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 6f2922d5..6d01aeb2 100644 --- a/README.md +++ b/README.md @@ -253,9 +253,9 @@ Steps to contribute in this repository - Saket + Github_User/
- Saket Ahlawat + Github_User
@@ -1441,9 +1441,9 @@ Steps to contribute in this repository - xoxo16/ + ridhi16/
- xoxo16 + ridhi16
From ee539102f72cdd921de298395790a96763c770d0 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 4 Apr 2024 20:26:41 +0000 Subject: [PATCH 427/448] docs(README): update contributors --- README.md | 121 +++++++++++++++++++++++++----------------------------- 1 file changed, 57 insertions(+), 64 deletions(-) diff --git a/README.md b/README.md index 6d01aeb2..221e98c0 100644 --- a/README.md +++ b/README.md @@ -803,10 +803,10 @@ Steps to contribute in this repository - - Abhimanyu + + Alok
- Abhimanyu Chauhan + Alok Khansali
@@ -891,17 +891,17 @@ Steps to contribute in this repository - - ADITYA + + Abhimanyu
- ADITYA SAI + Abhimanyu Chauhan
- - Alok + + ADITYA
- Alok Khansali + ADITYA SAI
@@ -1016,31 +1016,31 @@ Steps to contribute in this repository
- - Samrat + + Shreyan
- Samrat Dawn + Shreyan Haldankar
- - SavvyShivam/ + + Samrat
- SavvyShivam + Samrat Dawn
- - Shreyan + + Shakti
- Shreyan Haldankar + Shakti Maddheshiya
- - Shakti + + SavvyShivam/
- Shakti Maddheshiya + SavvyShivam
@@ -1104,10 +1104,10 @@ Steps to contribute in this repository
- - Rituraj + + Aniruddho
- Rituraj Dey + Aniruddho Mitra
@@ -1622,15 +1622,6 @@ Steps to contribute in this repository Nilesh Das - - Aniruddho -
- Aniruddho Mitra -
-
Anisha @@ -1638,6 +1629,8 @@ Steps to contribute in this repository Anisha Shende
Ansh @@ -1673,8 +1666,6 @@ Steps to contribute in this repository Apoorv Chandrakar
Aratrik @@ -1682,6 +1673,8 @@ Steps to contribute in this repository Aratrik Basak
Armaan @@ -1717,8 +1710,6 @@ Steps to contribute in this repository Auro Saswat Raj
Av-nish/ @@ -1726,6 +1717,8 @@ Steps to contribute in this repository Av-nish
Ayush @@ -1761,8 +1754,6 @@ Steps to contribute in this repository ANURAG TIWARI
Paolo @@ -1770,6 +1761,8 @@ Steps to contribute in this repository Paolo Cretaro
ADITYA @@ -1805,8 +1798,6 @@ Steps to contribute in this repository Abhiram J
Abhiroop @@ -1814,6 +1805,8 @@ Steps to contribute in this repository Abhiroop Singh
Abhishek @@ -1849,8 +1842,6 @@ Steps to contribute in this repository Aditya Mandage
Aditya @@ -1858,6 +1849,8 @@ Steps to contribute in this repository Aditya Raj
Agrim @@ -1893,8 +1886,6 @@ Steps to contribute in this repository AmanDekate1
Amelia @@ -1902,6 +1893,8 @@ Steps to contribute in this repository Amelia Dutta
Aneesh @@ -1937,8 +1930,6 @@ Steps to contribute in this repository Mohammed Imtiyaz
Mohit @@ -1946,6 +1937,8 @@ Steps to contribute in this repository Mohit Gaur
Mohit @@ -1981,8 +1974,6 @@ Steps to contribute in this repository Nayan Koshta
Nitya @@ -1990,6 +1981,8 @@ Steps to contribute in this repository Nitya Anuga
Pavan/ @@ -2018,15 +2011,6 @@ Steps to contribute in this repository Prashantsetia - - Pratik -
- Pratik Agrawal -
-
Raghav @@ -2041,6 +2025,8 @@ Steps to contribute in this repository Rahmat Sulistio
Rahul @@ -2055,6 +2041,13 @@ Steps to contribute in this repository Raj + + Rituraj +
+ Rituraj Dey +
+
Dibendu @@ -2069,8 +2062,6 @@ Steps to contribute in this repository Divyansh Pratap Singh
Durgesh @@ -2078,6 +2069,8 @@ Steps to contribute in this repository Durgesh Sahu
firejoust/ @@ -2113,8 +2106,6 @@ Steps to contribute in this repository Jashan Warraich
Jayesh @@ -2122,6 +2113,8 @@ Steps to contribute in this repository Jayesh Kumavat
Jeetu @@ -2157,8 +2150,6 @@ Steps to contribute in this repository Kartikey Tandon
Kashish @@ -2166,6 +2157,8 @@ Steps to contribute in this repository Kashish Ahuja
Kashish From e6f6d4c9a4eea2214bb8976643657c72d0412677 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 9 May 2024 20:27:11 +0000 Subject: [PATCH 428/448] docs(README): update contributors --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 221e98c0..5e446cbd 100644 --- a/README.md +++ b/README.md @@ -1457,9 +1457,9 @@ Steps to contribute in this repository
- yusmnn/ + Yusman/
- yusmnn + Yusman
From 02373468eceea0a19d257b2f0aa0227f417cc9f2 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 13 May 2024 20:27:58 +0000 Subject: [PATCH 429/448] docs(README): update contributors --- README.md | 121 +++++++++++++++++++++++++++++------------------------- 1 file changed, 64 insertions(+), 57 deletions(-) diff --git a/README.md b/README.md index 5e446cbd..b769dadd 100644 --- a/README.md +++ b/README.md @@ -803,10 +803,10 @@ Steps to contribute in this repository - - Alok + + Abhimanyu
- Alok Khansali + Abhimanyu Chauhan
@@ -891,17 +891,17 @@ Steps to contribute in this repository - - Abhimanyu + + ADITYA
- Abhimanyu Chauhan + ADITYA SAI
- - ADITYA + + Alok
- ADITYA SAI + Alok Khansali
@@ -1016,31 +1016,31 @@ Steps to contribute in this repository
- - Shreyan + + Samrat
- Shreyan Haldankar + Samrat Dawn
- - Samrat + + SavvyShivam/
- Samrat Dawn + SavvyShivam
- - Shakti + + Shreyan
- Shakti Maddheshiya + Shreyan Haldankar
- - SavvyShivam/ + + Shakti
- SavvyShivam + Shakti Maddheshiya
@@ -1104,10 +1104,10 @@ Steps to contribute in this repository
- - Aniruddho + + Rituraj
- Aniruddho Mitra + Rituraj Dey
@@ -1622,6 +1622,15 @@ Steps to contribute in this repository Nilesh Das + + Aniruddho +
+ Aniruddho Mitra +
+
Anisha @@ -1629,8 +1638,6 @@ Steps to contribute in this repository Anisha Shende
Ansh @@ -1666,6 +1673,8 @@ Steps to contribute in this repository Apoorv Chandrakar
Aratrik @@ -1673,8 +1682,6 @@ Steps to contribute in this repository Aratrik Basak
Armaan @@ -1710,6 +1717,8 @@ Steps to contribute in this repository Auro Saswat Raj
Av-nish/ @@ -1717,8 +1726,6 @@ Steps to contribute in this repository Av-nish
Ayush @@ -1754,6 +1761,8 @@ Steps to contribute in this repository ANURAG TIWARI
Paolo @@ -1761,8 +1770,6 @@ Steps to contribute in this repository Paolo Cretaro
ADITYA @@ -1798,6 +1805,8 @@ Steps to contribute in this repository Abhiram J
Abhiroop @@ -1805,8 +1814,6 @@ Steps to contribute in this repository Abhiroop Singh
Abhishek @@ -1842,6 +1849,8 @@ Steps to contribute in this repository Aditya Mandage
Aditya @@ -1849,8 +1858,6 @@ Steps to contribute in this repository Aditya Raj
Agrim @@ -1886,6 +1893,8 @@ Steps to contribute in this repository AmanDekate1
Amelia @@ -1893,8 +1902,6 @@ Steps to contribute in this repository Amelia Dutta
Aneesh @@ -1930,6 +1937,8 @@ Steps to contribute in this repository Mohammed Imtiyaz
Mohit @@ -1937,8 +1946,6 @@ Steps to contribute in this repository Mohit Gaur
Mohit @@ -1974,6 +1981,8 @@ Steps to contribute in this repository Nayan Koshta
Nitya @@ -1981,8 +1990,6 @@ Steps to contribute in this repository Nitya Anuga
Pavan/ @@ -2011,6 +2018,15 @@ Steps to contribute in this repository Prashantsetia + + Pratik +
+ Pratik Agrawal +
+
Raghav @@ -2025,8 +2041,6 @@ Steps to contribute in this repository Rahmat Sulistio
Rahul @@ -2041,13 +2055,6 @@ Steps to contribute in this repository Raj - - Rituraj -
- Rituraj Dey -
-
Dibendu @@ -2062,6 +2069,8 @@ Steps to contribute in this repository Divyansh Pratap Singh
Durgesh @@ -2069,8 +2078,6 @@ Steps to contribute in this repository Durgesh Sahu
firejoust/ @@ -2106,6 +2113,8 @@ Steps to contribute in this repository Jashan Warraich
Jayesh @@ -2113,8 +2122,6 @@ Steps to contribute in this repository Jayesh Kumavat
Jeetu @@ -2150,6 +2157,8 @@ Steps to contribute in this repository Kartikey Tandon
Kashish @@ -2157,8 +2166,6 @@ Steps to contribute in this repository Kashish Ahuja
Kashish From 7260fec028fa6e94f9b7bde17b269343d0b3ae18 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 28 May 2024 20:27:39 +0000 Subject: [PATCH 430/448] docs(README): update contributors --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b769dadd..9cb5405e 100644 --- a/README.md +++ b/README.md @@ -1697,7 +1697,7 @@ Steps to contribute in this repository - + Arpit
Arpit Rath From 94cdb321d0f761da4f3051415376b75df7930701 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 31 May 2024 20:27:12 +0000 Subject: [PATCH 431/448] docs(README): update contributors --- README.md | 171 ++++++++++++++++++++++++++---------------------------- 1 file changed, 82 insertions(+), 89 deletions(-) diff --git a/README.md b/README.md index 9cb5405e..72d891f1 100644 --- a/README.md +++ b/README.md @@ -1043,13 +1043,6 @@ Steps to contribute in this repository Shakti Maddheshiya
- - Taneesha -
- Taneesha Suwandarachchi -
-
Tandrima @@ -1057,8 +1050,6 @@ Steps to contribute in this repository Tandrima Singha
Tamanna @@ -1066,6 +1057,8 @@ Steps to contribute in this repository Tamanna Sharma
SwetaDas16/ @@ -1101,13 +1094,27 @@ Steps to contribute in this repository Soyeb Sarkar + + Soumili +
+ Soumili Chakraborty +
+
- - Rituraj + + Aniruddho
- Rituraj Dey + Aniruddho Mitra +
+
+ + Taneesha +
+ Taneesha Suwandarachchi
@@ -1138,6 +1145,8 @@ Steps to contribute in this repository Tunwase Ayobami
Utkarsh @@ -1145,8 +1154,6 @@ Steps to contribute in this repository Utkarsh Rai
Vaibhav/ @@ -1169,19 +1176,21 @@ Steps to contribute in this repository - - Vinamra/ + + Nilesh
- Vinamra + Nilesh Das
- - Nishant/ + + Rituraj
- Nishant + Rituraj Dey
Rusheel @@ -1189,8 +1198,6 @@ Steps to contribute in this repository Rusheel Dalal
Susajjit @@ -1226,6 +1233,8 @@ Steps to contribute in this repository Sandeep V
Sanjanabharadwaj25/ @@ -1233,8 +1242,6 @@ Steps to contribute in this repository Sanjanabharadwaj25
Sarthak @@ -1270,6 +1277,8 @@ Steps to contribute in this repository Shreya Gupta
Shubham @@ -1277,8 +1286,6 @@ Steps to contribute in this repository Shubham Kashyap
Shubham @@ -1314,15 +1321,15 @@ Steps to contribute in this repository Sohan Agashimani
- - Soumili + + Nishant/
- Soumili Chakraborty + Nishant
priyanshu @@ -1358,6 +1365,8 @@ Steps to contribute in this repository RUDRANEEL DUTTA
Rupesh @@ -1365,8 +1374,6 @@ Steps to contribute in this repository Rupesh Piwal
Sahan @@ -1402,6 +1409,8 @@ Steps to contribute in this repository snatchysquid
MD @@ -1409,8 +1418,6 @@ Steps to contribute in this repository MD SOHAIL ANSARI
Sourav @@ -1425,13 +1432,6 @@ Steps to contribute in this repository swarup-0508 - - Kirtan -
- Kirtan Kushwah -
-
Vansh @@ -1469,6 +1469,13 @@ Steps to contribute in this repository zebi29 + + Vinamra/ +
+ Vinamra +
+
Vishal/ @@ -1490,6 +1497,8 @@ Steps to contribute in this repository Vishesh Gupta
Yasir @@ -1497,8 +1506,6 @@ Steps to contribute in this repository Yasir Jafri
Aman @@ -1534,6 +1541,8 @@ Steps to contribute in this repository Arhum Khan
Arpit @@ -1541,8 +1550,6 @@ Steps to contribute in this repository Arpit Ghura
Ashutosh @@ -1578,6 +1585,8 @@ Steps to contribute in this repository jenna
@devkshitij7/ @@ -1585,8 +1594,6 @@ Steps to contribute in this repository @devkshitij7
Masoom @@ -1615,22 +1622,6 @@ Steps to contribute in this repository Nikita Singh - - Nilesh -
- Nilesh Das -
-
- - Aniruddho -
- Aniruddho Mitra -
-
Anisha @@ -1638,6 +1629,8 @@ Steps to contribute in this repository Anisha Shende
Ansh @@ -1673,8 +1666,6 @@ Steps to contribute in this repository Apoorv Chandrakar
Aratrik @@ -1682,6 +1673,8 @@ Steps to contribute in this repository Aratrik Basak
Armaan @@ -1717,8 +1710,6 @@ Steps to contribute in this repository Auro Saswat Raj
Av-nish/ @@ -1726,6 +1717,8 @@ Steps to contribute in this repository Av-nish
Ayush @@ -1761,8 +1754,6 @@ Steps to contribute in this repository ANURAG TIWARI
Paolo @@ -1770,6 +1761,8 @@ Steps to contribute in this repository Paolo Cretaro
ADITYA @@ -1805,8 +1798,6 @@ Steps to contribute in this repository Abhiram J
Abhiroop @@ -1814,6 +1805,8 @@ Steps to contribute in this repository Abhiroop Singh
Abhishek @@ -1849,8 +1842,6 @@ Steps to contribute in this repository Aditya Mandage
Aditya @@ -1858,6 +1849,8 @@ Steps to contribute in this repository Aditya Raj
Agrim @@ -1893,8 +1886,6 @@ Steps to contribute in this repository AmanDekate1
Amelia @@ -1902,6 +1893,8 @@ Steps to contribute in this repository Amelia Dutta
Aneesh @@ -1937,8 +1930,6 @@ Steps to contribute in this repository Mohammed Imtiyaz
Mohit @@ -1946,6 +1937,8 @@ Steps to contribute in this repository Mohit Gaur
Mohit @@ -1981,8 +1974,6 @@ Steps to contribute in this repository Nayan Koshta
Nitya @@ -1990,6 +1981,8 @@ Steps to contribute in this repository Nitya Anuga
Pavan/ @@ -2025,8 +2018,6 @@ Steps to contribute in this repository Pratik Agrawal
Raghav @@ -2034,6 +2025,8 @@ Steps to contribute in this repository Raghav Babbar
Rahmat @@ -2069,8 +2062,6 @@ Steps to contribute in this repository Divyansh Pratap Singh
Durgesh @@ -2078,6 +2069,8 @@ Steps to contribute in this repository Durgesh Sahu
firejoust/ @@ -2113,15 +2106,15 @@ Steps to contribute in this repository Jashan Warraich
- + Jayesh
Jayesh Kumavat
Jeetu @@ -2157,8 +2150,6 @@ Steps to contribute in this repository Kartikey Tandon
Kashish @@ -2166,6 +2157,8 @@ Steps to contribute in this repository Kashish Ahuja
Kashish From e8f15b269780b286fa464a33e17cd8ab72c6c833 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 1 Jun 2024 20:27:00 +0000 Subject: [PATCH 432/448] docs(README): update contributors --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 72d891f1..d80b7b72 100644 --- a/README.md +++ b/README.md @@ -70,9 +70,9 @@ Steps to contribute in this repository - Adity + adi/
- Adity Roy + adi
From a6383a3239dc79dfc66a59013cd704861cebf7b5 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 10 Jun 2024 20:28:14 +0000 Subject: [PATCH 433/448] docs(README): update contributors --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d80b7b72..b17280f2 100644 --- a/README.md +++ b/README.md @@ -1162,7 +1162,7 @@ Steps to contribute in this repository - + Vandana
Vandana Singh From d66fb5c17e528ea4a5e82df06ff621af08d719b9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 3 Jul 2024 20:28:07 +0000 Subject: [PATCH 434/448] docs(README): update contributors --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b17280f2..8ece56b4 100644 --- a/README.md +++ b/README.md @@ -568,9 +568,9 @@ Steps to contribute in this repository
- Saurav + Navdhare
- Saurav Navdhare + Navdhare Saurav Rajendra
- - Abhimanyu + + Alok
- Abhimanyu Chauhan + Alok Khansali
@@ -891,17 +891,17 @@ Steps to contribute in this repository - - ADITYA + + Abhimanyu
- ADITYA SAI + Abhimanyu Chauhan
- - Alok + + ADITYA
- Alok Khansali + ADITYA SAI
@@ -963,151 +963,151 @@ Steps to contribute in this repository - - Bhushan + + Shreyan
- Bhushan K + Shreyan Haldankar
- - Lokesh + + Shakti
- Lokesh Medharimetla + Shakti Maddheshiya
- - Manas + + SavvyShivam/
- Manas Rai + SavvyShivam
- - Md + + Samrat
- Md Tausif Siddiqui + Samrat Dawn
- - Niladri + + Ronica
- Niladri Das + Ronica Singh
- - RASHIKA + + Bhushan
- RASHIKA RAWAT + Bhushan K
- - Ronica + + Lokesh
- Ronica Singh + Lokesh Medharimetla
- - Samrat + + Manas
- Samrat Dawn + Manas Rai
- - SavvyShivam/ + + RASHIKA
- SavvyShivam + RASHIKA RAWAT
- - Shreyan + + Niladri
- Shreyan Haldankar + Niladri Das
- - Shakti + + Md
- Shakti Maddheshiya + Md Tausif Siddiqui
- - Tandrima + + Soumili
- Tandrima Singha + Soumili Chakraborty
- - Tamanna + + Soyeb
- Tamanna Sharma + Soyeb Sarkar
- - SwetaDas16/ + + Storm_Chaser/
- SwetaDas16 + Storm_Chaser
- - Sumit + + Sudhanshu
- Sumit Kumar Rai + Sudhanshu Purohit
- - Sudhanshu + + Sumit
- Sudhanshu Purohit + Sumit Kumar Rai
- - Storm_Chaser/ + + SwetaDas16/
- Storm_Chaser + SwetaDas16
- - Soyeb + + Tamanna
- Soyeb Sarkar + Tamanna Sharma
- - Soumili + + Vardaan
- Soumili Chakraborty + Vardaan Raj Singh
- - Aniruddho + + Tandrima
- Aniruddho Mitra + Tandrima Singha
@@ -1117,6 +1117,13 @@ Steps to contribute in this repository Taneesha Suwandarachchi + + Vinamra/ +
+ Vinamra +
+
Tanmoy @@ -1138,6 +1145,8 @@ Steps to contribute in this repository Timileyin Daso
Tunwase @@ -1145,8 +1154,6 @@ Steps to contribute in this repository Tunwase Ayobami
Utkarsh @@ -1168,20 +1175,6 @@ Steps to contribute in this repository Vandana Singh - - Vardaan -
- Vardaan Raj Singh -
-
- - Nilesh -
- Nilesh Das -
-
Rituraj @@ -1189,8 +1182,6 @@ Steps to contribute in this repository Rituraj Dey
Rusheel @@ -1198,6 +1189,8 @@ Steps to contribute in this repository Rusheel Dalal
Susajjit @@ -1233,8 +1226,6 @@ Steps to contribute in this repository Sandeep V
Sanjanabharadwaj25/ @@ -1242,6 +1233,8 @@ Steps to contribute in this repository Sanjanabharadwaj25
Sarthak @@ -1277,8 +1270,6 @@ Steps to contribute in this repository Shreya Gupta
Shubham @@ -1286,6 +1277,8 @@ Steps to contribute in this repository Shubham Kashyap
Shubham @@ -1321,6 +1314,13 @@ Steps to contribute in this repository Sohan Agashimani + + Vishal/ +
+ Vishal +
+
@@ -1469,20 +1469,6 @@ Steps to contribute in this repository zebi29 - - Vinamra/ -
- Vinamra -
-
- - Vishal/ -
- Vishal -
-
Vishal @@ -1497,8 +1483,6 @@ Steps to contribute in this repository Vishesh Gupta
Yasir @@ -1513,6 +1497,8 @@ Steps to contribute in this repository Aman Ali
adityasingh0149/ @@ -1541,8 +1527,6 @@ Steps to contribute in this repository Arhum Khan
Arpit @@ -1557,6 +1541,8 @@ Steps to contribute in this repository Ashutosh Saxena
Bhavy @@ -1585,8 +1571,6 @@ Steps to contribute in this repository jenna
@devkshitij7/ @@ -1601,6 +1585,8 @@ Steps to contribute in this repository Masoom Mishra
Sudhakar @@ -1622,6 +1608,29 @@ Steps to contribute in this repository Nikita Singh + + Nilesh +
+ Nilesh Das +
+
+ + ADITYA +
+ ADITYA PATHAK +
+
+ + Aniruddho +
+ Aniruddho Mitra +
+
Anisha @@ -1629,8 +1638,6 @@ Steps to contribute in this repository Anisha Shende
Ansh @@ -1666,6 +1673,8 @@ Steps to contribute in this repository Apoorv Chandrakar
Aratrik @@ -1673,8 +1682,6 @@ Steps to contribute in this repository Aratrik Basak
Armaan @@ -1710,6 +1717,8 @@ Steps to contribute in this repository Auro Saswat Raj
Av-nish/ @@ -1717,8 +1726,6 @@ Steps to contribute in this repository Av-nish
Ayush @@ -1754,22 +1761,8 @@ Steps to contribute in this repository ANURAG TIWARI - - Paolo -
- Paolo Cretaro -
-
- - ADITYA -
- ADITYA PATHAK -
-
AMAN @@ -1805,8 +1798,6 @@ Steps to contribute in this repository Abhiroop Singh
Abhishek @@ -1814,6 +1805,8 @@ Steps to contribute in this repository Abhishek Kumar
Abhishek @@ -1849,8 +1842,6 @@ Steps to contribute in this repository Aditya Raj
Agrim @@ -1858,6 +1849,8 @@ Steps to contribute in this repository Agrim Jain
Aiyan @@ -1893,8 +1886,6 @@ Steps to contribute in this repository Amelia Dutta
Aneesh @@ -1902,6 +1893,8 @@ Steps to contribute in this repository Aneesh Gupta
Aniket @@ -1909,6 +1902,20 @@ Steps to contribute in this repository Aniket Bindhani + + Dibendu +
+ Dibendu G. +
+
+ + Paolo +
+ Paolo Cretaro +
+
Shrey @@ -1930,6 +1937,8 @@ Steps to contribute in this repository Mohammed Imtiyaz
Mohit @@ -1937,8 +1946,6 @@ Steps to contribute in this repository Mohit Gaur
Mohit @@ -1946,13 +1953,6 @@ Steps to contribute in this repository Mohit Patni - - Muhammad -
- Muhammad Noorani -
-
Muhammad @@ -2048,13 +2048,6 @@ Steps to contribute in this repository Raj - - Dibendu -
- Dibendu G. -
-
Divyansh @@ -2069,8 +2062,6 @@ Steps to contribute in this repository Durgesh Sahu
firejoust/ @@ -2078,6 +2069,8 @@ Steps to contribute in this repository firejoust
Harshit @@ -2113,8 +2106,6 @@ Steps to contribute in this repository Jayesh Kumavat
Jeetu @@ -2122,6 +2113,8 @@ Steps to contribute in this repository Jeetu Gupta
Zayd/ @@ -2157,8 +2150,6 @@ Steps to contribute in this repository Kashish Ahuja
Kashish @@ -2166,6 +2157,8 @@ Steps to contribute in this repository Kashish Lakhara
Kasun From 6306e4305ae9a47c1b70bd436b81ba25d911b5ea Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 10 Jul 2024 20:29:37 +0000 Subject: [PATCH 436/448] docs(README): update contributors --- README.md | 303 ++++++++++++++++++++++++++++-------------------------- 1 file changed, 155 insertions(+), 148 deletions(-) diff --git a/README.md b/README.md index fc4a1960..77628eed 100644 --- a/README.md +++ b/README.md @@ -963,114 +963,114 @@ Steps to contribute in this repository - - Shreyan + + Bhushan
- Shreyan Haldankar + Bhushan K
- - Shakti + + Lokesh
- Shakti Maddheshiya + Lokesh Medharimetla
- - SavvyShivam/ + + Manas
- SavvyShivam + Manas Rai
- - Samrat + + Md
- Samrat Dawn + Md Tausif Siddiqui
- - Ronica + + Niladri
- Ronica Singh + Niladri Das
- - Bhushan + + RASHIKA
- Bhushan K + RASHIKA RAWAT
- - Lokesh + + Ronica
- Lokesh Medharimetla + Ronica Singh
- - Manas + + Shreyan
- Manas Rai + Shreyan Haldankar
- - RASHIKA + + Samrat
- RASHIKA RAWAT + Samrat Dawn
- - Niladri + + SavvyShivam/
- Niladri Das + SavvyShivam
- - Md + + Shakti
- Md Tausif Siddiqui + Shakti Maddheshiya
- - Soumili + + Taneesha
- Soumili Chakraborty + Taneesha Suwandarachchi
- - Soyeb + + Tandrima
- Soyeb Sarkar + Tandrima Singha
- - Storm_Chaser/ + + Tamanna
- Storm_Chaser + Tamanna Sharma
- - Sudhanshu + + SwetaDas16/
- Sudhanshu Purohit + SwetaDas16
@@ -1081,47 +1081,33 @@ Steps to contribute in this repository - - SwetaDas16/ + + Sudhanshu
- SwetaDas16 + Sudhanshu Purohit
- - Tamanna + + Storm_Chaser/
- Tamanna Sharma + Storm_Chaser
- - Vardaan + + Soyeb
- Vardaan Raj Singh + Soyeb Sarkar
- - Tandrima -
- Tandrima Singha -
-
- - Taneesha -
- Taneesha Suwandarachchi -
-
- - Vinamra/ + + Aniruddho
- Vinamra + Aniruddho Mitra
@@ -1145,8 +1131,6 @@ Steps to contribute in this repository Timileyin Daso
Tunwase @@ -1161,6 +1145,8 @@ Steps to contribute in this repository Utkarsh Rai
Vaibhav/ @@ -1176,10 +1162,24 @@ Steps to contribute in this repository - - Rituraj + + Vardaan
- Rituraj Dey + Vardaan Raj Singh +
+
+ + Vinamra/ +
+ Vinamra +
+
+ + Nishant/ +
+ Nishant
@@ -1315,21 +1315,14 @@ Steps to contribute in this repository - - Vishal/ + + Soumili
- Vishal + Soumili Chakraborty
- - Nishant/ -
- Nishant -
-
priyanshu @@ -1365,8 +1358,6 @@ Steps to contribute in this repository RUDRANEEL DUTTA
Rupesh @@ -1374,6 +1365,8 @@ Steps to contribute in this repository Rupesh Piwal
Sahan @@ -1409,8 +1402,6 @@ Steps to contribute in this repository snatchysquid
MD @@ -1418,6 +1409,8 @@ Steps to contribute in this repository MD SOHAIL ANSARI
Sourav @@ -1432,6 +1425,13 @@ Steps to contribute in this repository swarup-0508 + + Kirtan +
+ Kirtan Kushwah +
+
Vansh @@ -1469,6 +1469,13 @@ Steps to contribute in this repository zebi29 + + Vishal/ +
+ Vishal +
+
Vishal @@ -1490,6 +1497,8 @@ Steps to contribute in this repository Yasir Jafri
Aman @@ -1497,8 +1506,6 @@ Steps to contribute in this repository Aman Ali
adityasingh0149/ @@ -1534,6 +1541,8 @@ Steps to contribute in this repository Arpit Ghura
Ashutosh @@ -1541,8 +1550,6 @@ Steps to contribute in this repository Ashutosh Saxena
Bhavy @@ -1578,6 +1585,8 @@ Steps to contribute in this repository @devkshitij7
Masoom @@ -1585,8 +1594,6 @@ Steps to contribute in this repository Masoom Mishra
Sudhakar @@ -1615,22 +1622,6 @@ Steps to contribute in this repository Nilesh Das - - ADITYA -
- ADITYA PATHAK -
-
- - Aniruddho -
- Aniruddho Mitra -
-
Anisha @@ -1638,6 +1629,8 @@ Steps to contribute in this repository Anisha Shende
Ansh @@ -1673,8 +1666,6 @@ Steps to contribute in this repository Apoorv Chandrakar
Aratrik @@ -1682,6 +1673,8 @@ Steps to contribute in this repository Aratrik Basak
Armaan @@ -1717,8 +1710,6 @@ Steps to contribute in this repository Auro Saswat Raj
Av-nish/ @@ -1726,6 +1717,8 @@ Steps to contribute in this repository Av-nish
Ayush @@ -1761,8 +1754,22 @@ Steps to contribute in this repository ANURAG TIWARI + + Paolo +
+ Paolo Cretaro +
+
+ + ADITYA +
+ ADITYA PATHAK +
+
AMAN @@ -1798,6 +1805,8 @@ Steps to contribute in this repository Abhiroop Singh
Abhishek @@ -1805,8 +1814,6 @@ Steps to contribute in this repository Abhishek Kumar
Abhishek @@ -1842,6 +1849,8 @@ Steps to contribute in this repository Aditya Raj
Agrim @@ -1849,8 +1858,6 @@ Steps to contribute in this repository Agrim Jain
Aiyan @@ -1886,6 +1893,8 @@ Steps to contribute in this repository Amelia Dutta
Aneesh @@ -1893,8 +1902,6 @@ Steps to contribute in this repository Aneesh Gupta
Aniket @@ -1902,20 +1909,6 @@ Steps to contribute in this repository Aniket Bindhani - - Dibendu -
- Dibendu G. -
-
- - Paolo -
- Paolo Cretaro -
-
Shrey @@ -1937,8 +1930,6 @@ Steps to contribute in this repository Mohammed Imtiyaz
Mohit @@ -1946,6 +1937,8 @@ Steps to contribute in this repository Mohit Gaur
Mohit @@ -1981,8 +1974,6 @@ Steps to contribute in this repository Nitya Anuga
Pavan/ @@ -1990,6 +1981,8 @@ Steps to contribute in this repository Pavan
Prajwal/ @@ -2025,8 +2018,6 @@ Steps to contribute in this repository Raghav Babbar
Rahmat @@ -2034,6 +2025,8 @@ Steps to contribute in this repository Rahmat Sulistio
Rahul @@ -2048,6 +2041,20 @@ Steps to contribute in this repository Raj + + Rituraj +
+ Rituraj Dey +
+
+ + Dibendu +
+ Dibendu G. +
+
Divyansh @@ -2062,6 +2069,8 @@ Steps to contribute in this repository Durgesh Sahu
firejoust/ @@ -2069,8 +2078,6 @@ Steps to contribute in this repository firejoust
Harshit @@ -2106,6 +2113,8 @@ Steps to contribute in this repository Jayesh Kumavat
Jeetu @@ -2113,8 +2122,6 @@ Steps to contribute in this repository Jeetu Gupta
Zayd/ @@ -2150,6 +2157,8 @@ Steps to contribute in this repository Kashish Ahuja
Kashish @@ -2157,8 +2166,6 @@ Steps to contribute in this repository Kashish Lakhara
Kasun From ff15c273e9ded0a0c9c9bfae398475471bb87ad7 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 12 Jul 2024 20:28:48 +0000 Subject: [PATCH 437/448] docs(README): update contributors --- README.md | 111 +++++++++++++++++++++++++++++------------------------- 1 file changed, 59 insertions(+), 52 deletions(-) diff --git a/README.md b/README.md index 77628eed..2463a3e1 100644 --- a/README.md +++ b/README.md @@ -803,10 +803,10 @@ Steps to contribute in this repository - - Alok + + Abhimanyu
- Alok Khansali + Abhimanyu Chauhan
@@ -891,17 +891,17 @@ Steps to contribute in this repository - - Abhimanyu + + ADITYA
- Abhimanyu Chauhan + ADITYA SAI
- - ADITYA + + Alok
- ADITYA SAI + Alok Khansali
@@ -1015,13 +1015,6 @@ Steps to contribute in this repository
- - Shreyan -
- Shreyan Haldankar -
-
Samrat @@ -1036,6 +1029,13 @@ Steps to contribute in this repository SavvyShivam + + Shreyan +
+ Shreyan Haldankar +
+
Shakti @@ -1104,10 +1104,10 @@ Steps to contribute in this repository
- - Aniruddho + + Rituraj
- Aniruddho Mitra + Rituraj Dey
@@ -1622,6 +1622,15 @@ Steps to contribute in this repository Nilesh Das + + Aniruddho +
+ Aniruddho Mitra +
+
Anisha @@ -1629,8 +1638,6 @@ Steps to contribute in this repository Anisha Shende
Ansh @@ -1666,6 +1673,8 @@ Steps to contribute in this repository Apoorv Chandrakar
Aratrik @@ -1673,8 +1682,6 @@ Steps to contribute in this repository Aratrik Basak
Armaan @@ -1710,6 +1717,8 @@ Steps to contribute in this repository Auro Saswat Raj
Av-nish/ @@ -1717,8 +1726,6 @@ Steps to contribute in this repository Av-nish
Ayush @@ -1754,6 +1761,8 @@ Steps to contribute in this repository ANURAG TIWARI
Paolo @@ -1761,8 +1770,6 @@ Steps to contribute in this repository Paolo Cretaro
ADITYA @@ -1798,6 +1805,8 @@ Steps to contribute in this repository Abhiram J
Abhiroop @@ -1805,8 +1814,6 @@ Steps to contribute in this repository Abhiroop Singh
Abhishek @@ -1842,6 +1849,8 @@ Steps to contribute in this repository Aditya Mandage
Aditya @@ -1849,8 +1858,6 @@ Steps to contribute in this repository Aditya Raj
Agrim @@ -1886,6 +1893,8 @@ Steps to contribute in this repository AmanDekate1
Amelia @@ -1893,8 +1902,6 @@ Steps to contribute in this repository Amelia Dutta
Aneesh @@ -1930,6 +1937,8 @@ Steps to contribute in this repository Mohammed Imtiyaz
Mohit @@ -1937,8 +1946,6 @@ Steps to contribute in this repository Mohit Gaur
Mohit @@ -1946,6 +1953,13 @@ Steps to contribute in this repository Mohit Patni + + Muhammad +
+ Muhammad Noorani +
+
Muhammad @@ -1967,6 +1981,8 @@ Steps to contribute in this repository Nayan Koshta
Nitya @@ -1981,8 +1997,6 @@ Steps to contribute in this repository Pavan
Prajwal/ @@ -2011,6 +2025,8 @@ Steps to contribute in this repository Pratik Agrawal
Raghav @@ -2025,8 +2041,6 @@ Steps to contribute in this repository Rahmat Sulistio
Rahul @@ -2041,13 +2055,6 @@ Steps to contribute in this repository Raj - - Rituraj -
- Rituraj Dey -
-
Dibendu @@ -2062,6 +2069,8 @@ Steps to contribute in this repository Divyansh Pratap Singh
Durgesh @@ -2069,8 +2078,6 @@ Steps to contribute in this repository Durgesh Sahu
firejoust/ @@ -2106,6 +2113,8 @@ Steps to contribute in this repository Jashan Warraich
Jayesh @@ -2113,8 +2122,6 @@ Steps to contribute in this repository Jayesh Kumavat
Jeetu @@ -2150,6 +2157,8 @@ Steps to contribute in this repository Kartikey Tandon
Kashish @@ -2157,8 +2166,6 @@ Steps to contribute in this repository Kashish Ahuja
Kashish From 7242b2f9db6c3c672d65af18e4355c778780a40c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 18 Jul 2024 20:29:15 +0000 Subject: [PATCH 438/448] docs(README): update contributors --- README.md | 219 ++++++++++++++++++++++++++---------------------------- 1 file changed, 106 insertions(+), 113 deletions(-) diff --git a/README.md b/README.md index 2463a3e1..555dedfa 100644 --- a/README.md +++ b/README.md @@ -803,10 +803,10 @@ Steps to contribute in this repository - - Abhimanyu + + Alok
- Abhimanyu Chauhan + Alok Khansali
@@ -891,17 +891,17 @@ Steps to contribute in this repository - - ADITYA + + Abhimanyu
- ADITYA SAI + Abhimanyu Chauhan
- - Alok + + ADITYA
- Alok Khansali + ADITYA SAI
@@ -963,40 +963,40 @@ Steps to contribute in this repository - - Bhushan + + SavvyShivam/
- Bhushan K + SavvyShivam
- - Lokesh + + Shakti
- Lokesh Medharimetla + Shakti Maddheshiya
- - Manas + + Shreyan
- Manas Rai + Shreyan Haldankar
- - Md + + Samrat
- Md Tausif Siddiqui + Samrat Dawn
- - Niladri + + Ronica
- Niladri Das + Ronica Singh
@@ -1007,70 +1007,70 @@ Steps to contribute in this repository - - Ronica + + Niladri
- Ronica Singh + Niladri Das
- - Samrat + + Md
- Samrat Dawn + Md Tausif Siddiqui
- - SavvyShivam/ + + Manas
- SavvyShivam + Manas Rai
- - Shreyan + + Lokesh
- Shreyan Haldankar + Lokesh Medharimetla
- - Shakti + + Bhushan
- Shakti Maddheshiya + Bhushan K
- - Taneesha + + Aniruddho
- Taneesha Suwandarachchi + Aniruddho Mitra
- - Tandrima + + Soyeb
- Tandrima Singha + Soyeb Sarkar
- - Tamanna + + Storm_Chaser/
- Tamanna Sharma + Storm_Chaser
- - SwetaDas16/ + + Sudhanshu
- SwetaDas16 + Sudhanshu Purohit
@@ -1081,33 +1081,33 @@ Steps to contribute in this repository - - Sudhanshu + + SwetaDas16/
- Sudhanshu Purohit + SwetaDas16
- - Storm_Chaser/ + + Tamanna
- Storm_Chaser + Tamanna Sharma
- - Soyeb + + Tandrima
- Soyeb Sarkar + Tandrima Singha
- - Rituraj + + Taneesha
- Rituraj Dey + Taneesha Suwandarachchi
@@ -1622,15 +1622,6 @@ Steps to contribute in this repository Nilesh Das - - Aniruddho -
- Aniruddho Mitra -
-
Anisha @@ -1638,6 +1629,8 @@ Steps to contribute in this repository Anisha Shende
Ansh @@ -1673,8 +1666,6 @@ Steps to contribute in this repository Apoorv Chandrakar
Aratrik @@ -1682,6 +1673,8 @@ Steps to contribute in this repository Aratrik Basak
Armaan @@ -1717,8 +1710,6 @@ Steps to contribute in this repository Auro Saswat Raj
Av-nish/ @@ -1726,6 +1717,8 @@ Steps to contribute in this repository Av-nish
Ayush @@ -1761,15 +1754,15 @@ Steps to contribute in this repository ANURAG TIWARI
- - Paolo + + Shrey
- Paolo Cretaro + Shrey Midha
ADITYA @@ -1805,8 +1798,6 @@ Steps to contribute in this repository Abhiram J
Abhiroop @@ -1814,6 +1805,8 @@ Steps to contribute in this repository Abhiroop Singh
Abhishek @@ -1849,8 +1842,6 @@ Steps to contribute in this repository Aditya Mandage
Aditya @@ -1858,6 +1849,8 @@ Steps to contribute in this repository Aditya Raj
Agrim @@ -1893,8 +1886,6 @@ Steps to contribute in this repository AmanDekate1
Amelia @@ -1902,6 +1893,8 @@ Steps to contribute in this repository Amelia Dutta
Aneesh @@ -1916,13 +1909,6 @@ Steps to contribute in this repository Aniket Bindhani - - Shrey -
- Shrey Midha -
-
Mohammad @@ -1937,8 +1923,6 @@ Steps to contribute in this repository Mohammed Imtiyaz
Mohit @@ -1953,6 +1937,8 @@ Steps to contribute in this repository Mohit Patni
Muhammad @@ -1981,8 +1967,6 @@ Steps to contribute in this repository Nayan Koshta
Nitya @@ -1997,6 +1981,8 @@ Steps to contribute in this repository Pavan
Prajwal/ @@ -2025,8 +2011,6 @@ Steps to contribute in this repository Pratik Agrawal
Raghav @@ -2041,6 +2025,8 @@ Steps to contribute in this repository Rahmat Sulistio
Rahul @@ -2055,6 +2041,13 @@ Steps to contribute in this repository Raj + + Rituraj +
+ Rituraj Dey +
+
Dibendu @@ -2069,8 +2062,6 @@ Steps to contribute in this repository Divyansh Pratap Singh
Durgesh @@ -2078,13 +2069,8 @@ Steps to contribute in this repository Durgesh Sahu - - firejoust/ -
- firejoust -
-
Harshit @@ -2113,8 +2099,6 @@ Steps to contribute in this repository Jashan Warraich
Jayesh @@ -2129,6 +2113,8 @@ Steps to contribute in this repository Jeetu Gupta
Zayd/ @@ -2157,8 +2143,6 @@ Steps to contribute in this repository Kartikey Tandon
Kashish @@ -2173,6 +2157,8 @@ Steps to contribute in this repository Kashish Lakhara
Kasun @@ -2201,6 +2187,13 @@ Steps to contribute in this repository ManikSingh29 + + Paolo +
+ Paolo Cretaro +
+
From 9743fe68bcd8021c75c91ab762db56574df74e98 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 29 Jul 2024 20:29:04 +0000 Subject: [PATCH 439/448] docs(README): update contributors --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 555dedfa..56602971 100644 --- a/README.md +++ b/README.md @@ -1126,9 +1126,9 @@ Steps to contribute in this repository - Timileyin + T.D/
- Timileyin Daso + T.D
From c0cd2aca7bca1aa4cd94d3c52b82a26fa74a0b6f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 6 Aug 2024 20:27:29 +0000 Subject: [PATCH 440/448] docs(README): update contributors --- README.md | 219 ++++++++++++++++++++++++++++-------------------------- 1 file changed, 113 insertions(+), 106 deletions(-) diff --git a/README.md b/README.md index 56602971..b212a10d 100644 --- a/README.md +++ b/README.md @@ -803,10 +803,10 @@ Steps to contribute in this repository - - Alok + + Abhimanyu
- Alok Khansali + Abhimanyu Chauhan
@@ -891,17 +891,17 @@ Steps to contribute in this repository - - Abhimanyu + + ADITYA
- Abhimanyu Chauhan + ADITYA SAI
- - ADITYA + + Alok
- ADITYA SAI + Alok Khansali
@@ -963,40 +963,40 @@ Steps to contribute in this repository - - SavvyShivam/ + + Bhushan
- SavvyShivam + Bhushan K
- - Shakti + + Lokesh
- Shakti Maddheshiya + Lokesh Medharimetla
- - Shreyan + + Manas
- Shreyan Haldankar + Manas Rai
- - Samrat + + Md
- Samrat Dawn + Md Tausif Siddiqui
- - Ronica + + Niladri
- Ronica Singh + Niladri Das
@@ -1007,70 +1007,70 @@ Steps to contribute in this repository - - Niladri + + Ronica
- Niladri Das + Ronica Singh
- - Md + + Samrat
- Md Tausif Siddiqui + Samrat Dawn
- - Manas + + SavvyShivam/
- Manas Rai + SavvyShivam
- - Lokesh + + Shreyan
- Lokesh Medharimetla + Shreyan Haldankar
- - Bhushan + + Shakti
- Bhushan K + Shakti Maddheshiya
- - Aniruddho + + Taneesha
- Aniruddho Mitra + Taneesha Suwandarachchi
- - Soyeb + + Tandrima
- Soyeb Sarkar + Tandrima Singha
- - Storm_Chaser/ + + Tamanna
- Storm_Chaser + Tamanna Sharma
- - Sudhanshu + + SwetaDas16/
- Sudhanshu Purohit + SwetaDas16
@@ -1081,33 +1081,33 @@ Steps to contribute in this repository - - SwetaDas16/ + + Sudhanshu
- SwetaDas16 + Sudhanshu Purohit
- - Tamanna + + Storm_Chaser/
- Tamanna Sharma + Storm_Chaser
- - Tandrima + + Soyeb
- Tandrima Singha + Soyeb Sarkar
- - Taneesha + + Rituraj
- Taneesha Suwandarachchi + Rituraj Dey
@@ -1622,6 +1622,15 @@ Steps to contribute in this repository Nilesh Das + + + Aniruddho +
+ Aniruddho Mitra +
+ + + Anisha @@ -1629,8 +1638,6 @@ Steps to contribute in this repository Anisha Shende - - Ansh @@ -1666,6 +1673,8 @@ Steps to contribute in this repository Apoorv Chandrakar + + Aratrik @@ -1673,8 +1682,6 @@ Steps to contribute in this repository Aratrik Basak - - Armaan @@ -1710,6 +1717,8 @@ Steps to contribute in this repository Auro Saswat Raj + + Av-nish/ @@ -1717,8 +1726,6 @@ Steps to contribute in this repository Av-nish - - Ayush @@ -1754,15 +1761,15 @@ Steps to contribute in this repository ANURAG TIWARI + + - - Shrey + + Paolo
- Shrey Midha + Paolo Cretaro
- - ADITYA @@ -1798,6 +1805,8 @@ Steps to contribute in this repository Abhiram J + + Abhiroop @@ -1805,8 +1814,6 @@ Steps to contribute in this repository Abhiroop Singh - - Abhishek @@ -1842,6 +1849,8 @@ Steps to contribute in this repository Aditya Mandage + + Aditya @@ -1849,8 +1858,6 @@ Steps to contribute in this repository Aditya Raj - - Agrim @@ -1886,6 +1893,8 @@ Steps to contribute in this repository AmanDekate1 + + Amelia @@ -1893,8 +1902,6 @@ Steps to contribute in this repository Amelia Dutta - - Aneesh @@ -1909,6 +1916,13 @@ Steps to contribute in this repository Aniket Bindhani + + + Shrey +
+ Shrey Midha +
+ Mohammad @@ -1923,6 +1937,8 @@ Steps to contribute in this repository Mohammed Imtiyaz + + Mohit @@ -1937,8 +1953,6 @@ Steps to contribute in this repository Mohit Patni - - Muhammad @@ -1967,6 +1981,8 @@ Steps to contribute in this repository Nayan Koshta + + Nitya @@ -1981,8 +1997,6 @@ Steps to contribute in this repository Pavan - - Prajwal/ @@ -2011,6 +2025,8 @@ Steps to contribute in this repository Pratik Agrawal + + Raghav @@ -2025,8 +2041,6 @@ Steps to contribute in this repository Rahmat Sulistio - - Rahul @@ -2041,13 +2055,6 @@ Steps to contribute in this repository Raj - - - Rituraj -
- Rituraj Dey -
- Dibendu @@ -2062,6 +2069,8 @@ Steps to contribute in this repository Divyansh Pratap Singh + + Durgesh @@ -2069,8 +2078,13 @@ Steps to contribute in this repository Durgesh Sahu - - + + + firejoust/ +
+ firejoust +
+ Harshit @@ -2099,6 +2113,8 @@ Steps to contribute in this repository Jashan Warraich + + Jayesh @@ -2113,8 +2129,6 @@ Steps to contribute in this repository Jeetu Gupta - - Zayd/ @@ -2143,6 +2157,8 @@ Steps to contribute in this repository Kartikey Tandon + + Kashish @@ -2157,8 +2173,6 @@ Steps to contribute in this repository Kashish Lakhara - - Kasun @@ -2187,13 +2201,6 @@ Steps to contribute in this repository ManikSingh29 - - - Paolo -
- Paolo Cretaro -
- From 06ec62bf49d8fa37fdfbc9605154c12cebce2d2f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 7 Aug 2024 20:29:45 +0000 Subject: [PATCH 441/448] docs(README): update contributors --- README.md | 219 ++++++++++++++++++++++++++---------------------------- 1 file changed, 106 insertions(+), 113 deletions(-) diff --git a/README.md b/README.md index b212a10d..56602971 100644 --- a/README.md +++ b/README.md @@ -803,10 +803,10 @@ Steps to contribute in this repository - - Abhimanyu + + Alok
- Abhimanyu Chauhan + Alok Khansali
@@ -891,17 +891,17 @@ Steps to contribute in this repository - - ADITYA + + Abhimanyu
- ADITYA SAI + Abhimanyu Chauhan
- - Alok + + ADITYA
- Alok Khansali + ADITYA SAI
@@ -963,40 +963,40 @@ Steps to contribute in this repository - - Bhushan + + SavvyShivam/
- Bhushan K + SavvyShivam
- - Lokesh + + Shakti
- Lokesh Medharimetla + Shakti Maddheshiya
- - Manas + + Shreyan
- Manas Rai + Shreyan Haldankar
- - Md + + Samrat
- Md Tausif Siddiqui + Samrat Dawn
- - Niladri + + Ronica
- Niladri Das + Ronica Singh
@@ -1007,70 +1007,70 @@ Steps to contribute in this repository - - Ronica + + Niladri
- Ronica Singh + Niladri Das
- - Samrat + + Md
- Samrat Dawn + Md Tausif Siddiqui
- - SavvyShivam/ + + Manas
- SavvyShivam + Manas Rai
- - Shreyan + + Lokesh
- Shreyan Haldankar + Lokesh Medharimetla
- - Shakti + + Bhushan
- Shakti Maddheshiya + Bhushan K
- - Taneesha + + Aniruddho
- Taneesha Suwandarachchi + Aniruddho Mitra
- - Tandrima + + Soyeb
- Tandrima Singha + Soyeb Sarkar
- - Tamanna + + Storm_Chaser/
- Tamanna Sharma + Storm_Chaser
- - SwetaDas16/ + + Sudhanshu
- SwetaDas16 + Sudhanshu Purohit
@@ -1081,33 +1081,33 @@ Steps to contribute in this repository - - Sudhanshu + + SwetaDas16/
- Sudhanshu Purohit + SwetaDas16
- - Storm_Chaser/ + + Tamanna
- Storm_Chaser + Tamanna Sharma
- - Soyeb + + Tandrima
- Soyeb Sarkar + Tandrima Singha
- - Rituraj + + Taneesha
- Rituraj Dey + Taneesha Suwandarachchi
@@ -1622,15 +1622,6 @@ Steps to contribute in this repository Nilesh Das - - - Aniruddho -
- Aniruddho Mitra -
- - - Anisha @@ -1638,6 +1629,8 @@ Steps to contribute in this repository Anisha Shende + + Ansh @@ -1673,8 +1666,6 @@ Steps to contribute in this repository Apoorv Chandrakar - - Aratrik @@ -1682,6 +1673,8 @@ Steps to contribute in this repository Aratrik Basak + + Armaan @@ -1717,8 +1710,6 @@ Steps to contribute in this repository Auro Saswat Raj - - Av-nish/ @@ -1726,6 +1717,8 @@ Steps to contribute in this repository Av-nish + + Ayush @@ -1761,15 +1754,15 @@ Steps to contribute in this repository ANURAG TIWARI - - - - Paolo + + Shrey
- Paolo Cretaro + Shrey Midha
+ + ADITYA @@ -1805,8 +1798,6 @@ Steps to contribute in this repository Abhiram J - - Abhiroop @@ -1814,6 +1805,8 @@ Steps to contribute in this repository Abhiroop Singh + + Abhishek @@ -1849,8 +1842,6 @@ Steps to contribute in this repository Aditya Mandage - - Aditya @@ -1858,6 +1849,8 @@ Steps to contribute in this repository Aditya Raj + + Agrim @@ -1893,8 +1886,6 @@ Steps to contribute in this repository AmanDekate1 - - Amelia @@ -1902,6 +1893,8 @@ Steps to contribute in this repository Amelia Dutta + + Aneesh @@ -1916,13 +1909,6 @@ Steps to contribute in this repository Aniket Bindhani - - - Shrey -
- Shrey Midha -
- Mohammad @@ -1937,8 +1923,6 @@ Steps to contribute in this repository Mohammed Imtiyaz - - Mohit @@ -1953,6 +1937,8 @@ Steps to contribute in this repository Mohit Patni + + Muhammad @@ -1981,8 +1967,6 @@ Steps to contribute in this repository Nayan Koshta - - Nitya @@ -1997,6 +1981,8 @@ Steps to contribute in this repository Pavan + + Prajwal/ @@ -2025,8 +2011,6 @@ Steps to contribute in this repository Pratik Agrawal - - Raghav @@ -2041,6 +2025,8 @@ Steps to contribute in this repository Rahmat Sulistio + + Rahul @@ -2055,6 +2041,13 @@ Steps to contribute in this repository Raj + + + Rituraj +
+ Rituraj Dey +
+ Dibendu @@ -2069,8 +2062,6 @@ Steps to contribute in this repository Divyansh Pratap Singh - - Durgesh @@ -2078,13 +2069,8 @@ Steps to contribute in this repository Durgesh Sahu - - - firejoust/ -
- firejoust -
- + + Harshit @@ -2113,8 +2099,6 @@ Steps to contribute in this repository Jashan Warraich - - Jayesh @@ -2129,6 +2113,8 @@ Steps to contribute in this repository Jeetu Gupta + + Zayd/ @@ -2157,8 +2143,6 @@ Steps to contribute in this repository Kartikey Tandon - - Kashish @@ -2173,6 +2157,8 @@ Steps to contribute in this repository Kashish Lakhara + + Kasun @@ -2201,6 +2187,13 @@ Steps to contribute in this repository ManikSingh29 + + + Paolo +
+ Paolo Cretaro +
+ From 350a65b781491fe5693d1ba1a99ca02042c31819 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 20 Aug 2024 20:31:26 +0000 Subject: [PATCH 442/448] docs(README): update contributors --- README.md | 219 ++++++++++++++++++++++++++++-------------------------- 1 file changed, 113 insertions(+), 106 deletions(-) diff --git a/README.md b/README.md index 56602971..b212a10d 100644 --- a/README.md +++ b/README.md @@ -803,10 +803,10 @@ Steps to contribute in this repository - - Alok + + Abhimanyu
- Alok Khansali + Abhimanyu Chauhan
@@ -891,17 +891,17 @@ Steps to contribute in this repository - - Abhimanyu + + ADITYA
- Abhimanyu Chauhan + ADITYA SAI
- - ADITYA + + Alok
- ADITYA SAI + Alok Khansali
@@ -963,40 +963,40 @@ Steps to contribute in this repository - - SavvyShivam/ + + Bhushan
- SavvyShivam + Bhushan K
- - Shakti + + Lokesh
- Shakti Maddheshiya + Lokesh Medharimetla
- - Shreyan + + Manas
- Shreyan Haldankar + Manas Rai
- - Samrat + + Md
- Samrat Dawn + Md Tausif Siddiqui
- - Ronica + + Niladri
- Ronica Singh + Niladri Das
@@ -1007,70 +1007,70 @@ Steps to contribute in this repository - - Niladri + + Ronica
- Niladri Das + Ronica Singh
- - Md + + Samrat
- Md Tausif Siddiqui + Samrat Dawn
- - Manas + + SavvyShivam/
- Manas Rai + SavvyShivam
- - Lokesh + + Shreyan
- Lokesh Medharimetla + Shreyan Haldankar
- - Bhushan + + Shakti
- Bhushan K + Shakti Maddheshiya
- - Aniruddho + + Taneesha
- Aniruddho Mitra + Taneesha Suwandarachchi
- - Soyeb + + Tandrima
- Soyeb Sarkar + Tandrima Singha
- - Storm_Chaser/ + + Tamanna
- Storm_Chaser + Tamanna Sharma
- - Sudhanshu + + SwetaDas16/
- Sudhanshu Purohit + SwetaDas16
@@ -1081,33 +1081,33 @@ Steps to contribute in this repository - - SwetaDas16/ + + Sudhanshu
- SwetaDas16 + Sudhanshu Purohit
- - Tamanna + + Storm_Chaser/
- Tamanna Sharma + Storm_Chaser
- - Tandrima + + Soyeb
- Tandrima Singha + Soyeb Sarkar
- - Taneesha + + Rituraj
- Taneesha Suwandarachchi + Rituraj Dey
@@ -1622,6 +1622,15 @@ Steps to contribute in this repository Nilesh Das + + + Aniruddho +
+ Aniruddho Mitra +
+ + + Anisha @@ -1629,8 +1638,6 @@ Steps to contribute in this repository Anisha Shende - - Ansh @@ -1666,6 +1673,8 @@ Steps to contribute in this repository Apoorv Chandrakar + + Aratrik @@ -1673,8 +1682,6 @@ Steps to contribute in this repository Aratrik Basak - - Armaan @@ -1710,6 +1717,8 @@ Steps to contribute in this repository Auro Saswat Raj + + Av-nish/ @@ -1717,8 +1726,6 @@ Steps to contribute in this repository Av-nish - - Ayush @@ -1754,15 +1761,15 @@ Steps to contribute in this repository ANURAG TIWARI + + - - Shrey + + Paolo
- Shrey Midha + Paolo Cretaro
- - ADITYA @@ -1798,6 +1805,8 @@ Steps to contribute in this repository Abhiram J + + Abhiroop @@ -1805,8 +1814,6 @@ Steps to contribute in this repository Abhiroop Singh - - Abhishek @@ -1842,6 +1849,8 @@ Steps to contribute in this repository Aditya Mandage + + Aditya @@ -1849,8 +1858,6 @@ Steps to contribute in this repository Aditya Raj - - Agrim @@ -1886,6 +1893,8 @@ Steps to contribute in this repository AmanDekate1 + + Amelia @@ -1893,8 +1902,6 @@ Steps to contribute in this repository Amelia Dutta - - Aneesh @@ -1909,6 +1916,13 @@ Steps to contribute in this repository Aniket Bindhani + + + Shrey +
+ Shrey Midha +
+ Mohammad @@ -1923,6 +1937,8 @@ Steps to contribute in this repository Mohammed Imtiyaz + + Mohit @@ -1937,8 +1953,6 @@ Steps to contribute in this repository Mohit Patni - - Muhammad @@ -1967,6 +1981,8 @@ Steps to contribute in this repository Nayan Koshta + + Nitya @@ -1981,8 +1997,6 @@ Steps to contribute in this repository Pavan - - Prajwal/ @@ -2011,6 +2025,8 @@ Steps to contribute in this repository Pratik Agrawal + + Raghav @@ -2025,8 +2041,6 @@ Steps to contribute in this repository Rahmat Sulistio - - Rahul @@ -2041,13 +2055,6 @@ Steps to contribute in this repository Raj - - - Rituraj -
- Rituraj Dey -
- Dibendu @@ -2062,6 +2069,8 @@ Steps to contribute in this repository Divyansh Pratap Singh + + Durgesh @@ -2069,8 +2078,13 @@ Steps to contribute in this repository Durgesh Sahu - - + + + firejoust/ +
+ firejoust +
+ Harshit @@ -2099,6 +2113,8 @@ Steps to contribute in this repository Jashan Warraich + + Jayesh @@ -2113,8 +2129,6 @@ Steps to contribute in this repository Jeetu Gupta - - Zayd/ @@ -2143,6 +2157,8 @@ Steps to contribute in this repository Kartikey Tandon + + Kashish @@ -2157,8 +2173,6 @@ Steps to contribute in this repository Kashish Lakhara - - Kasun @@ -2187,13 +2201,6 @@ Steps to contribute in this repository ManikSingh29 - - - Paolo -
- Paolo Cretaro -
- From a8184e3186e9bdadb1a5cbc48e7f50de023d7ab5 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 24 Aug 2024 20:29:38 +0000 Subject: [PATCH 443/448] docs(README): update contributors --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b212a10d..35119099 100644 --- a/README.md +++ b/README.md @@ -1288,9 +1288,9 @@ Steps to contribute in this repository - Sid/ + ABUBAKKAR/
- Sid + ABUBAKKAR
From 20966c6cc08930d047ca1496d4cef1d4d340aa2a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 31 Aug 2024 20:30:07 +0000 Subject: [PATCH 444/448] docs(README): update contributors --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 35119099..6cab3782 100644 --- a/README.md +++ b/README.md @@ -1288,9 +1288,9 @@ Steps to contribute in this repository - ABUBAKKAR/ + sid/
- ABUBAKKAR + sid
From a03b9fb84b26f5ee49f161a1f57c2ec3e3e5e9d5 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 4 Sep 2024 20:33:12 +0000 Subject: [PATCH 445/448] docs(README): update contributors --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 6cab3782..c4cef8e7 100644 --- a/README.md +++ b/README.md @@ -479,7 +479,7 @@ Steps to contribute in this repository - + Saar
Saar Agrawal From d20244236ab21fc9e7c8ed1cee2b05cbd6f77815 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 10 Sep 2024 20:31:23 +0000 Subject: [PATCH 446/448] docs(README): update contributors --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index c4cef8e7..21cbdf9b 100644 --- a/README.md +++ b/README.md @@ -1126,9 +1126,9 @@ Steps to contribute in this repository
- T.D/ + Timmy/
- T.D + Timmy
From f7572e4ef090d7c0e0076fcefd673126de5711f3 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 19 Sep 2024 20:31:16 +0000 Subject: [PATCH 447/448] docs(README): update contributors --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 21cbdf9b..7d543e03 100644 --- a/README.md +++ b/README.md @@ -1667,7 +1667,7 @@ Steps to contribute in this repository - + Apoorv
Apoorv Chandrakar From 6387625fa91f20ac88b4cafc0ae12f68b3e1f0f0 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 25 Sep 2024 20:31:03 +0000 Subject: [PATCH 448/448] docs(README): update contributors --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 7d543e03..c21bbcd6 100644 --- a/README.md +++ b/README.md @@ -1126,9 +1126,9 @@ Steps to contribute in this repository
- Timmy/ + Timi/
- Timmy + Timi