1. 问题
给定一个单链表,随机返回一个结点,要求每个结点被选中的概率相等。
2. 思路
在一个给定长度的数组中等概率抽取一个数,可以简单用随机函数random.randint(0, n-1)得到索引来抽取。
本题是给定了链表,当然也好做,可以事先遍历一次求长度,每次要取的时候随机求索引,然后遍历一
题目地址:https://vjudge.net/problem/POJ-2096
说的是有n个bug,和s个系统。现在一个人一天能发现一个bug,它可能是任何一个系统中的,也可能会发现已经发现过的bug。
问,他发现全部n个bug,并且s个系统中都出现bug的天数的期望。
代码是借用kuangbin
一、递推算法思想
利用已知条件,逐步递推,直到得到结果为止。两种递推算法:顺推法、逆推法。
二、实例演练
(1)兔子繁殖问题。
代码实现:
#include "stdio.h"
#define NUM 13
int main()
{
int i;
long fib[N
【洛谷P3960】列队题解
题目链接
题意:
Sylvia 是一个热爱学习的女孩子。
前段时间,Sylvia 参加了学校的军训。众所周知,军训的时候需要站方阵。
Sylvia 所在的方阵中有 n×m 名学生,方阵的行数为 n ,列数为 m 。
为了便于管理,教官在训练开始时,按照从前到后,从左到右的
问题
给定一群树的坐标点,画个围栏把所有树围起来(凸包)。
至少有一棵树,输入和输出没有顺序。
Input: [[1,1],[2,2],[2,0],[2,4],[3,3],[4,2]]
Output: [[1,1],[2,0],[4,2],[3,3],[2,4]]
思路和代码
1. 暴力法(超
这是悦乐书的第151次更新,第153篇原创
01 看题和准备
今天介绍的是LeetCode算法题中Easy级别的第10题(顺位题号是28)。给定两个任意字符串haystack、needle,返回haystack中第一次出现needle的索引,如果needle不是haystack的一部分,则返回-1。
八大常见的算法:
枚举算法
递推算法
递归算法
分治算法
贪心算法
试探算法
迭代算法
模拟算法
在后续文章中会一一讲述,并列举一些实例。
目录
什么是二叉树
二叉树的性质
二叉树的遍历先序遍历
中序遍历
后序遍历
特殊的二叉树满二叉树
完全二叉树
最后
数据结构分类中有一种很常见的结构,那就是树,树的分类很多种,包括二叉树、二叉搜索树、红黑树、B+树等等,但大多数都是基于二叉树的衍生结构,所以今天来学习下二叉树。
什么是二叉树
定
这是悦乐书的第150次更新,第152篇原创
01 看题和准备
今天介绍的是LeetCode算法题中Easy级别的第9题(顺位题号是27)。给定整数数组nums和值val,删除nums中所有的val值,元素顺序可以改变,返回删除val值后数组的长度。不能使用新数组接收数据。例如:
给定数组nums
作者按:因为教程所示图片使用的是 github 仓库图片,网速过慢的朋友请移步《二叉搜索树的实现与常见用法》原文地址。更欢迎来我的小站看更多原创内容:godbmw.com,进行“姿势”交流 ♪(^∇^*)
1. 为什么需要二叉搜索树?
选择数据结构的核心在于解决问题,而不是为了使用而使用。
算法的定义
算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作
算法定义中,提到了指令,指令能被人或机器等计算装置执行。它可以是计算机 指令,也可以是我们平时的语言文字。
为了解决某个或某类问题,需要把指令表示成一定的操作序列,操作序列包括一
#include<iostream>using namespace std;
void middl(int &p,int &q,int &r)//找枢轴,然后把枢轴位置都换到第一位,左中右从小到大,取中值,放在左边第一个 {
if (p > q) swap(
目录
数据结构分类
1、数组
2、栈
3、队列
4、链表
5、树
6、散列表
7、堆
8、图
@
数据结构分类
数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成 。
常用的数据结构有:数组,栈,链表,队列,树,图,堆,散列表等,如图所示:
1、数组
数组是可以
首先:借鉴前人大佬!感谢!本文只做整理
http://www.matrix67.com/blog/archives/105
首先在文中介绍了时间复杂度O,本身自己对于这个有所遗忘,并且本身在算法课上学的不咋地,正好借此梳理一下。
下面给出百度百科关于时间复杂的定义:
在计算机科学中,算法的时间复
这是悦乐书的第149次更新,第151篇原创
01 看题和准备
今天介绍的是LeetCode算法题中Easy级别的第8题(顺位题号是26)。给定一个已经排序(由小到大)的整数数组(元素可以重复),计算其中不重复元素的个数n,并将数组的前n个元素依次赋值为筛选后的不重复元素。不许使用新数组接收数据。例如
第一次打codejam....惨的一比,才A1.5题,感觉自己最近状态渣到姥姥家了,赶紧练练
A 模拟,注意0的问题
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cma
问题
NxN个格子中,用1x1x1的立方体堆叠,grid[i][j]表示坐标格上堆叠的立方体个数,求这个3D多边形的表面积。
Input: [[1,2],[3,4]]
Output: 34
思路
只要把每个柱体的表面积加起来(grid[i][j] * 4 ,4表示四个侧面,2表示上下两个面),
问题
NxN个格子中,用1x1x1的立方体堆叠,grid[i][j]表示坐标格上堆叠的立方体个数,求三视图面积。
Input: [[1,2],[3,4]]
Output: 17
Explanation: 见下图
思路
对于俯视图,只要一个格子有值,面积值就加1。
对于正视图(面朝x轴),对于某
这是悦乐书的第148次更新,第150篇原创
01 看题和准备
今天介绍的是LeetCode算法题中Easy级别的第7题(顺位题号是21)。合并两个已排序的链表并将其作为新链表返回。 新链表应该通过拼接前两个链表的节点来完成。例如:
链表L1包含三个节点,为1,2,4
链表L2包含三个节点,为1,3
算法描述
已知递推数列:
a(1)=1
a(2i)=a(i)+1
a(2i+1)=a(i)+a(i+1) (i为正整数)
求该数列的第n项,以及前n项中的最大值为多少,其n为多少?
算法思路
采用递推的方法,使用一维数组,从2开始递推,一直递推到n
a(i)=a(i/2)+1(n