算法习题
文章平均质量分 60
算法习题
小柒七七七
这个作者很懒,什么都没留下…
展开
-
[leetcode] 138.复制带随机指针的链表(C语言)
题目描述:给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。要求返回这个链表的 深拷贝。我们用一个由 n 个节点组成的链表来表示输入/输出中的链表。每个节点用一个 [val, random_index] 表示:val:一个表示 Node.val 的整数。random_index:随机指针指向的节点索引(范围从 0 到 n-1);如果不指向任何节点,则为 null 。示例 1:输入:head = [[7,null],[13,0],[11,4],[10,原创 2021-02-07 22:19:41 · 2700 阅读 · 6 评论 -
LeetCode——旋转数组
一、题目描述给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。示例 1:输入: nums = [1,2,3,4,5,6,7], k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转 3 步: [5,6,7,1,2,3,4]示例 2:输入:nums = [-1,-100,3,99], k = 2输出:[3,99,-1,-100]解释:向右旋转 1 步: [原创 2021-01-29 11:09:00 · 155 阅读 · 0 评论 -
二分法原理及代码实现
如果这篇文章对你有所帮助或者给了你灵感,欢迎给我点个小红心,如果没有,也可以点个赞支持一下,谢谢大家!!!二分法基本思想:假设数据是按升序排序的,对于给定值key,从序列的中间位置 k 开始比较,如果当前位置arr[k]值等于key,则查找成功;若key小于当前位置值arr[k],则在数列的前半段中查找,arr[low,mid-1];若key大于当前位置值arr[k],则在数列的后半段中继续查找arr[mid+1,high]。时间复杂度:1.最坏情况查找最后一个元素(或者第一个元素)Mast原创 2020-12-04 23:19:34 · 1667 阅读 · 5 评论 -
求两个数的最大公约数——辗转相除法
辗转相除法:辗转相除法, 又名欧几里德算法(Euclidean algorithm),是求两个正整数之最大公约数的算法。它的具体做法是:用较大数除以较小数,再用出现的余数(第一余数)去除除数,再用出现的余数(第二余数)去除第一余数,如此反复,直到最后余数是0为止。如果是求两个数的最大公约数,那么最后的除数就是这两个数的最大公约数。下面给出具体代码:#include<stdio.h>int main(){ int a, b, c; printf("请输入两个数:\n"); scan原创 2020-12-01 23:02:12 · 5094 阅读 · 3 评论