题解 | #合并两个排序的链表#

二维数组中的查找

http://www.nowcoder.com/practice/abc3fe2ce8e146608e868a70efebf62e

public:
// 算暴力的一种解法吧,找到第一行,第一列的小于target的一个边界,然后循环求取有无等于target的值。
//     bool Find(int target, vector<vector<int> > array) {
//         bool flag = false;
//         int m = array.size(), n = array[0].size();
//         if(m == 0 || n == 0){
//             return false;
//         }
//         int indexj = 0;
//         while(indexj <n && array[0][indexj]<=target){
//             indexj++;
//         }
//         indexj = indexj == 0? 0:indexj-1;
        
//         int indexi = 0;
//         while(indexi <m && array[indexi][0]<=target){
//             indexi++;
//         }
//         indexi = indexi == 0? 0:indexi-1;
//         for(int i=0;i<=indexi;i++){
//             for(int j=0;j<=indexj;j++){
//                 if(array[i][j] == target){
//                     flag = true;
//                     break;
//                 }
//             }
//         }
//         return flag;

//方法二:二分查找,从左下角出发,个人觉得这个很灵活~ 希望可以掌握
    bool Find(int target, vector<vector<int> > array) {
        int m = array.size(), n = array[0].size();
        int i = m-1, j = 0;
        while(i>=0 && j<n){
            if(target < array[i][j]){
                i--;
            }else if(target > array[i][j]){
                j++;
            }else{
                return true;
            }
        }
        return false;
    }
};
全部评论

相关推荐

07-23 14:04
东北大学 C++
既然这样,为什么不点击就送呢
牛马88号:因为你合适。但有很多笔试就挂了、通过了再排序的
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务