E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
[编程之美]
上自习
编程之美
看了绪论前面引言,我发现2年来我忽视了一个重要的东西就是算法。幸好我在大三这一年刚开始发现了。DirectX中基础还有Animation不太懂,不过我已经打
zyb_debug
·
2016-02-22 00:57
编程之美
2.12快速寻找满足条件的2个数
题目:对于一个数组,快速找出两个数字,让这两个数字的和等于一个给定的值,默认假设数组中肯定有至少一组符合要求。数组a[]={5,6,1,4,7,8,9},sum=10.解法一:穷举,遍历数组中所有的2个数字,相加之和看是否等于给定的数字,时间复杂度为N(N-1)/2,既O(N^2),这种方法效率不高。1#include"iostream" 2usingnamespacestd; 3 4voi
SeeKHit
·
2016-02-18 16:00
[置顶] 求一个二进制数字中1的个数?
编程之美
:数字之美:1:求一个二进制数字中1的个数?例如10101001方法一:除法除去2数字除以二相当于二进制下数字右移一位,查看除以2的余数是否为0可得这位是否为1.循环除,直到数字为0为止。
wuheshi
·
2016-02-18 16:00
优化
二进制
编程之美
C语言
编程之美
- 抓石头游戏(2)
游戏规则: N块石头,两个玩家A,B,A负责将石头分成M堆,然后按BABA顺序来抓取,每人每次可以从任意堆抓取大于1的任意块石头,取得最后一块石头的人赢。书中的分析:如果每堆石头只有一块,当M是奇数的时候,一定是先抓的赢。如果有两块石头,分成两堆 1:1,那先抓的一定输。扩展一下,如果有偶数块石头,平均分成两堆X:X,那先抓的一定会输。联想到XOR运算0 xor0 =00 xor1 =11 xor
wangzhiyu1980
·
2016-02-18 09:00
【
编程之美
/读书笔记】Chapter 1 游戏之乐
这里就不写每个问题的题目了,只是记录一下自己的总结和心得。1.1让CPU占用率听你指挥这个题目我刚接触的想法是和多核多线程要扯上关系的,因为自己写个死循环只能跑到CPU35%左右的占用率,但是现在java多线程还没看,所以参考了一下单核的思想,决定过几天好好看看java多线程,再来解决这个问题,下面先总结一下目前的几点收获:复习了一下CPU的频率,时钟周期的概念,举个例子更直观:假设是单核CPU,
不会飞的超人先生
·
2016-02-17 22:25
读书
Java
算法
【
编程之美
/读书笔记】Chapter 1 游戏之乐
这里就不写每个问题的题目了,只是记录一下自己的总结和心得。1.1让CPU占用率听你指挥这个题目我刚接触的想法是和多核多线程要扯上关系的,因为自己写个死循环只能跑到CPU35%左右的占用率,但是现在java多线程还没看,所以参考了一下单核的思想,决定过几天好好看看java多线程,再来解决这个问题,下面先总结一下目前的几点收获:复习了一下CPU的频率,时钟周期的概念,举个例子更直观:假设是单核CPU,
不会飞的超人先生
·
2016-02-17 22:25
读书
Java
算法
【
编程之美
/读书笔记】Chapter 1 游戏之乐
这里就不写每个问题的题目了,只是记录一下自己的总结和心得。1.1让CPU占用率听你指挥这个题目我刚接触的想法是和多核多线程要扯上关系的,因为自己写个死循环只能跑到CPU35%左右的占用率,但是现在java多线程还没看,所以参考了一下单核的思想,决定过几天好好看看java多线程,再来解决这个问题,下面先总结一下目前的几点收获:复习了一下CPU的频率,时钟周期的概念,举个例子更直观:假设是单核CPU,
Coding_Fox
·
2016-02-17 22:00
编程之美
2.10寻找数组中的最大最小值
数组是最简单的一种线性数据结构,当得到一个数组,需要找出最大最小值的时候,通过什么样的方法可以高效的,找出最大最小值呢。对于一个N个整数组成的数组,需要比较多少次呢。现在有一个N=8的数组{5,6,8,3,7,9,1,2}。解法一:将找最大和最小数看成2个独立的问题,分别求解,需要遍历数组2次,共需要2N次操作。1#include"iostream" 2usingnamespacestd; 3
SeeKHit
·
2016-02-17 20:00
编程之美
- 一排石头游戏及扩展问题
问题:一堆石头排成一排,两个人轮流从其中抓取一块或两块石头(两块石头必须是挨着的),谁拿到了最后的石头,谁就是赢家,编写算法保证先抓的人一定能赢。思路:假设有三块石头,甲先拿中间的一块,这样无论乙怎么拿甲都会赢。如果有四块石头,甲先拿中间的两块,这样无论乙怎么拿甲也会赢。再扩展一下,如果有五块石头,甲先拿中间的一块,如果下面乙拿一块,甲就拿和乙中心对称的一块,这样甲还是会赢。规律就是如果是奇数块石
wangzhiyu1980
·
2016-02-10 11:00
读书日记之
编程之美
系列(一)
最近我买了本书书名大家可能知道叫
编程之美
,这是一本微软研究院出的面试思想性问题书,我看后得到了很多的启发,今天先讲一下我看的题。
史上最强的弟子
·
2016-02-02 10:00
算法
编程思想
编程之美
- 安排见面会问题
问题:有n个人会参加m个会议,其中一个人会参加m个会议中的若干个。怎样安排m个会议的日程使效率最高。思路:书中的想法是将它转换为一个图的问题例如:有5个人A,B,C,D,E会参加5个会议1,2,3,4,5,参加会议的情况如下。A : { 1 - 2 - 3 } B : { 1 - 3 - 4 } C : { 2 - 3 } D : { 3 - 4 - 5 } E : { 1 - 4 - 5 }
wangzhiyu1980
·
2016-02-01 20:00
算法8 动态规划之字符串相似度
题目:题目来源:《
编程之美
》把两个字符串变成相同的基本操作定义如下:1.修改一个字符(如把a 变成 b)2.增加一个字符 (如 abed 变成 abedd)3.删除一个字符(如 jeddon 变成 jedon
jedon
·
2016-01-28 22:00
n&(n-1)的妙用(强大的位运算)
《
编程之美
》中n&(n-1)还有很多妙用,这里来总结一下。
u012965373
·
2016-01-27 11:00
编程之美
- 爬楼梯问题
问题: 电梯在高峰时为了提高效率,当人们进入电梯选择好楼层后,根据算法只停在其中的一层。这个算法要求电梯里所有的人爬楼梯的总数最少。想法I:算是穷举法吧,把每个人可能会爬的楼层数都计算出来,然后逐一求和后,再找出和最小的值。假设有10层楼,5个人分别到3,6,9,10,5层,穷举一下可以得到2 5 8 9 4 = 28 停在第1 层爬楼的总数1 4 7 8 3 =
wangzhiyu1980
·
2016-01-26 21:00
我的书单
《编程珠玑》《JAVA从入门到精通》《
编程之美
》《JAVA程序员的基本修养》《阿哈,算法》《数据结构与算法分析JAVA语言描述》《HeadFirst设计模式》《设计模式可复用面向对象软件的基础》《深入理解
singit
·
2016-01-26 18:00
linux c++ 服务器端开发面试必看书籍
一、算法基础系列数据结构基础(C语言版)》朱仲涛译《剑指Offer》《
编程之美
》《编程珠玑》《Care
强哥之神
·
2016-01-24 16:09
Linux
面试
C++
编程之美
- 光影切割问题
在一个平面内有一个矩形区域,直线穿过矩形可以将其分割为不同的区域,且在这个平面中不存在三条直线相交一点的情况。求当有N条直线穿过矩形时,它被分割为多少个区域?例如:图中有两条直线将矩形分割为4个区域。直线条数交点个数分割部分102214203304326337由此可以看出:分割面数=直线条数+在该区域内的交点个数示例程序:#include usingnamespacestd; #defineT
wangzhiyu1980
·
2016-01-22 09:00
leetcode169---Majority Element(数组中出现次数超过一半的数)
findthemajorityelement.Themajorityelementistheelementthatappearsmorethan⌊n/2⌋times.Youmayassumethatthearrayisnon-emptyandthemajorityelementalwaysexistinthearray.该题类似于
编程之美
中的
will130
·
2016-01-20 09:00
LeetCode
《数据结构与算法之5 中国象棋将帅问题》
该知识,转自《
编程之美
》问题中要求一个变量。
Micheal_you
·
2016-01-18 22:00
二分查找讲解
原创地址:http://www.cnblogs.com/segeon/archive/2012/07/27/2612361.html很多书上都会讲到二分查找(数据结构与算法教材、《
编程之美
》、《编程珠玑
eagle_or_snail
·
2016-01-18 12:00
二分查找
【
编程之美
】中国象棋将帅问题
问题描述:算法:遍历A的位置遍历B的位置判断A、B位置是否满足要求如果满足则输出数据结构:①A和B的位置存放思路:将可能的位置打上记号所以A、B的位置可以用整数类型存放。且范围是1~9.题目要求仅使用一个变量。方法一:staticvoidPlay1() { //4位二进制可以表示0~15。所以可以把一个byte拆分成前后四位。 //比如b=00100001,表示A在2(0010)位置,B在1(00
TinyJian
·
2016-01-15 14:00
算法
编程之美
微软
编程之美
- 饮料供货
问题描述公司采购饮料,采购的饮料有一个总量的限制V0升,同时每种饮料有最大瓶数的限制C(i),大家对每种饮料有一个满意度H(i),问怎样采购能使总的满意度最高。注:饮料的包装规格都是2的n次方的整数。想法I:动态规划假设: 饮料的种类为n 每种饮料的购买量为B(i) (i =0..n) 每种饮料最大瓶数的限制 C(i) (i =0..n) 每种饮料的满意度为 H(i
wangzhiyu1980
·
2016-01-14 09:00
编程之美
- 找出故障机器
给出一个数字的列表,是否能够快速的找出其中只出现一次的数字。想法:定义一个动态的数组,读一个数字,如果这个数字没出现在动态数组中,则将它放在数组中,如果数组中已经有了,则删除。最后剩下的就是只出现了一次的数据。#include #include usingnamespacestd; voidcheck(intvalue,vector&list) { for(vector::iteratorit
wangzhiyu1980
·
2016-01-09 18:00
编程之美
1.8小飞的电梯调度算法
题目:亚洲微软研究院所在的希格玛大厦一共有6部电梯。在高峰时间,每层都有人上下,电梯每层都停。实习生小飞常常会被每层都停的电梯弄的很不耐烦,于是他提出了这样一个办法:由于楼层并不算太高,那么在繁忙的上下班时间,每次电梯从一层往上走时,我们只允许电梯停在其中的某一层。所有乘客从一楼上电梯,到达某层后,电梯停下来,所有乘客再从这里爬楼梯到自己的目的层。在一楼的时候,每个乘客选择自己的目的层,电梯则计算
SeeKHit
·
2016-01-09 16:00
编程之美
1.5快速找出故障机器
题目:有很多服务器存储数据,假设一个机器仅存储一个标号为ID的记录,假设机器总量在10亿以下且ID是小于10亿的整数,假设每份数据保存两个备份,这样就有两个机器存储了同样的数据。问题是:1.假设在某个时间得到一个数据文件ID的列表,是否能快速地找出表中仅出现一次的ID?即快速找出出现故障的机器存储的数据ID。2.如果有两台机器出现故障呢?(假设存储同一份数据的两台机器不会同时出现故障,即列表中缺少
SeeKHit
·
2016-01-07 21:00
编程之美
- 买书问题
问题描述:一套书共5卷,单独买每一卷的每一本8元,没有折扣。如果一次买不同的卷的几本会有相应的折扣,折扣定义如下:不同的2本:折扣5%不同的3本:折扣10%不同的4本:折扣20%不同的5本:折扣25%一份订单中多本书中,不同的组合可能有不同的价格,设计算法计算出最低的价格。书中的解题思路1:主要也考虑的是动态规划的方式,假设:买5卷书的本数分别为X1,X2,X3,X4,X5。价格为F(X1,X2,
wangzhiyu1980
·
2016-01-07 09:00
编程之美
1.2中国象棋将帅问题
题目:下过中国象棋的朋友都知道,双方的“将”和“帅”相隔遥远,并且它们不能照面。在象棋残局中,许多高手能利用这一规则走出精妙的杀招。假设棋盘上只有“将”和“帅”二子(如图1-3所示)(为了下面叙述方便,我们约定用A表示“将”,B表示“帅”):A、B二子被限制在己方3×3的格子里运动。例如,在如上的表格里,A被正方形{d10,f10,d8,f8}包围,而B被正方形{d3,f3,d1,f1}包围。每一
SeeKHit
·
2016-01-06 16:00
编程之美
- 烙饼问题
把一摞烙饼按大的在下,小的在上拍好,一只手一次只能抓住上面的几张饼,把它们上下颠倒个个。反复几次后把饼排好。问把饼排好需要的最小的次数。问题:是看看把饼排好需要的最小次数。找最优解的问题,可以想到用穷举法。用递归的方式去遍历所有的翻转方式。然后找到最小的值。可以先把最上面的两张翻一下,把次数加一,看看是不是达到要求了,如果没有的话再已经翻转过的基础上再继续递归。当顺序排好了,这是一个退出条件。当然
wangzhiyu1980
·
2015-12-31 22:00
《
编程之美
》读书笔记:一摞烙饼的排序
原书中的代码有几处错误,纠正如下:P23 Output()函数中的printf("%d",m_arrSwap[i]);应为printf("%d",m_SwapArray[i]);P24 Init()函数中m_nCakeCnt=n;应为m_nCakeCnt=nCakeCnt;P25 Search()函数中的m_arrSwap[i]=m_ReserveCakeArray[i];应为m_SwapArra
MajorDong100
·
2015-12-31 14:00
编程之美
编程之美
- 将帅问题
在中国象棋棋盘上,输出将帅不冲突的所有的位置,只使用一个变量。想法:I将帅能运行的空间3x3,如果将在图中A的位置,帅在下面的6个位置都是合法的,图中将帅不冲突的位置一共有6x9=54个4个bit可以表示16个状态,那么一个char型的高4位可以表示将的位置,低4位可以用来表示帅的位置,已经足够了。代码如下:voidfunction1() { unsignedcharvalue=0; while
wangzhiyu1980
·
2015-12-27 13:00
尾部的零
=39916800,因此应该返回2挑战O(logN)的时间复杂度**************************各种超时……
编程之美
上的这个思路也超时classSolution{ /* *paramn
fk5431
·
2015-12-24 20:00
算法
面试
设计
lintcode
数字与二进制
hadoop相关整理
1.数据结构与算法1.1书籍(1)算法导论(2)
编程之美
(3)编程珠玑(4)数据结构(C语言版)(5)CareerCup.Cracking.the.Technical.Interview.Ed4.2010
qq_26562641
·
2015-12-09 17:00
C#几个经常犯错误汇总
在我们平常编程中,时间久了有时候会形成一种习惯性的思维方式,形成固有的编程风格,但是有些地方是需要斟酌的,即使是一个很小的错误也可能会导致昂贵的代价,要学会善于总结,从错误中汲取教训,尽量不再犯同样错误,注重
编程之美
·
2015-12-09 11:34
C#
面试趣题:求不连续子数组最大和的值
作者:小飞 原文地址:http://yishan.cc/blogs/nickledson/archive/2008/12/29/997.aspx 《
编程之美
》一书上有一道题:给定一个由N个整数元素组成数组
·
2015-12-09 10:54
面试
PAT甲级1008
1008传送门这道题很简单,比
编程之美
上面的都简单,所以也没什么好说的。
u013220338
·
2015-12-06 09:00
《
编程之美
》——数组分割
问题:将一个无序、元素个数为2N的正整数数组分割为元素个数为N的两个数组,并使两个子数组的和最接近。分析与解法:【解法一】动态规划的0-1背包问题。将heap[M](M表示从2N中所有可能的M个元素和组成的集合),从下到上(m->1…->N)最终求的完整的heap[N]。要点:可以想成求不大于sum/2的最接近集合,以下为分析:假设数组A[1..2N]所有元素的和是SUM。模仿动态规划解0-1背包
zengzhen_CSDN
·
2015-12-02 14:00
《
编程之美
》——数组循环移位
问题:把一个含有N个元素的数组循环又移K位,要求时间复杂度为O(N),且只允许使用两个附加变量。分析与解法:全面地考虑问题,K不一定是小于N的,也有可能远大于N。因为右移K位的结果与右移K-N位的结果相同,所以需要对K进行处理,使K%=N。假设原数组是abcd1234,循环右移4位后,数组变为1234abcd。可以看出数组的前后两段的顺序是不变的,于是把数组看成两个部分,右移的过程是把数组的两个部
zengzhen_CSDN
·
2015-12-02 10:00
C语言开发总结(十八)
个位运算技巧一提起位运算,人们往往想到它的高效性,无论是嵌入式编程还是优化系统的核心代码,适当的运用位运算总是一种迷人的手段,或者当您求职的时候,在代码中写入适当的位运算也会让您的程序增加一丝亮点,最初当我读《
编程之美
benpaobagzb
·
2015-11-29 22:00
《
编程之美
》——求数组的最长递增子序列
问题:求数组最长递增子序列。分析与解法:【解法一】对数组进行排序,将有序的数组与原数组一起求最长公共子序列,于是原问题可以转化为求最长公共子序列的问题。排序的时间复杂度为O(nlogn),求最长公共子序列的问题时间复杂度为O(n^2),总的时间复杂度为O(n^2)。【解法二】使用动态规划的方法,因为要求长度为i的序列的Ai{a1,a2,……,ai}最长递增子序列,需要先求出序列Ai-1{a1,a2
zengzhen_CSDN
·
2015-11-28 18:00
《
编程之美
》——求数组的子数组的最大值
问题:求数组的子数组的最大值分析与解法:【解法一】穷举法,把每个子数组的和求出来并比较,输出最大值。时间复杂度为O(n^2)。代码:intmaxSum(int*arr,intn) { inti,j; intsum,max=INT_MIN; for(i=0;iy?x:y; } intmaxSum(int*arr,intn) { intstart[n-1]=arr[n-1]; intall[n-1]
zengzhen_CSDN
·
2015-11-26 19:00
《
编程之美
》——快速寻找符合条件的两个数
问题:快速找出一个数组中的两个数字,使两个数字之和为一个特定的值。假设数组中至少存在一组符合要求的解。分析与解法:【解法一】穷举,从数组中任意选取两个数字,计算两个数字之和是否等于给定的数字。时间复杂度为O(n^2)。【解法二】对数组中的每个数arr[i]都判定sum-arr[i]是否在数组中,于是题目就变成了一个查找算法。可以先对数组进行排序,再使用二分法进行查找,总的时间复杂度为O(2*nlo
zengzhen_CSDN
·
2015-11-25 12:00
《
编程之美
》——寻找最近点对
问题:给定平面上两个点的坐标,找出距离最近的两个点。分析与解法:一般思路是蛮力算法,两两求N个点之间的距离并比较,得出最大距离,时间复杂度为O(N^2)。优化算法是采用分治的思想,将N个点先按照x轴的坐标的中值x=mX平均分为左右两组,分别求出xL和xR中的最近点对的距离,因为最近点对一定是出现xL或xR中,或者是xL中的一个点与xR中的一个点之间,所有再将左右最近点对间的距离进行比较,取较小值m
zengzhen_CSDN
·
2015-11-24 19:00
数据结构:关于重建二叉树的三种思路
前言: 前几天在温习《
编程之美
》这本书的时候,看到了二叉树的重建。正好,也想复习一下数据结构的知识,就来写了一个小Demo。居然有新发现(本文中的第三种方式)。
u013761665
·
2015-11-24 00:00
java
数据结构
二叉树
重建二叉树
《
编程之美
》——最大公约数问题
问题:求两个正整数的最大公约数,假设两个正整数都很大。分析与解法:【解法一】x与y的最大公约数与x对y的余数的最大公约数是相同的,即f(x,y)=f(y,y%x),可以把原问题转化为求两个更小数的最大公约数,直到其中一个数为0。代码:intgcd(intx,inty) { if(y==0) returnx; else returngcd(y,y%x); }【解法二】解法一中大整数求余的开销很大。因
zengzhen_CSDN
·
2015-11-23 12:00
《
编程之美
》——寻找最大的K个数
题目:N个无序的数(可能数目非常大),选出其中最大的K个数。分析与解法:【解法一】对N个数进行排序,然后选出最大的K个数。可以使用快速排序或堆排序,时间复杂度为O(NlogN)。因为这里N的数目可能非常大,即N>>K,而前N-K个数可以不进行排序,使用可以部分排序的算法,如选择排序或交换排序,时间复杂度为O(NK)。【解法二】当N的数值很大的时候,即N>>K。可以使用快速排序中的partition
zengzhen_CSDN
·
2015-11-22 19:00
【
编程之美
】求最大公约数
//解法一:更相减损法BigInt(BigIntx,BigInty){ if(x>1,y>>1); elsereturngcd(x>>1,y); } else{ if(IsEven(y))returngcd(x,y>>1); elsereturngcd(y,x-y); } } }
u013806814
·
2015-11-21 11:00
c
《
编程之美
》——寻找发帖“水王”
问题:论坛中“水王”发帖的数目超过了帖子总数的一半,如果有当前论坛所有帖子的列表,求“水王”的ID。分析与解法:一般的想法是根据ID对列表排序,若编号从0开始第N/2个ID即为“水王”的ID。这种方法的时间复杂度即为排序的时间复杂度,选用较好的排序算法平均时间复杂度为O(nlogn)。避免排序,时间复杂为O(N)的解法是,每次从列表中删除两个不同的ID(不管是否包括“水王”的ID),这并不影响水王
zengzhen_CSDN
·
2015-11-19 18:00
《
编程之美
》——不要被阶乘吓倒
问题:给定一个整数N,求N!末尾的0的个数。求N!的二进制表示中最低位1的位置。分析与解法:——问题1【解法一】计算因式分解中5的指数,再求和。代码:intzeroNum(intN) { intnum=0; for(inti=0;i>1; num+=N; } returnnum+1; }【解法二】
zengzhen_CSDN
·
2015-11-19 11:00
《
编程之美
》——求二进制数中1的个数
问题:求一个字节(8bit)的无符号整型变量二进制表示中“1”的个数。要求执行效率尽可能高。分析与解法:【解法一】每次除2取余,若为奇数则累加,最终累加结果为“1”的个数。如,10100010除以2,商为1010001,余数为0;1010001除以2,商为101000,余数为1。时间复杂度O(log2v)。代码:intcount(intv) { intnum=0; while(v) { if(v%
zengzhen_CSDN
·
2015-11-18 12:00
《
编程之美
》——分层遍历二叉树
问题1:给定一棵二叉树,要求从上到下从左到右分层输出该二叉树的节点值。问题2:从左到右输出二叉树中某一层的节点值。分析与解法:【解法一】使用递归的方法。先解问题2,然后用问题2的解法依次遍历其各层节点。于是假设要求访问二叉树中第k层的节点,那么其实可以把它转化成分别访问以该二叉树根节点的左右孩子节点为根节点的两棵子树中层次为k-1的节点。代码:typedefstructNode { structN
zengzhen_CSDN
·
2015-11-16 19:00
上一页
18
19
20
21
22
23
24
25
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他