1. for two dimensional array matrix[i][j], i is row, j is column
2. You can not change the matrix value through for each loop's iterator.
3. the default value of int is 0, so set col[j] to 1 to indicate you find 0 at matrix[i][j], otherwise all value of col is 0
4. several way of making two values knowable to all methods on stack, when writing recursions:(it is hard, because method can only return on value)
(1) make them static
(2) wrap them in a class and return that class
(3) change all primitive values to wrapper class, so that the reference in methods can sense their changes like a pointer in C/C++
5. delete a node of singly lined list without giving you its head node:
(1)copy the data over from next node to the current node and then delete the next node
(2)if the node you want to delete is the last node in the list. There is no way to delete it. But you can consider making it as dummy