diff --git a/P002-Add-Two-Numbers/P002-Add-Two-Numbers.sln b/P002-Add-Two-Numbers/P002-Add-Two-Numbers.sln new file mode 100644 index 0000000..e432984 --- /dev/null +++ b/P002-Add-Two-Numbers/P002-Add-Two-Numbers.sln @@ -0,0 +1,22 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +VisualStudioVersion = 14.0.25420.1 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "P002-Add-Two-Numbers", "P002-Add-Two-Numbers\P002-Add-Two-Numbers.csproj", "{67E98B7B-3C50-4B4C-9D1E-25222C64ADA1}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {67E98B7B-3C50-4B4C-9D1E-25222C64ADA1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {67E98B7B-3C50-4B4C-9D1E-25222C64ADA1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {67E98B7B-3C50-4B4C-9D1E-25222C64ADA1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {67E98B7B-3C50-4B4C-9D1E-25222C64ADA1}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/P002-Add-Two-Numbers/P002-Add-Two-Numbers/App.config b/P002-Add-Two-Numbers/P002-Add-Two-Numbers/App.config new file mode 100644 index 0000000..88fa402 --- /dev/null +++ b/P002-Add-Two-Numbers/P002-Add-Two-Numbers/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/P002-Add-Two-Numbers/P002-Add-Two-Numbers/ListNode.cs b/P002-Add-Two-Numbers/P002-Add-Two-Numbers/ListNode.cs new file mode 100644 index 0000000..ce51919 --- /dev/null +++ b/P002-Add-Two-Numbers/P002-Add-Two-Numbers/ListNode.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace P002_Add_Two_Numbers +{ + public class ListNode + { + public int val; + public ListNode next; + public ListNode(int x) { val = x; } + } +} diff --git a/P002-Add-Two-Numbers/P002-Add-Two-Numbers/P002-Add-Two-Numbers.csproj b/P002-Add-Two-Numbers/P002-Add-Two-Numbers/P002-Add-Two-Numbers.csproj new file mode 100644 index 0000000..c698a27 --- /dev/null +++ b/P002-Add-Two-Numbers/P002-Add-Two-Numbers/P002-Add-Two-Numbers.csproj @@ -0,0 +1,62 @@ + + + + + Debug + AnyCPU + {67E98B7B-3C50-4B4C-9D1E-25222C64ADA1} + Exe + Properties + P002_Add_Two_Numbers + P002-Add-Two-Numbers + v4.5.2 + 512 + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/P002-Add-Two-Numbers/P002-Add-Two-Numbers/Program.cs b/P002-Add-Two-Numbers/P002-Add-Two-Numbers/Program.cs new file mode 100644 index 0000000..49e5159 --- /dev/null +++ b/P002-Add-Two-Numbers/P002-Add-Two-Numbers/Program.cs @@ -0,0 +1,34 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace P002_Add_Two_Numbers +{ + class Program + { + static void Main(string[] args) + { + var solution = new Solution(); + + // Input: (2 -> 4 -> 3) + (5 -> 6 -> 4) + // Output: 7-> 0-> 8 + + var input1 = new ListNode(2); + input1.next = new ListNode(4); + input1.next.next = new ListNode(3); + + var input2 = new ListNode(5); + input2.next = new ListNode(6); + input2.next.next = new ListNode(4); + + var answer = solution.AddTwoNumbers(input1, input2); + for (ListNode x1 = answer; x1 != null; x1 = x1?.next) + Console.Write(x1.val + " "); + Console.Write("\n"); + + Console.ReadLine(); + } + } +} diff --git a/P002-Add-Two-Numbers/P002-Add-Two-Numbers/Properties/AssemblyInfo.cs b/P002-Add-Two-Numbers/P002-Add-Two-Numbers/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..07721c4 --- /dev/null +++ b/P002-Add-Two-Numbers/P002-Add-Two-Numbers/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("P002-Add-Two-Numbers")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Xeon Productions")] +[assembly: AssemblyProduct("P002-Add-Two-Numbers")] +[assembly: AssemblyCopyright("Copyright © Xeon Productions 2017")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("67e98b7b-3c50-4b4c-9d1e-25222c64ada1")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/P002-Add-Two-Numbers/P002-Add-Two-Numbers/Solution.cs b/P002-Add-Two-Numbers/P002-Add-Two-Numbers/Solution.cs new file mode 100644 index 0000000..4afdbb0 --- /dev/null +++ b/P002-Add-Two-Numbers/P002-Add-Two-Numbers/Solution.cs @@ -0,0 +1,44 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace P002_Add_Two_Numbers +{ + class Solution + { + /** + * 1562 / 1562 test cases passed. + * Status: Accepted + * Runtime: 166 ms + */ + public ListNode AddTwoNumbers(ListNode l1, ListNode l2) + { + StringBuilder result = new StringBuilder(); + + int carryOver = 0; + for (ListNode x1 = l1, x2 = l2; x1 != null || x2 != null; x1 = x1?.next, x2 = x2?.next) + { + int finalVal = (x1 != null ? x1.val : 0) + (x2 != null ? x2.val : 0) + carryOver; + carryOver = Math.Abs(finalVal / 10); + result.Append((finalVal % 10).ToString()); + } + + if (carryOver == 1) + result.Append("1"); + + string resultString = result.ToString(); + + ListNode head = new ListNode(int.Parse(resultString[0].ToString())); + ListNode pointer = head; + for (int i = 1; i < resultString.Length; i++) + { + pointer.next = new ListNode(int.Parse(resultString[i].ToString())); + pointer = pointer.next; + } + + return head; + } + } +}