• leetcode 在排序数组中查找元素的第一个和最后一个位置


    
    import javax.naming.ldap.StartTlsRequest;
    import java.util.Arrays;
    
    /**
    <p>给定一个按照升序排列的整数数组 <code>nums</code>,和一个目标值 <code>target</code>。找出给定目标值在数组中的开始位置和结束位置。</p>
    
    <p>如果数组中不存在目标值 <code>target</code>,返回 <code>[-1, -1]</code>。</p>
    
    <p><strong>进阶:</strong></p>
    
    <ul>
    	<li>你可以设计并实现时间复杂度为 <code>O(log n)</code> 的算法解决此问题吗?</li>
    </ul>
    
    <p> </p>
    
    <p><strong>示例 1:</strong></p>
    
    <pre>
    <strong>输入:</strong>nums = [<code>5,7,7,8,8,10]</code>, target = 8
    <strong>输出:</strong>[3,4]</pre>
    
    <p><strong>示例 2:</strong></p>
    
    <pre>
    <strong>输入:</strong>nums = [<code>5,7,7,8,8,10]</code>, target = 6
    <strong>输出:</strong>[-1,-1]</pre>
    
    <p><strong>示例 3:</strong></p>
    
    <pre>
    <strong>输入:</strong>nums = [], target = 0
    <strong>输出:</strong>[-1,-1]</pre>
    
    <p> </p>
    
    <p><strong>提示:</strong></p>
    
    <ul>
    	<li><code>0 <= nums.length <= 10<sup>5</sup></code></li>
    	<li><code>-10<sup>9</sup> <= nums[i] <= 10<sup>9</sup></code></li>
    	<li><code>nums</code> 是一个非递减数组</li>
    	<li><code>-10<sup>9</sup> <= target <= 10<sup>9</sup></code></li>
    </ul>
    <div><div>Related Topics</div><div><li>数组</li><li>二分查找</li></div></div><br><div><li> 1571</li><li> 0</li></div>
    */
    
    //leetcode submit region begin(Prohibit modification and deletion)
    class Solution {
        public int[] searchRange(int[] nums, int target) {
    		int left = 0 ;
    		int right = nums.length-1;
    		while (left<=right){
    			int mid  = left + (right-left)/2;
    			if(nums[mid]==target){
    				System.out.println("找到了目标数据,位置 "+mid+target);
    
    				int currRight = mid;
    				while (currRight<=right && nums[currRight]==target){
    					currRight++;
    					System.out.println("currRight"+currRight+"target"+target);
    				}
    				int currLeft = mid;
    				while (currLeft>=left && nums[currLeft]==target){
    					currLeft--;
    					System.out.println("currLeft"+currLeft+"target"+target);
    				}
    				int[] res  = new int[2];
    				res[0] = currLeft+1;
    				res[1]= currRight-1;
    				System.out.println("0" + res[0]+ "1" +res[1]);
    				return  res;
    			}else if(nums[mid] <target){
    				left = mid+1;
    			}else if(nums[mid]>target){
    				right = mid-1;
    			}
    		}
    		int[] res=  {-1,-1};
    		return res;
        }
    }
    //leetcode submit region end(Prohibit modification and deletion)
    
    
  • 相关阅读:
    howtoautomateyouriphoneappbuildswithhudson
    buildingiphoneappswithhudsonpart2
    Linux常用命令全集
    介绍
    Linux文件查找命令find,xargs详述
    Tomcat for Mac OS
    Jenkins在Mac平台安裝
    Linux下的shell与make
    buildingiosappsforovertheairadhocdistribution
    linux下u盘的使用
  • 原文地址:https://www.cnblogs.com/xiaoshahai/p/16085776.html
Copyright © 2020-2023  润新知