首页 > 其他分享 >LeetCode二分查找 swift 面试

LeetCode二分查找 swift 面试

时间:2024-02-26 21:13:25浏览次数:15  
标签:二分 Int var array swift LeetCode left

 

func binarySearch(_ array: [Int], _ target: Int) -> Int? {
    var left = 0
    var right = array.count - 1
    
    while left <= right {
        let mid = (left + right) / 2
        
        if array[mid] == target {
            return mid
        } else if array[mid] < target {
            left = mid + 1
        } else {
            right = mid - 1
        }
    }
    
    return nil // 如果目标值不存在于数组中则返回nil
}
 
let numbers = [1, 3, 5, 7, 9, 11, 13]
if let index = binarySearch(numbers, 7) {
    print("目标值 \(index) 在数组中")
} else {
    print("目标值未找到")
}

 

标签:二分,Int,var,array,swift,LeetCode,left
From: https://www.cnblogs.com/huangzs/p/18035184

相关文章

  • 704. 二分查找C
    现在开始刷代码随想录里的题了。intsearch(int*nums,intnumsSize,inttarget){inthead=0,tail=numsSize-1;while(head<=tail){intmid=(head+tail)/2;if(nums[mid]<target){head=mid+1;}elseif(nums[mid]>target){......
  • Leetcode刷题第十四天-动态规划
    674:最长连续递增序列链接:674.最长连续递增序列-力扣(LeetCode)1classSolution:2deffindLengthOfLCIS(self,nums:List[int])->int:3n=len(nums)4dp=[1]*n5if(n<1):return06foriinrange(1,n):7if......
  • #分块,二分#洛谷 5356 [Ynoi2017] 由乃打扑克
    题目支持区间加和区间查询第\(k\)小分析分块之后给每个整块排序,这样修改的时候整块打标记,散块直接分开把需要加的部分暴力加之后归并,就是\(O(\sqrt{n})\)的查询的话,如果只有散块直接归并出结果,否则二分答案,加上小块合并成的整块,相当于是整体二分,就是\(O(\sqrt{n}\log{a_......
  • LeetCode] 2476. Closest Nodes Queries in a Binary Search Tree
    Youaregiventherootofabinarysearchtreeandanarrayqueriesofsizenconsistingofpositiveintegers.Finda2Darrayanswerofsizenwhereanswer[i]=[mini,maxi]:miniisthelargestvalueinthetreethatissmallerthanorequaltoqueries[......
  • Toyota Programming Contest 2024#2(AtCoder Beginner Contest 341)D - Only one of two
    目录链接题面题意题解代码总结链接D-Onlyoneoftwo题面题意求第\(k\)个只能被\(N\)或\(M\)整除的数题解\([1,x]\)中的能被\(n\)整除的数有\(\lfloor\frac{x}{n}\rfloor\)个\([1,x]\)中的能被\(m\)整除的数有\(\lfloor\frac{x}{m}\rfloor\)个\([1,x]\)中的能被\(n\)......
  • Leetcode刷题第十三天-动态规划
    198:打家劫舍链接:198.打家劫舍-力扣(LeetCode)线性数组1classSolution:2defrob(self,nums:List[int])->int:3#dp[i]偷房间i能获得的最大价值4#推导公式dp[i]=max(dp[i-2]+nums[i],dp[i-1]):dp[i-1]不偷房间i,dp[i-2]+nums[i]偷房间i5......
  • 【leetcode】数组篇刷题 --滑动窗口
    /**@lcapp=leetcode.cnid=209lang=cpp**[209]长度最小的子数组*找最短的子数组*///@lccode=startclassSolution{public:intminSubArrayLen(inttarget,vector<int>&nums){//滑动窗口,//一个计算总和intsum=0;......
  • Python数据结构与算法05——二分查找
    二分查找——递归版:defbinarySearch(aimlist,item):#获取列表的长度n=len(aimlist)#如果列表非空ifn>0:#计算中间索引mid=n//2#如果中间元素是目标元素,则找到了ifaimlist[mid]==item:......
  • Leetcode 560 和为k的子数组
    Problem:560.和为K的子数组难点怎么通过前缀和找到和为k的子数组如官方题解所言,[j···i]的子数组=k可转化为pre[i]-pre[j-1]==k要找到前缀和找到和为k的子数组个数就是“找到当前前缀和pre[i]-之前求得的前缀和=k”的总情况。我们通过哈希表记录每个前缀和(的值)出......
  • 洛谷 P4198 楼房重建(线段树上二分)
    传送门解题思路动态维护区间里面单调递增斜率的长度需要维护两个信息:上述长度,和区间最大值(合并时需要)难点在于两个子区间的合并。左区间的楼房一定都能看见(没有遮挡),所以要在右区间二分,找到左面最大值lmax在右区间的位置,然后进行合并。复杂度两个log。AC代码#include<ios......