百度新浪盛大面试笔试算法题收集含答案java.docx
- 文档编号:30038201
- 上传时间:2023-08-04
- 格式:DOCX
- 页数:11
- 大小:16.46KB
百度新浪盛大面试笔试算法题收集含答案java.docx
《百度新浪盛大面试笔试算法题收集含答案java.docx》由会员分享,可在线阅读,更多相关《百度新浪盛大面试笔试算法题收集含答案java.docx(11页珍藏版)》请在冰豆网上搜索。
XX新浪盛大面试笔试算法题收集含答案java
一(XX、盛大面试题)单链表及相关操作的实现(java语言)
packagelist;
publicclassNode
{
privateNodenextNode;
privateintvalue;
publicNode(intvalue)
{
this.value=value;
}
publicNode()
{
}
/**
*连接两个列表--插入法
*
*@paramhead1
*@paramhead2
*@return
*/
publicNodeuniteLinkLists(Nodehead2)
{
Nodell=this;
NodepreNode_L1=ll;
NodecurNode_L1=ll;
NodecurNode_L2=head2;
NodetempNode_L2=null;
while(curNode_L2!
=null)
{
while(curNode_L1!
=null)
{
if(curNode_L2.value<=curNode_L1.value)
{
tempNode_L2=curNode_L2.nextNode;
//将L2插入到L1前边
if(preNode_L1==ll)//是头节点
{
curNode_L2.setNext(preNode_L1);
ll=preNode_L1=curNode_L2;
curNode_L2=tempNode_L2;
}
else
{
preNode_L1.setNext(curNode_L2);
curNode_L2.setNext(curNode_L1);
preNode_L1=curNode_L2;
curNode_L2=tempNode_L2;
}
break;
}
else
{
if(curNode_L1.nextNode==null)//已经到L1的末尾
{
//将L2所有的节点插入到L1末尾
curNode_L1.setNext(curNode_L2);
returnll;
}
else
{
//向下查找l1的节点
preNode_L1=curNode_L1;
curNode_L1=curNode_L1.nextNode;
}
}
}
}
returnll;
}
/**
*链表插入在第index元素的位置,插入节点newNode,返回链表的总长度,如果index合法,返回链表原长度
*
*@paramnewNode
*@paramindex1~index
*/
publicintadd(NodenewNode,intindex)
{
if(index<1||index>length())
{
returnlength();
}
inti=1;
NodepreNode=this;
NodecurNode=preNode.nextNode;
while(curNode!
=null)
{
if(i==index)
{
preNode.setNext(newNode);
newNode.setNext(curNode);
returnthis.length();
}
preNode=curNode;
curNode=curNode.nextNode;
i++;
}
returnthis.length();
}
/**
*删除链表l1中第index个节点
*
*@paramll
*@paramindex
*/
publicintdelete(intindex)
{
if(index<1||index>length())
{
returnthis.length();
}
inti=1;
NodepreNode=this;
NodecurNode=preNode.nextNode;
while(curNode!
=null)
{
if(i==index)
{
preNode.setNext(curNode.nextNode);
returnthis.length();
}
preNode=curNode;
curNode=curNode.nextNode;
i++;
}
returnthis.length();
}
/**
*第index节点的值为value
*
*@paramll
*@paramindex
*@paramvalue
*/
publicvoidmodify(intindex,intvalue)
{
if(index<1||index>length())
{
return;
}
inti=1;
NodecurNode=this.nextNode;
while(curNode!
=null)
{
if(i==index)
{
curNode.setValue(value);
break;
}
i++;
curNode=curNode.nextNode;
}
}
/**
*返回ll的长度(算上根节点)
*
*@paramll
*@return
*/
publicintlength()
{
intlength=0;
NodecurNode=this;
while(curNode!
=null)
{
length++;
curNode=curNode.nextNode;
}
returnlength;
}
/**
*给链表排序--升序
*
*@paramnode
*@return
*/
publicNodeorderLinkList()
{
NodenextNode=null;
inttemp=0;
NodecurNode=this;
while(curNode.nextNode!
=null)
{
nextNode=curNode.nextNode;
while(nextNode!
=null)
{
if(curNode.value>nextNode.value)//前驱节点比后续节点的值大
{
//交换相邻两个节点的值
temp=curNode.value;
curNode.setValue(nextNode.value);
nextNode.setValue(temp);
}
//继续向下查找
nextNode=nextNode.nextNode;
}
curNode=curNode.nextNode;
}
returnthis;
}
publicvoidsetNext(Nodenode)
{
this.nextNode=node;
}
publicNodegetNextNode()
{
returnnextNode;
}
publicintgetValue()
{
returnvalue;
}
publicvoidsetValue(intvalue)
{
this.value=value;
}
}
二(盛大无线面试题:
在一个字符串数组中有红、黄、蓝三种颜色的球,且个数不相等、顺序不一致,请为该数组排序,使得排序后
*数组中球的顺序为:
黄、红、蓝
*例如:
红蓝蓝黄红黄蓝红红黄红 排序后为:
黄黄黄红红红红红蓝蓝蓝)
public voidorderBall(String[]balls)
{
intlen=0;
if(balls==null||(len=balls.length)==0)
{
return;
}
Stringtemp="";
intk=0;
for(inti=0;i { if(balls[i].equals("黄")) { if(i>k) { temp=balls[k]; balls[k]=balls[i]; balls[i]=temp; } k++; } } if(k+1>len) { return; } k=k+1; for(intj=k;j { if(balls[j].equals("红")) { if(j>k) { temp=balls[k]; balls[k]=balls[j]; balls[j]=temp; } k++; } } } /** *递归排序法 *@paramballs *@paramballType球的顺序类型: 黄球;红球;蓝球 *@paramoffIndex需要排序的起始索引 *@return */ public voidorderBall(String[]balls,String[]ballOrderType,intballOrderTypeindex,intoffIndex) { intlen=0; if(balls==null||(len=balls.length)==0) { return; } intlen1=0; if(ballOrderType==null||(len1=ballOrderType.length)==0) { return; } if(offIndex>len||len1 { return; } Stringtemp=""; intk=offIndex; for(inti=offIndex;i { if(balls[i].equals(ballOrderType[ballOrderTypeindex])) { if(i>k) { temp=balls[k]; balls[k]=balls[i]; balls[i]=temp; } k++; } } orderBall(balls,ballOrderType,++ballOrderTypeindex,++k); } 三新浪面试题: (计算给定的十进制数转换为二进制后,1的个数) /**简单易想到的方法 *@paramnum *@return */ public intcountBinaryNum(intnum) { StringstrNum=Integer.toBinaryString(num); intlen=0; if(strNum==null||(len=strNum.length())==0) { return0; } intcount=0; charch; for(inti=0;i { ch=strNum.charAt(i); if(ch=='1') { count++; } } returncount; } /** *递归方法 */ publicintcountBinaryNumber(intnum) { intdividend=num;//被除数 intdivisor=2;//除数 intquotient=0;//商数 intremainder=0;//余数 intcount=0; if(dividend==0) { returncount; } quotient=dividend/divisor; remainder=dividend%divisor; if(remainder==1) { count++; } returncount+=countBinaryNumber(quotient); } 四新浪面试题: 编写一个方法,计算一个字符串中,第一个不重复的字符在当前字符串中的索引。 /** *编写一个方法,计算一个字符串中,第一个不重复的字符在当前字符串中的索引。 */ publicstaticintcharIndexInStr(Stringtext) { intlen=0; if(null==text||(len=text.length())==0) { return0; } charcurch; charnextch; for(inti=0;i { curch=text.charAt(i); for(intj=0;j { nextch=text.charAt(j); if(curch==nextch&&i! =j) { if(i==j+1) { i++; } break; } else { if(j==len-1) { returni; } } } } return0; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 百度 新浪 盛大 面试 笔试 算法 收集 答案 java
![提示](https://static.bdocx.com/images/bang_tan.gif)