代码随想录算法训练营第一天| 704. 二分查找、27. 移除元素

Day 1:

二分法:

第一种情况:区间左闭右闭情况

左闭右闭区间的这种情况,主要左右边界的取值情况以及Mid的判断条件。

class Solution
{
	public:
    int search(vector nums, int target)
    {
        int left=0;
        int right=nums.size()-1;
        
        while(left<=right)
        {
            mid = left + (right-left)/2;
            if(nums[mid]>target)//目标值在中值左侧,需要更新右边界且排除了mid值
            {
                right = mid-1;
			}
            else if(nums[mid]

第二种情况:区间左闭右开情况

讨论区间是左闭右开的情况此时的代码如下:

class Solution
{
	public:
    	int search(vector& nums,int target)
        {
            int left = 0;//左边界可以取到最左边
            int right = nums.size();//右边界可以取到最右边;
            while(lefttarget)
                {
                    right = mid;//右边界开区间取不到
				}
                else if(nums[mid]

移除元素

暴力解法:采用两个for循环,一个for循环用来遍历数组元素,另一个数组元素用来更新数组元素

class Solution
{
	public:
    	int RemoveElement(vector& nums,int val)
        {
            int size = nums.size();//用以记录数组元素的大小。
            for(int i=0;i

双指针解法:快慢指针解法

定义快慢指针:fastIndex,slowIndex,fastIndex指针用来更新新数组的元素,slowIndex用来更新新数组的下标。

class Solution
{
    public:
		int removeElement(vector& nums, val)
        {
            int fastIndex=0;
            int slowIndex=0;
            for(int fastIndex=0;fasIndex

你可能感兴趣的:(算法,leetcode,数据结构)