diff --git a/answer2.java b/answer2.java new file mode 100644 index 0000000..222282f --- /dev/null +++ b/answer2.java @@ -0,0 +1,73 @@ +import java.util.ArrayList; +import java.util.Scanner; + +public class Main { + + public int[] twoSum(int[] nums, int target) { + int ans[] = new int[2]; + for (int i = 0; i < nums.length; i++) { + for (int j = 0; j < nums.length; j++) { + if (nums[i] + nums[j] == target) { + ans[0] = i; + ans[1] = j; + } + } + } + return ans; + } + + public static int romanToInt(String s) { + int ans = 0; + for (int i = 0; i < s.length(); i++) { + if (s.charAt(i) == 'I') + ans++; + else if (s.charAt(i) == 'V') + ans += 5; + else if (s.charAt(i) == 'X') + ans += 10; + else if (s.charAt(i) == 'L') + ans += 50; + else if (s.charAt(i) == 'C') + ans += 100; + else if (s.charAt(i) == 'D') + ans += 500; + else if (s.charAt(i) == 'M') + ans += 1000; + } + return ans; + } + + public static void permute(int[] nums) { + ArrayList> ans = new ArrayList>(); + ArrayList save = new ArrayList(); + save.add(nums[0]); + ans.add(save); + for (int i = 1; i < nums.length; i++) { + ArrayList> save2 = new ArrayList>(); + for (int j = 0; j < ans.size(); j++) { + for (int k = 0; k <= i; k++) { + ArrayList save3 = new ArrayList(); + save3 = (ans.get(j)); + ArrayList save4 = new ArrayList(); + for (int l = 0; l < k; l++) + save4.add(save3.get(l)); + save4.add(nums[i]); + for (int l = k; l <= (i - 1); l++) + save4.add(save3.get(l)); + save2.add(save4); + } + } + ans = save2; + } + for (int i = 0; i < ans.size(); i++) { + for (int j = 0; j < ans.get(i).size(); j++) { + System.out.print(ans.get(i).get(j)); + System.out.print(' '); + } + System.out.print("\n"); + } + } + + public static void main(String[] args) { + } +} \ No newline at end of file diff --git a/final code.java b/final code.java new file mode 100644 index 0000000..db1f322 --- /dev/null +++ b/final code.java @@ -0,0 +1,104 @@ +import java.util.ArrayList; +import java.util.List; + +public class Main { + public int[] twoSum(int[] nums, int target) { + int ans[] = new int[2]; + for (int i = 0; i < nums.length; i++) { + for (int j = 0; j < nums.length; j++) { + if (nums[i] + nums[j] == target) { + ans[0] = i; + ans[1] = j; + } + } + } + return ans; + } + + public int romanToInt(String s) { + int n = s.length(); + int ans = 0; + for (int i = 0; i < s.length(); i++) { + if (s.charAt(i) == 'I') + ans++; + else if (s.charAt(i) == 'V') + ans += 5; + else if (s.charAt(i) == 'X') + ans += 10; + else if (s.charAt(i) == 'L') + ans += 50; + else if (s.charAt(i) == 'C') + ans += 100; + else if (s.charAt(i) == 'D') + ans += 500; + else if (s.charAt(i) == 'M') + ans += 1000; + } + for (int i = 0; i < (n - 1); i++) { + if (s.charAt(i) == 'I') { + if (s.charAt(i + 1) == 'V' || s.charAt(i + 1) == 'X') + ans -= 2; + if (s.charAt(i + 1) == 'L' || s.charAt(i + 1) == 'C') + ans -= 2; + if (s.charAt(i + 1) == 'D' || s.charAt(i + 1) == 'M') + ans -= 2; + } + else if (s.charAt(i) == 'V') { + if (s.charAt(i + 1) == 'X') + ans -= 10; + if (s.charAt(i + 1) == 'L' || s.charAt(i + 1) == 'C') + ans -= 10; + if (s.charAt(i + 1) == 'D' || s.charAt(i + 1) == 'M') + ans -= 10; + } + else if (s.charAt(i) == 'X') { + if (s.charAt(i + 1) == 'L' || s.charAt(i + 1) == 'C') + ans -= 20; + if (s.charAt(i + 1) == 'D' || s.charAt(i + 1) == 'M') + ans -= 20; + } + else if (s.charAt(i) == 'L') { + if (s.charAt(i + 1) == 'C') + ans -= 100; + if (s.charAt(i + 1) == 'D' || s.charAt(i + 1) == 'M') + ans -= 100; + } + else if (s.charAt(i) == 'C') { + if (s.charAt(i + 1) == 'D' || s.charAt(i + 1) == 'M') + ans -= 200; + } + else if (s.charAt(i) == 'D') { + if (s.charAt(i + 1) == 'M') + ans -= 1000; + } + } + return ans; + } + + public List> permute(int[] nums) { + List> ans = new ArrayList>(); + List save = new ArrayList(); + save.add(nums[0]); + ans.add(save); + for (int i = 1; i < nums.length; i++) { + List> save2 = new ArrayList>(); + for (int j = 0; j < ans.size(); j++) { + for (int k = 0; k <= i; k++) { + List save4 = new ArrayList(); + for (int l = 0; l < k; l++) + save4.add(ans.get(j).get(l)); + save4.add(nums[i]); + for (int l = k; l <= (i - 1); l++) + save4.add(ans.get(j).get(l)); + save2.add(save4); + } + } + ans = save2; + } + return ans; + } + + public static void main(String[] args) { + + } +} diff --git a/src/main/java/Exercises2.java b/src/main/java/Exercises2.java index 196f820..8167d9e 100644 --- a/src/main/java/Exercises2.java +++ b/src/main/java/Exercises2.java @@ -4,18 +4,22 @@ import java.util.Map; public class Exercises2 { - - /* - 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. - */ - public int[] twoSum(int[] nums, int target) { - // TODO - return null; + int[] ans = new int[2]; + int cnt = 0; + for (int i = 0; i < nums.length; i++) { + for (int j = i + 1; j < nums.length; j++) { + if (nums[i] + nums[j] == target) { + ans[0] = i; + ans[1] = j; + cnt++; + break; + } + } + if (cnt > 0) + break; + } + return ans; } /* @@ -49,21 +53,89 @@ C can be placed before D (500) and M (1000) to make 400 and 900. */ public int romanToInt(String s) { - // TODO - return 0; + int n = s.length(); + int ans = 0; + for (int i = 0; i < s.length(); i++) { + if (s.charAt(i) == 'I') + ans++; + else if (s.charAt(i) == 'V') + ans += 5; + else if (s.charAt(i) == 'X') + ans += 10; + else if (s.charAt(i) == 'L') + ans += 50; + else if (s.charAt(i) == 'C') + ans += 100; + else if (s.charAt(i) == 'D') + ans += 500; + else if (s.charAt(i) == 'M') + ans += 1000; + } + for (int i = 0; i < (n - 1); i++) { + if (s.charAt(i) == 'I') { + if (s.charAt(i + 1) == 'V' || s.charAt(i + 1) == 'X') + ans -= 2; + if (s.charAt(i + 1) == 'L' || s.charAt(i + 1) == 'C') + ans -= 2; + if (s.charAt(i + 1) == 'D' || s.charAt(i + 1) == 'M') + ans -= 2; + } + else if (s.charAt(i) == 'V') { + if (s.charAt(i + 1) == 'X') + ans -= 10; + if (s.charAt(i + 1) == 'L' || s.charAt(i + 1) == 'C') + ans -= 10; + if (s.charAt(i + 1) == 'D' || s.charAt(i + 1) == 'M') + ans -= 10; + } + else if (s.charAt(i) == 'X') { + if (s.charAt(i + 1) == 'L' || s.charAt(i + 1) == 'C') + ans -= 20; + if (s.charAt(i + 1) == 'D' || s.charAt(i + 1) == 'M') + ans -= 20; + } + else if (s.charAt(i) == 'L') { + if (s.charAt(i + 1) == 'C') + ans -= 100; + if (s.charAt(i + 1) == 'D' || s.charAt(i + 1) == 'M') + ans -= 100; + } + else if (s.charAt(i) == 'C') { + if (s.charAt(i + 1) == 'D' || s.charAt(i + 1) == 'M') + ans -= 200; + } + else if (s.charAt(i) == 'D') { + if (s.charAt(i + 1) == 'M') + ans -= 1000; + } + } + return ans; } - /* - Given an array nums of distinct integers, return all the possible permutations. - You can return the answer in any order. - */ - public List> permute(int[] nums) { - // TODO - return null; + List> ans = new ArrayList>(); + List save = new ArrayList(); + save.add(nums[0]); + ans.add(save); + for (int i = 1; i < nums.length; i++) { + List> save2 = new ArrayList>(); + for (int j = 0; j < ans.size(); j++) { + for (int k = 0; k <= i; k++) { + List save4 = new ArrayList(); + for (int l = 0; l < k; l++) + save4.add(ans.get(j).get(l)); + save4.add(nums[i]); + for (int l = k; l <= (i - 1); l++) + save4.add(ans.get(j).get(l)); + save2.add(save4); + } + } + ans = save2; + } + return ans; } public static void main(String[] args) { - // test your code here! + } -} \ No newline at end of file +}