static void Main(string[] args) { Console.WriteLine("Binary Search: Bitonic Array Maximum"); Console.WriteLine(FindMax(new int[] { 1, 3, 8, 12, 4, 2 })); Console.WriteLine(FindMax(new int[] { 3, 8, 3, 1 })); Console.WriteLine(FindMax(new int[] { 1, 3, 8, 12 })); Console.WriteLine(FindMax(new int[] { 10, 9, 8 })); Console.WriteLine("\nTwo Pointers: Pair with Target Sum"); int[] result = Search(new int[] { 1, 2, 3, 4, 6 }, 6); Console.WriteLine("Pair with target sum: [" + result[0] + ", " + result[1] + "]"); result = Search(new int[] { 2, 5, 9, 11 }, 11); Console.WriteLine("Pair with target sum: [" + result[0] + ", " + result[1] + "]"); Console.WriteLine("\n‘K’ Closest Points to the Origin"); Point[] points = new Point[] { new Point(1, 3), new Point(3, 4), new Point(2, -1), new Point(1, -1), new Point(-1, -1) }; List <Point> result2 = FindClosestPoints(points, 2); Console.WriteLine("Here are the k points closest the origin: "); foreach (Point p in result2) { Console.WriteLine("[" + p.x + " , " + p.y + "] "); } Console.WriteLine("\n‘K’ Closest Points to the Origin(0,0)"); Point result3 = ClosestToOrigin(points, 2); Console.WriteLine("[" + result3.x + " , " + result3.y + "] "); Console.WriteLine("\n Subsets"); List <List <int> > result4 = Subsets.FindSubsets(new int[] { 1, 3 }); Console.WriteLine("Here is the list of subsets: " + Subsets.ToString(result4)); result4 = Subsets.FindSubsets(new int[] { 1, 5, 3 }); Console.WriteLine("Here is the list of subsets: " + Subsets.ToString(result4)); Console.WriteLine("\n Binary Tree Path Sum"); TreeNode root = new TreeNode(12); root.left = new TreeNode(7); root.right = new TreeNode(1); root.left.left = new TreeNode(9); root.right.left = new TreeNode(10); root.right.right = new TreeNode(5); Console.WriteLine("Tree has path: " + TreePathSum.hasPath(root, 23)); Console.WriteLine("Tree has path: " + TreePathSum.hasPath(root, 16)); Console.ReadKey(); }