随笔分类 - 数据结构与算法
摘要:第4题 中位数定义 将一个集合划分为两个长度相等的子集,其中一个子集中的元素总是大于另一个子集中的元素。 解题思路 将数组进行切。 长度为 m 的数组,有 0 到 m 总共 m + 1 个位置可以切。 把数组 A 和数组 B 分别在 i 和 j 进行切割。 将 i 的左边和 j 的左边组合成「左半部
阅读全文
摘要:第103题 解题思路 基于二叉树层序遍历改一点代码即可. "二叉树层序遍历" 双端队列(deque,全名double ended queue)是一种具有队列和栈性质的抽象数据类型。双端队列中的元素可以从两端弹出,插入和删除操作限定在队列的两边进行。 本题和普通的层序遍历区别在于如何正确的选取加入子节
阅读全文
摘要:第102题 如何遍历一棵树 有两种通用的遍历树的策略: 深度优先搜索(DFS) 在这个策略中,我们采用深度作为优先级,以便从跟开始一直到达某个确定的叶子,然后再返回根到达另一个分支。 深度优先搜索策略又可以根据根节点、左孩子和右孩子的相对顺序被细分为先序遍历,中序遍历和后序遍历。 宽度优先搜索(BF
阅读全文
摘要:第1114题 解题思路 1.定义一个flag信号量及对象锁lock 2.定义三个方法first,second,third用来分别执行A,B,C三个线程,并且在run()前增加限制,执行后更新flag值。比如:first执行条件为flag=0(即C线程执行完),A线程执行完后,flag设置为1表示可以
阅读全文
摘要:第1117题 解题思路 1.设定一个h信息号 2.每生成一个h,当h等于2的时候则进入等待o。否则生成氢气并且h自加1。 3.每生成一个o,当h小于2的时候则进入等侍h。否则生成o并且h清0,重新开始生成一个水份子 4.注意Runnable和Thread的区别,实现了Runnable接口,无法启动线
阅读全文
摘要:第108题 解题思路 从定义我们知道,BST的中序遍历为一个递增序列,给定的数组其实就是中序遍历结果 取有序数组的中间值做根,左边部分做左树,右边部分做右树如此循环迭代去二分就可还原这棵BST树 代码实现 1.二分+递归实现 每次取数组的中间值,作为二分搜索树的中间节点,依次递归下去即可 2.利用堆
阅读全文
摘要:给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater Tree),使得每个节点的值是原来的节点值加上所有大于它的节点值之和。
阅读全文
摘要:binary search tree,中文翻译为二叉搜索树、二叉查找树或者二叉排序树。简称为BST
阅读全文
摘要:using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication3 { class Program { p...
阅读全文
摘要:using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication3 { class Program { p...
阅读全文
摘要:今天看了博客园的一篇 "只有10%程序员能正确实现二分查找算法" 一开始有点不服气,我想啊,二分查找啊,这也太简单了吧.然后自己动手用C#写了一个,测试正常数据,哇,第一次就成功,不错,代码如下:代码 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-- ...
阅读全文
摘要:最近由于工作需要,需要研究最佳路径选择问题.估重新复习了遍dijkstra算法,以下做个记录代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--#include"stdio.h"#include<iostream.h>usingnamesp...
阅读全文
摘要:这里先举个简单的例子,很多朋友以前一定写过类似这样的例子:求编写一函数,输入年月日,求出该日是该年的第几天.好的,现在大家代码会怎么写呢?我的第一次代码大概是这样的: [代码]{ int s=0;switch(month-1) { case 1: s=31; break; case 2: s=31+28; break; case 3: s=31+28+31; break; case...
阅读全文
摘要:Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->int function(int start,int end){ return (printf("%d ",start)) && (start<end && (function(start...
阅读全文
摘要:Problem Description求A^B的最后三位数表示的整数。说明:A^B的含义是“A的B次方”Input输入数据包含多个测试实例,每个实例占一行,由两个正整数A和B组成(1<=A,B<=10000),如果A=0, B=0,则表示输入数据的结束,不做处理。Output对于每个测试实例,请输出A^B的最后三位表示的整数,每个输出占一行。Sample Inp...
阅读全文

浙公网安备 33010602011771号