数据结构与算法
dolpphins
这个作者很懒,什么都没留下…
展开
-
把数组排成最小的数
题目描述:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 思路:寻找给定数组的一种排序序列,使得所有数依次按照字符串的累加方式累加其它所组成的数最小。而得到这种序列的方法是:对于任意两个数a,b,如果ab原创 2016-02-23 11:14:10 · 393 阅读 · 0 评论 -
几种排序算法总结
注:以下所有排序算法都是按照整数值从小到大排序。冒泡排序思想:对于一个序列,走一趟把最大数冒到最后面。 示例:对于序列4, 10, 1, 6, 2, 7, 3, 8如下图(红框表示下一趟需要处理的子序列) 即总共需要走n趟,当第i趟走完时倒数i个数是有序的。代码 for(i = 0; i < n; i++) {//需要走n趟 for(j = 0; j < n - i - 1; j原创 2016-02-10 18:21:59 · 645 阅读 · 0 评论 -
两颗棋子找出100层大厦中棋子摔碎的临界层
题意大概是这样:有一座100层的大厦,还有两个完全相同的棋子,问怎样扔棋子能够使得最坏情况下扔的棋子次数尽量少。1.可以从第一层开始扔,直到第99层为止,那么最多扔棋子次数为99,显然不行,而且第二颗棋子没发挥其作用。2.不管怎样,我们都可以建立一个模型:第一颗棋子依次扔的楼层为X1,X2,X3,……,Xn,假如在Xi层摔碎,说明临界层大于X(i-1)小于等于Xi,这时用第二颗棋子从X(i-1)+1原创 2016-03-27 12:23:46 · 2063 阅读 · 0 评论 -
数据结构-树相关算法
二叉树前序遍历非递归算法:void preOrder(TreeNode* root) { if(root == NULL) { return; } stack<TreeNode*> st; st.push(root); while(!st.empty()) { TreeNode* p = st.top(); st原创 2016-09-16 17:26:23 · 862 阅读 · 0 评论