Beispiel #1
0
        static public void Run()
        {
            Console.WriteLine("MergekSortedLists");
            ListNode[] input;
            ListNode   exp, res;

            // Input:
            // [
            //   1->4->5,
            //   1->3->4,
            //   2->6
            // ]
            // Output: 1->1->2->3->4->4->5->6
            input = new ListNode[] {
                ListNode.FromList(new int[] { 1, 4, 5 }),
                ListNode.FromList(new int[] { 1, 3, 4 }),
                ListNode.FromList(new int[] { 2, 6 }),
            };
            exp = ListNode.FromList(new int[] { 1, 1, 2, 3, 4, 4, 5, 6 });

            using (new Timeit())
            {
                res = new Solution().MergeKLists(input);
                Assert.Equal(exp, res);
            }

            // input: []
            input = new ListNode[] { };
            using (new Timeit())
            {
                res = new Solution().MergeKLists(input);
                Assert.Null(res);
            }

            // input: [[]]
            input = new ListNode[] { null };
            using (new Timeit())
            {
                res = new Solution().MergeKLists(input);
                Assert.Null(res);
            }
        }
Beispiel #2
0
        static public void Run()
        {
            Console.WriteLine("ReverseNodesInkGroup");
            ListNode input;
            int      k;
            ListNode exp, res;

            // Given 1->2->3->4->5
            // For k = 2, you should return: 2->1->4->3->5
            input = ListNode.FromList(new int[] { 1, 2, 3, 4, 5 });
            k     = 2;
            exp   = ListNode.FromList(new int[] { 2, 1, 4, 3, 5 });
            using (new Timeit())
            {
                res = new Solution().ReverseKGroup(input, k);
                Assert.Equal(exp, res);
            }

            // For k = 3, you should return: 3->2->1->4->5
            input = ListNode.FromList(new int[] { 1, 2, 3, 4, 5 });
            k     = 3;
            exp   = ListNode.FromList(new int[] { 3, 2, 1, 4, 5 });
            using (new Timeit())
            {
                res = new Solution().ReverseKGroup(input, k);
                Assert.Equal(exp, res);
            }

            input = null;
            k     = 1;
            exp   = null;
            using (new Timeit())
            {
                res = new Solution().ReverseKGroup(input, k);
                Assert.Equal(exp, res);
            }

            Console.WriteLine("ReverseNodesInkGroup solution2");
            input = ListNode.FromList(new int[] { 1, 2, 3, 4, 5 });
            k     = 2;
            exp   = ListNode.FromList(new int[] { 2, 1, 4, 3, 5 });
            using (new Timeit())
            {
                res = new Solution2().ReverseKGroup(input, k);
                Assert.Equal(exp, res);
            }

            // For k = 3, you should return: 3->2->1->4->5
            input = ListNode.FromList(new int[] { 1, 2, 3, 4, 5 });
            k     = 3;
            exp   = ListNode.FromList(new int[] { 3, 2, 1, 4, 5 });
            using (new Timeit())
            {
                res = new Solution2().ReverseKGroup(input, k);
                Assert.Equal(exp, res);
            }

            input = null;
            k     = 1;
            exp   = null;
            using (new Timeit())
            {
                res = new Solution2().ReverseKGroup(input, k);
                Assert.Equal(exp, res);
            }
        }