程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> 筆試題48. LeetCode OJ (35)

筆試題48. LeetCode OJ (35)

編輯:關於C++

\

這個題目還是屬於查找類的題目,和前面的題目比較類似,題目的要求是給定一個target,在有序數組裡面查找該元素的插入順序,若存在了則返回該元素的下標。這道題比較直觀,所以比較容易動手,需要注意到的應該就是邊界條件的問題吧,比如說:

(1). 目標元素比排序數組中的最小元素還小

(2). 目標元素比排序數組中的最大元素還大

請看代碼吧,代碼寫的還是比較清晰的

 

class Solution {
public:
    int searchInsert(vector& nums, int target) 
    {
        int len = nums.size();
		if (len == 0)
		{
			return 0;
		}
		
		int left = 0;
		int right = len - 1;
		int mid = 0;
		if (target > nums[right])
		{
			return right + 1;
		}

		while (left < right)
		{
			mid = left + (right - left) / 2;
			if (nums[left] == target)
			{
				return left;
			}
			if (nums[right] == target)
			{
				return right;
			}
			if (nums[mid] == target)
			{
				return mid;
			}

			if (nums[mid] > target)
			{
				right = mid;
			}
			else
			{
				left = mid + 1;
			}
		}
		
		return left;    
    }
};
\

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved