算法
red98
这个作者很懒,什么都没留下…
展开
-
如何写对二分查找,要关注哪些细节?
很多人都玩过猜数字游戏。在1-100中选择1个数字,让你猜出是什么数字。猜错了会告诉你大了还是小了。 猜数字的这个过程就和二分查找的思想很相似,只不过二分查找每次都猜中间的数字。二分查找过程:获取中间位置根据中间位置的值和目标值比较,相等就找到了。不管的大了还是小了,都会排除掉一半。更改区间的边界,缩小查找范围。使用剩下的一半重复这个过程,直到找到目标值。二分查找的思想和实现都是比较简单的,大多数人理解和写出二分查找都是很容易的。但是要写对还是有一些细节需要注意的。class Soluti原创 2020-10-24 11:35:25 · 114 阅读 · 0 评论 -
LeetCode 141. 环形链表
LeetCode给定一个链表,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。如果链表中存在环,则返回 true 。 否则,返回 false 。/** * Definition for singly-linked list. * stru原创 2020-10-09 19:56:06 · 210 阅读 · 0 评论 -
冒泡排序
冒泡排序//c++11: swap() defined in header <algorithm>void bubbleSort(vector<int> &nums){ int range = nums.size()-1; for (int i = 0; i < range; ++i){ for (int j = ...原创 2019-09-16 08:26:30 · 113 阅读 · 0 评论 -
快速排序
快速排序快速排序是通过递归实现。快速排序先选取基准值base,从两端向中间遍历,通过一次遍历将序列调整为[小于base的序列,base,大于base的序列] ------以从小到大为例再通过递归,分别对小于base的序列和大于base的序列进行快速排序,最终完成排序。 Algorithm Time Complexity Space Complexity...原创 2019-09-16 09:17:09 · 6025 阅读 · 3 评论 -
二叉树遍历-递归
二叉树遍历-递归前序遍历(Pre-Order)中序遍历(In-Order)后序遍历(Post-Order)前序遍历//c++:前序遍历void preOrder(TreeNode *root){ if (root == NULL) return; cout<<root->val<<endl; preOrder(root->...原创 2019-09-16 10:51:22 · 119 阅读 · 0 评论 -
二叉树遍历-非递归
二叉树遍历-非递归前序遍历(Pre-Order)中序遍历(In-Order)后序遍历(Post-Order)前序遍历//c++ 前序遍历void preOrder(TreeNode *root){ stack<TreeNode*> s; TreeNode *p = root; while (p != NULL or !s.empty()){ ...原创 2019-09-16 12:34:57 · 91 阅读 · 0 评论 -
单链表反转
单链表反转方法:循环递归方式一个一个地将节点反转。除了入参head指针,还需要增加两个指针:curNode: 指向当前要处理的节点。newHead: 指向反转后的链表的头节点。处理过程因为反转后的链表没有,所以newHead初始化为NULL。当前节点curNode指向head,head指向下一个节点。准备反转当前节点curNode。curNode->next指向反转链...原创 2019-09-17 09:23:58 · 98 阅读 · 0 评论