diff --git a/Topic1_Arrays/Day2207/AssignmentsHomework/1.txt b/Topic1_Arrays/Day2207/AssignmentsHomework/1.txt new file mode 100644 index 0000000..f825bcf --- /dev/null +++ b/Topic1_Arrays/Day2207/AssignmentsHomework/1.txt @@ -0,0 +1,22 @@ +//Using two loop to solve problem. That way is save memory so much but i think it isn't the best solution. + +class Solution { +public: + vector twoSum(vector& nums, int target) { + vector TwoNumber; + for(int i = 0; i < nums.size(); i++) + { + for(int j = i + 1; j < nums.size(); j++) + { + if(nums[i] + nums[j] == target) + { + TwoNumber.push_back(i); + TwoNumber.push_back(j); + break; + } + } + if(TwoNumber.size() == 2) break; + } + return TwoNumber; + } +}; diff --git a/Topic1_Arrays/Day2207/AssignmentsHomework/2.txt b/Topic1_Arrays/Day2207/AssignmentsHomework/2.txt new file mode 100644 index 0000000..87e950f --- /dev/null +++ b/Topic1_Arrays/Day2207/AssignmentsHomework/2.txt @@ -0,0 +1,36 @@ +// Using two loop to get each element in vector and check if this is '1', i will use Try function to delete all character beside that. +// But this is a common way and not quickly and not efficiently +class Solution { +public: + void Try(int i, int j, vector> &temp){ + if(i + 1 < temp.size() && temp[i + 1][j] == '1') { + temp[i + 1][j] = '0'; + Try(i + 1, j, temp); + } + if(i - 1 >= 0 && temp[i - 1][j] == '1') { + temp[i - 1][j] = '0'; + Try(i - 1, j, temp); + } + if(j - 1 >= 0 && temp[i][j - 1] == '1') { + temp[i][j - 1] = '0'; + Try(i, j - 1, temp); + } + if(j + 1 < temp[i].size() && temp[i][j + 1] == '1') { + temp[i][j + 1] = '0'; + Try(i, j + 1, temp); + } + } + + int numIslands(vector>& grid) { + int count = 0; + for(int i = 0; i < grid.size(); i++){ + for(int j = 0; j < grid[i].size(); j++){ + if(grid[i][j] == '1'){ + count ++; + Try(i, j, grid); + } + } + } + return count; + } +}; diff --git a/Topic1_Arrays/Day2207/AssignmentsHomework/3.txt b/Topic1_Arrays/Day2207/AssignmentsHomework/3.txt new file mode 100644 index 0000000..ace7d3b --- /dev/null +++ b/Topic1_Arrays/Day2207/AssignmentsHomework/3.txt @@ -0,0 +1,29 @@ +// Using the way same as Merge Sort to solve the problem. +// I think that is the popular solution. + +class Solution { +public: + void merge(vector& nums1, int m, vector& nums2, int n) { + vector temp_nums1(nums1); + int indexNums1 = 0, indexNums2 = 0, index_res = 0; + while(indexNums1 < m && indexNums2 < n) + { + if(temp_nums1[indexNums1] > nums2[indexNums2]){ + nums1[index_res] = nums2[indexNums2]; + indexNums2++; + } + else { + nums1[index_res] = temp_nums1[indexNums1]; + indexNums1++; + } + index_res++; + } + while(indexNums1 < m){ + nums1[index_res++] = temp_nums1[indexNums1++]; + } + while(indexNums2 < n){ + nums1[index_res++] = nums2[indexNums2++]; + } + } + +};