草庐IT

力扣 704.二分查找(Java)

题目描述给定一个n个元素有序的(升序)整型数组nums和一个目标值target,写一个函数搜索nums中的target,如果目标值存在返回下标,否则返回-1。来源:力扣(LeetCode)链接:https://leetcode.cn/problems/binary-search著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。简要描述二分法首先应为一个有序数列,我们将会数字设定为一个数组nums,将要在数组中寻找的目标设置为target。在数组中,对数组中间值nums[middle]与target进行判断,并对其进行空间的压缩,然后再次判断新的nums[middle]与tar

最大子段和(分而治之)

分治法\(O(n\log{n})\)按照“分而治之”的思想,将整个数据区间从中间一分为二,这样我们就将求整个区间的最大子列和转换为求小区间的最大子列和。设区间左端为left,区间右端为right,区间中间为middle。思考一下,求小区间的子列和一共存在一下三种情况:求左区间的最大子列和:[left,middle]求右区间的最大子列和:[middle+1,right]求从左区间横跨至右区间的最大子列和代码实现#include#includeusingnamespacestd;intK;constintN=1e7;intarr[N];/*从左区间横跨至右区间的情况*/intgetSpecialS

最大子段和(分而治之)

分治法\(O(n\log{n})\)按照“分而治之”的思想,将整个数据区间从中间一分为二,这样我们就将求整个区间的最大子列和转换为求小区间的最大子列和。设区间左端为left,区间右端为right,区间中间为middle。思考一下,求小区间的子列和一共存在一下三种情况:求左区间的最大子列和:[left,middle]求右区间的最大子列和:[middle+1,right]求从左区间横跨至右区间的最大子列和代码实现#include#includeusingnamespacestd;intK;constintN=1e7;intarr[N];/*从左区间横跨至右区间的情况*/intgetSpecialS

Delete Node in the Middle of Singly Linked List

SourceImplementanalgorithmtodeleteanodeinthemiddleofasinglylinkedlist,givenonlyaccesstothatnode.ExampleGiven1->2->3->4,andnode3.return1->2->4题解根据给定的节点并删除这个节点。弄清楚题意很重要,我首先以为是删除链表的中间节点。一般来说删除单向链表中的一个节点需要首先知道节点的前一个节点,改变其指向的下一个节点并删除就可以了。但是从这道题来看无法知道欲删除节点的前一个节点,那么也就是意味着无法改变前一个节点指向的下一个节点,强行删除当前节点将导致非法内存访问

Delete Node in the Middle of Singly Linked List

SourceImplementanalgorithmtodeleteanodeinthemiddleofasinglylinkedlist,givenonlyaccesstothatnode.ExampleGiven1->2->3->4,andnode3.return1->2->4题解根据给定的节点并删除这个节点。弄清楚题意很重要,我首先以为是删除链表的中间节点。一般来说删除单向链表中的一个节点需要首先知道节点的前一个节点,改变其指向的下一个节点并删除就可以了。但是从这道题来看无法知道欲删除节点的前一个节点,那么也就是意味着无法改变前一个节点指向的下一个节点,强行删除当前节点将导致非法内存访问