草庐IT

JavaScript 二分查找

二分查找(BinarySearch)是一种在有序数组中查找目标元素的查找算法。它的基本思路是:在数组的中间元素开始,如果该元素等于目标元素,则查找成功;如果该元素大于目标元素,则在左半部分继续查找;如果该元素小于目标元素,则在右半部分继续查找。这样一直重复这个过程,直到查找成功或者查找失败。基本步骤:设置两个指针,left和right,分别指向数组的第一个元素和最后一个元素。计算中间索引,mid=(left+right)/2。如果该索引上的元素等于目标元素,则查找成功,返回该索引。如果该索引上的元素大于目标元素,则说明目标元素在左半部分,将right指针移动到mid-1。如果该索引上的元素小于

JavaScript 二分查找

二分查找(BinarySearch)是一种在有序数组中查找目标元素的查找算法。它的基本思路是:在数组的中间元素开始,如果该元素等于目标元素,则查找成功;如果该元素大于目标元素,则在左半部分继续查找;如果该元素小于目标元素,则在右半部分继续查找。这样一直重复这个过程,直到查找成功或者查找失败。基本步骤:设置两个指针,left和right,分别指向数组的第一个元素和最后一个元素。计算中间索引,mid=(left+right)/2。如果该索引上的元素等于目标元素,则查找成功,返回该索引。如果该索引上的元素大于目标元素,则说明目标元素在左半部分,将right指针移动到mid-1。如果该索引上的元素小于

【leetcode】151. 颠倒字符串中的单词

题目给你一个字符串s,颠倒字符串中单词的顺序。单词是由非空格字符组成的字符串。s中使用至少一个空格将字符串中的单词分隔开。返回单词顺序颠倒且单词之间用单个空格连接的结果字符串。注意:输入字符串s中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。示例1:输入:s="theskyisblue"输出:"blueisskythe"示例2:输入:s=" helloworld "输出:"worldhello"解释:颠倒后的字符串中不能存在前导空格和尾随空格。示例3:输入:s="agood example"输出:"examplegoo

【leetcode】18. 四数之和

题目给你一个由n个整数组成的数组 nums,和一个目标值target。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a],nums[b],nums[c],nums[d]] (若两个四元组元素一一对应,则认为两个四元组重复):0a、b、c和d互不相同nums[a]+nums[b]+nums[c]+nums[d]==target你可以按任意顺序返回答案。示例1:输入:nums=[1,0,-1,0,-2,2],target=0输出:[[-2,-1,1,2],[-2,0,0,2],[-1,0,0,1]]示例2:输入:nums=[2,2,2,2,2],target=8输出:[[2,2,2,

【leetcode】151. 颠倒字符串中的单词

题目给你一个字符串s,颠倒字符串中单词的顺序。单词是由非空格字符组成的字符串。s中使用至少一个空格将字符串中的单词分隔开。返回单词顺序颠倒且单词之间用单个空格连接的结果字符串。注意:输入字符串s中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。示例1:输入:s="theskyisblue"输出:"blueisskythe"示例2:输入:s=" helloworld "输出:"worldhello"解释:颠倒后的字符串中不能存在前导空格和尾随空格。示例3:输入:s="agood example"输出:"examplegoo

【leetcode】18. 四数之和

题目给你一个由n个整数组成的数组 nums,和一个目标值target。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a],nums[b],nums[c],nums[d]] (若两个四元组元素一一对应,则认为两个四元组重复):0a、b、c和d互不相同nums[a]+nums[b]+nums[c]+nums[d]==target你可以按任意顺序返回答案。示例1:输入:nums=[1,0,-1,0,-2,2],target=0输出:[[-2,-1,1,2],[-2,0,0,2],[-1,0,0,1]]示例2:输入:nums=[2,2,2,2,2],target=8输出:[[2,2,2,

记录用C#写折半查找算法实现

折半查找算法前言最近要考试了,重新回顾一下之前学的算法,今天是折半查找,它的平均比较次数是Log2n思想给定一个有序数组A[0..n-1],和查找值K,返回K在A中的下标。折半查找需要指定3个指针,left、right、mid,分别是左指针指向下标0,右指针指向元素末尾,mid中间值指向(left+right)/2向下取整。如果A[mid]>K,中间值大于要找的K值,移动right指针,right=mid-1如果A[mid]如果A[mid]==K,则返回mid算法实现publicstaticvoidMain(string[]args){int[]A={1,2,3,6,7,11,23,56};i

记录用C#写折半查找算法实现

折半查找算法前言最近要考试了,重新回顾一下之前学的算法,今天是折半查找,它的平均比较次数是Log2n思想给定一个有序数组A[0..n-1],和查找值K,返回K在A中的下标。折半查找需要指定3个指针,left、right、mid,分别是左指针指向下标0,右指针指向元素末尾,mid中间值指向(left+right)/2向下取整。如果A[mid]>K,中间值大于要找的K值,移动right指针,right=mid-1如果A[mid]如果A[mid]==K,则返回mid算法实现publicstaticvoidMain(string[]args){int[]A={1,2,3,6,7,11,23,56};i

四数相加II & 赎金信 & 三数之和 & 四数之和

一、四数相加Ⅱ454.四数相加II1.方法概述首先定义一个map,key放a和b两数之和,value放a和b两数之和出现的次数。遍历大A和大B数组,统计两个数组元素之和,和出现的次数,放到map中。定义int变量count,用来统计a+b+c+d=0出现的次数。在遍历大C和大D数组,找到如果0-(c+d)在map中出现过的话,就用count把map中key对应的value也就是出现次数统计出来。最后返回统计值count就可以了。2、具体实现Java实现点击查看代码classSolution{publicintfourSumCount(int[]nums1,int[]nums2,int[]num

四数相加II & 赎金信 & 三数之和 & 四数之和

一、四数相加Ⅱ454.四数相加II1.方法概述首先定义一个map,key放a和b两数之和,value放a和b两数之和出现的次数。遍历大A和大B数组,统计两个数组元素之和,和出现的次数,放到map中。定义int变量count,用来统计a+b+c+d=0出现的次数。在遍历大C和大D数组,找到如果0-(c+d)在map中出现过的话,就用count把map中key对应的value也就是出现次数统计出来。最后返回统计值count就可以了。2、具体实现Java实现点击查看代码classSolution{publicintfourSumCount(int[]nums1,int[]nums2,int[]num