zoukankan      html  css  js  c++  java
  • 【持续跟新】剑指Offer_Java实现

    开贴缘由

          老帖子了 ,但是我想换成macdown谁知道不能换,那就重新发布一个帖子吧
          我会继续更新的这一年太忙导致了这个帖子一直没有完成
          我会置顶,然后促使自己完成这60多道题目 其实我已经做完了一遍只是作为帖子 我会
          把我的思路都写上来
    
    
    package sword_finger_offer;
    
    import org.junit.jupiter.api.Test;
    
    /**
     * 剑指offer习题一 二维数组中的查找
     * @ClassName: Code_00_topic01
     * @Description: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,
     * 每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组
     * 和一个整数,判断数组中是否含有该整数。
     * @author shundong.wu
     * @date 2019年2月19日
     *	
     */
    public class Code_00_topic01 {
    	/**
    	 * 思路1: 二分查找每一行的数组  然后遍历列  
    	 * 时间复杂度 O(nlogn)
    	 * @param array 二位数组
    	 * @param target 需要找的值
    	 * @return
    	 */
    	@Test
    	public boolean Find1(int[][] array,int target) {
    		//外层的一维数组遍历
    		for(int i=0;i<array.length;i++){
    			//下面是二分
    			int low=0;
    			int high=array[i].length-1;
    			while(low<=high){
    				int mid=(low+high)/2;
    				if(target>array[i][mid])
    					low=mid+1;
    				else if(target<array[i][mid])
    					high=mid-1;
    				else
    					return true;
    			}
    		}
    		return false;
    	}
    
    	/**
    	 * 思路2: 首先矩阵是一个有规律的   
    	 * 时间复杂度 O(M+N)
    	 * 利用二维数组由上到下,由左到右递增的规律,
    	 * 那么选取右上角或者左下角的元素a[row][col]与target进行比较,
    	 * 当target小于元素a[row][col]时,那么target必定在元素a所在行的左边,
    	 * 即col--;
    	 * 当target大于元素a[row][col]时,那么target必定在元素a所在列的下边,
    	 * 即row++
    	 * @param array 二位数组
    	 * @param target 需要找的值
    	 * @return
    	 */
    	@Test
    	public boolean Find2(int[][] array,int target) {
    		int row = 0;//行
    		int col =  array.length-1;//列
    		//此处做越界处理  当行或者列越界 结束while循环
    		while(row<=array.length-1&&col>=0){
    			if(target==array[row][col])
    				return true;
    			else if(target>array[row][col])
    				row++;
    			else
    				col--;
    		}
    		//若是遍历了整个矩阵 都没有 则返回false 结束该方法
    		return false;
    	}
    }
    
    
  • 相关阅读:
    Java接收Cordys中webservice接口的返回数据并解析xml获取相应节点数据
    初识jenkins之-jenkins的安装与配置
    Linux(centos6.8)下Tomcat的安装与配置
    [置顶] Linux下(centos6.8)JDK1.8的安装与配置
    小白五一期间个人建站
    声明一些事
    js中apply()的用法淺談
    angularJS中的服务
    PHP中的常用关键字
    PHP中三大特性---继承性
  • 原文地址:https://www.cnblogs.com/shundong106/p/13644704.html
Copyright © 2011-2022 走看看