本来以为这门课没啥学的,结果还是自己太大意,还有很多东西不会...
1.4.2:防止两个大的int相加溢出,只要在第一个int前面加一个强制类型转换(long)即可,后面的加法运算就会按照最小精度(long)来进行。
1.4.4的这个三重循环还有点问题。
1.4.5的g题也不太明白
1.4.8学到了java的二分查找,binarysearch.rank()
1.4.15学到了两头逼近的查找技巧,大了high--小了low++,以及其拓展版本ThreeSumFaster
using System; namespace _1._4._12 { /* * 1.4.12 * * 编写一个程序,有序打印给定的两个有序数组(含有 N 个 int 值) 中的所有公共元素, * 程序在最坏情况下所需的运行时间应该和 N 成正比。 * */ class Program { static void Main(string[] args) { int[] a = new int[4] { 2, 3, 4, 10 }; int[] b = new int[6] { 1, 3, 3, 5, 10, 11 }; //2N 次数组访问,数组 a 和数组 b 各遍历一遍 for (int i = 0, j = 0; i < a.Length && j < b.Length; ) { if (a[i] < b[j]) { i++; } else if (a[i] > b[j]) { j++; } else { Console.WriteLine($"Common Element:{a[i]}, First index: (a[{i}], b[{j}])"); i++; j++; } } } } }