剑指offer题答案笔记
1.二维数组中的查找数组
/*思路:二维数组从上到下,从左到右递增的规律 选取右上角的元素与target比较 target<a[row][col],target在元素所在行的左边 col-- target>a[row][col],target在元素所在列的下边 row++ target==a[row][col] 返回true 当row > array[0].length -1 || col <0 没有找到 */ public class Solution { public boolean Find(int target, int [][] array) { int row = 0;//行 int col = array[0].length -1;//列 while(row <= array[0].length -1 && col >=0){ if(target == array[row][col]) return true; else if(target < array[row][col]) col--; else row++; } return false; } }
1.连续子数组的最大和
动态规划code
class Solution { public: int FindGreatestSumOfSubArray(vector<int> array) { int size = array.size(); if(size == 0) return 0; int maxSum = array[0]; int sum = 0; for(int i= 0;i<size;i++){ if(sum<0){ sum=array[i]; }else{ sum=array[i]+sum; } if(sum>maxSum){ maxSum =sum; } } return maxSum; } };