Day1-1:二分查找,快慢指针删除元素(数据结构与算法复习第一天)

遗忘的速度真的远远超过自己的想象
一刷的时候,感觉都知道。但是不到10天的时间,又变得非常的模糊,因此打算一边学一边复习。二刷复习的时候,考虑到以后C#会用得比较多,因此,二刷采用C#,一方面算是熟悉C#,一方面也算是自己真的把算法学会吧!!
加油!

以下代码仅做个人复习参考使用。
实现功能:二分查找,利用快慢指针删除特定的元素。
二刷总结:
1.一看就会,上手就错。
在二分查找中,只用分找得到和找不到的区别,不用具体细分第一个元素比taget大还是小这样的问题。
if-else只会判断一次,注意与while的区别。感觉就是看的时候都懂,但是自己真正实现的时候,看就要看半天。
2.注意区间开闭自己定义的时候,要从一而终!!
3.不要总是看代码,或者只是抄代码。还是要自己上手写!不断内化。
4.注意一下C#的格式,main要写在类里面!!!

using System.Globalization;
namespace progrom;

class test
{
    public static void Main(string[] args)
    {
        int[] nums = new int[6];
        nums[0] = -1;
        nums[1] = 0;
        nums[2] = 3;
        nums[3] = 5;
        nums[4] = 9;
        nums[5] = 12;
        int target = 13;
        solution2 sol = new solution2();
        sol.RemoveElement(nums, target);

    }
}

public class solution2
{
    public void RemoveElement(int[] nums,int target)
    {   
        //删除特定的元素,快慢指针,当遇到特定元素的时候就跳过!
        int fast = 0;
        int slow = 0;
        while (fast < nums.Length)
        {
            if (nums[fast] != target)
            {
                nums[slow] = nums[fast];
                slow++; 
            }
            fast++;
        }
        Console.WriteLine(slow);
    }
}

public class solution
{
    public void Search(int[] nums, int target)
    {
        //左闭右开
        //int right=nums.Length-1;(右边是取不到的)
        //遍历的时候需要保持前后一致
        //用if-else时,只判断了一次就停止了
        //前后一致,这里取不到
        //注意赋值语句!!!mid的比较那里!!画个图!!求求了
        int left = 0;
        int right = nums.Length;
        while (left < right)
        {
            int mid = (right-left)/2 + left;
            if (nums[mid] < target)
            {
                left = mid+1;
            }
            if (nums[mid] > target)
            {
                right=mid;
            }
            if (nums[mid] == target)
            {
                Console.WriteLine(mid);
                break;
            }

        }
        if (left >= right)
        {
            Console.WriteLine("no");
        }

    }
}

最近因为一些曾经的决定在不停地内耗,状态不太好。深知这样不对,因此只能不断一步一步说服自己,那些曾经的决定放在如今的状态下可能略显荒唐,但是你要知道,在过去的那一个时刻,不管你做出什么样的决定,在那个时刻都是你能做出的你认为最为正确的决定。在那之后,发生什么,你也不得而知,但如果做出决定的那一刻你是无怨无悔的,在那之后也就没有必要再为此烦恼。而如果当初做出的决定有悖于你内心真正的想法,那么你能做的,只能是从当下开始尽可能去做一些可以弥补的事情,而不是不停地踌躇不前。
永远不要忘了,你当时做出决定的那一刻,你自己内心深处期待的是怎样的生活。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值