From 619aad9dc3cb19225abfa88c9f5ab130a5bacdc4 Mon Sep 17 00:00:00 2001 From: Benji Wright <3194212+benjiwright@users.noreply.github.com> Date: Wed, 28 Sep 2022 10:55:30 -0600 Subject: [PATCH 1/2] [csharp] 46. Permutations --- csharp/46-Permutations.cs | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 csharp/46-Permutations.cs diff --git a/csharp/46-Permutations.cs b/csharp/46-Permutations.cs new file mode 100644 index 000000000..a885f91c2 --- /dev/null +++ b/csharp/46-Permutations.cs @@ -0,0 +1,26 @@ +public class Solution +{ + public IList> Permute(int[] nums) + { + var result = new List>(); + PermuteRecurse(result, nums, 0); + return result; + } + + private void PermuteRecurse(List> res, int[] arr, int start) + { + if (start == arr.Length) + { + var list = arr.Select(t => (t)).ToList(); + res.Add(list); + return; + } + + for (var i = start; i < arr.Length; i++) + { + (arr[start], arr[i]) = (arr[i], arr[start]); + PermuteRecurse(res, arr, start + 1); + (arr[start], arr[i]) = (arr[i], arr[start]); + } + } +} \ No newline at end of file From 05ecd5e61a6986dc24ed567ffef64b11b7c73ffe Mon Sep 17 00:00:00 2001 From: Benji Wright <3194212+benjiwright@users.noreply.github.com> Date: Wed, 28 Sep 2022 11:21:23 -0600 Subject: [PATCH 2/2] [csharp] 494. Target Sum --- csharp/494-Target-Sum.cs | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 csharp/494-Target-Sum.cs diff --git a/csharp/494-Target-Sum.cs b/csharp/494-Target-Sum.cs new file mode 100644 index 000000000..dff1b10e4 --- /dev/null +++ b/csharp/494-Target-Sum.cs @@ -0,0 +1,20 @@ +public class Solution +{ + public int FindTargetSumWays(int[] nums, int target) + { + return Dp(nums, target, nums.Length - 1, 0, new Dictionary<(int, int), int>()); + } + + private int Dp(int[] nums, int target, int index, int sum, Dictionary<(int, int), int> memo) + { + if (memo.ContainsKey((index, sum))) return memo[(index, sum)]; + if (index < 0 && sum == target) return 1; + if (index < 0) return 0; + + var positive = Dp(nums, target, index - 1, sum + nums[index], memo); + var negative = Dp(nums, target, index - 1, sum + -1 * nums[index], memo); + + memo.Add((index, sum), positive + negative); + return memo[(index, sum)]; + } +} \ No newline at end of file