Skip to content

Instantly share code, notes, and snippets.

@yohey03518
yohey03518 / sol.cs
Last active June 20, 2017 15:35
Final Solution
public int[] GetSolution(int[] nums, int target)
{
// First int means the excepted second value, the second int means the index of first value
Dictionary<int, int> exceptValueMap = new Dictionary<int, int>();
for (int index1 = 0; index1 < nums.Count(); index1++)
{
// the value in array matches the excepted value
if (exceptValueMap.ContainsKey(nums[index1]))
{
return new int[] { exceptValueMap[nums[index1]], index1 };
@yohey03518
yohey03518 / LeetCode_Algorithms_2_Add_Two_Numbers_Linked_List_Class.cs
Created June 21, 2017 16:21
LeetCode_Algorithms_2_Add_Two_Numbers_Linked_List_Class
public class No2_AddTwoNumbers
{
/// <summary>
/// Definition for singly-linked list.
/// </summary>
public class ListNode
{
public int val;
public ListNode next;
public ListNode(int x) { val = x; }
@yohey03518
yohey03518 / LeetCode_Algorithms_2_Add_Two_Numbers_TestInit.cs
Created June 21, 2017 16:23
LeetCode_Algorithms_2_Add_Two_Numbers_TestInit
[TestClass]
public class No2Test_AddTwoNumbers
{
private No2_AddTwoNumbers solution;
[TestInitialize]
public void Init()
{
solution = new No2_AddTwoNumbers();
}
@yohey03518
yohey03518 / LeetCode_Algorithms_2_Add_Two_Numbers_TestCase1.cs
Created June 21, 2017 16:25
LeetCode_Algorithms_2_Add_Two_Numbers_TestCase1
[TestMethod]
public void OneDigit_AddOneDigit_ReturnValueLessThan10_1_Plus_1_Equal2()
{
No2_AddTwoNumbers.ListNode firstNumber = new No2_AddTwoNumbers.ListNode(1);
No2_AddTwoNumbers.ListNode secondNumber = new No2_AddTwoNumbers.ListNode(1);
No2_AddTwoNumbers.ListNode result = solution.AddTwoNumbers(firstNumber, secondNumber);
Assert.AreEqual(2, result.val);
Assert.IsTrue(result.next == null);
@yohey03518
yohey03518 / LeetCode_Algorithms_2_Add_Two_Numbers_Impl1.cs
Created June 21, 2017 16:27
LeetCode_Algorithms_2_Add_Two_Numbers_Impl1
public ListNode AddTwoNumbers(ListNode l1, ListNode l2)
{
int result = l1.val + l2.val;
return new ListNode(result);
}
@yohey03518
yohey03518 / LeetCode_Algorithms_2_Add_Two_Numbers_TestCase2.cs
Created June 21, 2017 16:32
LeetCode_Algorithms_2_Add_Two_Numbers_TestCase2
[TestMethod]
public void OneDigit_AddOneDigit_ReturnValueGreaterThan10_3_Plus_9_Equal12()
{
No2_AddTwoNumbers.ListNode firstNumber = new No2_AddTwoNumbers.ListNode(3);
No2_AddTwoNumbers.ListNode secondNumber = new No2_AddTwoNumbers.ListNode(9);
No2_AddTwoNumbers.ListNode result = solution.AddTwoNumbers(firstNumber, secondNumber);
// result should be 12, first digit in linked list is 2, the second digit is 1
Assert.AreEqual(2, result.val);
@yohey03518
yohey03518 / LeetCode_Algorithms_2_Add_Two_Numbers_Impl12.cs
Created June 21, 2017 16:38
LeetCode_Algorithms_2_Add_Two_Numbers_Impl2
public ListNode AddTwoNumbers(ListNode l1, ListNode l2)
{
int result = l1.val + l2.val;
if(result >= 10)
{
return new ListNode(result % 10)
{
next = new ListNode(result / 10)
};
}
@yohey03518
yohey03518 / LeetCode_Algorithms_2_Add_Two_Numbers_TestCase3.cs
Last active June 22, 2017 14:29
LeetCode_Algorithms_2_Add_Two_Numbers_TestCase3
[TestMethod]
public void OneDigit_AddTwoDigit_3_Plus_325_Equa328()
{
No2_AddTwoNumbers.ListNode firstNumber = new No2_AddTwoNumbers.ListNode(3);
No2_AddTwoNumbers.ListNode secondNumber =
new No2_AddTwoNumbers.ListNode(5)
{
next = new No2_AddTwoNumbers.ListNode(2)
{
next = new No2_AddTwoNumbers.ListNode(3)
@yohey03518
yohey03518 / LeetCode_Algorithms_2_Add_Two_Numbers_Impl3.cs
Created June 22, 2017 14:58
LeetCode_Algorithms_2_Add_Two_Numbers_Impl3
public ListNode AddTwoNumbers(ListNode l1, ListNode l2)
{
// first node of resultStartPoint is a start point(not real value)
ListNode resultStartPoint = new ListNode(-1);
ListNode resultPointer = resultStartPoint;
ListNode firstNumPointer = l1;
ListNode secondNumPointer = l2;
// both input lists shouldn't be null(at least contain one node), so we use do..while
do
@yohey03518
yohey03518 / LeetCode_Algorithms_2_Add_Two_Numbers_Impl4.cs
Created June 22, 2017 15:16
LeetCode_Algorithms_2_Add_Two_Numbers_Impl4
public ListNode AddTwoNumbers(ListNode l1, ListNode l2)
{
// first node of resultStartPoint is a start point(not real value)
ListNode resultStartPoint = new ListNode(-1);
ListNode resultPointer = resultStartPoint;
ListNode firstNumPointer = l1;
ListNode secondNumPointer = l2;
// restore carry value
int carryDigit = 0;