39.数组中出现超过一半的数字
function MoreHalfNum(arr){
if(arr.length<1)
return 0;
var result=arr[0],num=1;
for(let i=1;i<arr.length;i++){
if(num==0){
result=arr[i];
}else if(arr[i]==result){
num++;
}else{
num--;
}
}
var times;
for(let j=1;j<arr.length;j++){
if(arr[j]=result){
times++;
}
}
if(times<Math.floor(arr.length/2))
return 0;
return result;
}
var arr1=[1,2,3,2,2,2,5,4,2];
console.log(MoreHalfNum(arr1));
40.最小的个数
function partition(arr,start,end){
if(arr.length<1||start<0||end>=arr.length)
console.log("Invalid");
var index=Math.floor(Math.random()*(end-start+1));
[arr[index],arr[end]]=[arr[end],arr[index]];
var small=start-1;
for(var index=start;index<end;++index){
if(arr[index]<arr[end]){
++small;
if(small!=index){
[arr[small],arr[index]]=[arr[index],arr[small]];
}
}
}
++small;
[arr[small],arr[end]]=[arr[end],arr[small]];
return small;
}
function GetNum(arr,k){
if(arr.length<1)
return;
var start=0,end=arr.length-1;
var index=partition(arr,start,end);
while(index!=k-1){
if(index>k-1){
end=index-1;
index=partition(arr,start,end);
}else{
start=index+1;
index=partition(arr,start,end);
}
}
for(var i=0;i<k;i++){
console.log(arr[i]);
}
}
var arr=[5,3,7,2,9,0,5,6,4,8,2];
GetNum(arr,3);
42.连续子数组的最大和
function findAdd(arr){
if(arr.length<1)
return;
var result=0,startNum=arr[0];
for(var i=0;i<arr.length;i++){
if(result<=0){
result=arr[i];
}else{
result+=arr[i];
}
if(result>startNum){
startNum=result;
}
}
return startNum;
}
arr=[1,-2,3,10,-4,7,2,-5];
console.log(findAdd(arr));
43.1-n整数中1出现的次数
function NumberOf1Between1AndN(n){
if(n<0) return 0;
var high,low,cur,i=1;
high=n;
var count=0;
while(high!==0){
high=parseInt(n/Math.pow(10,i));
temp=n%Math.pow(10,i);
cur=parseInt(temp/Math.pow(10,i-1));
low=temp%Math.pow(10,i-1);
if(cur===1){
count+=high*Math.pow(10,i-1)+low+1;
}else if(cur<1){
count+=high*Math.pow(10,i-1);
}else{
count+=(high+1)*Math.pow(10,i-1);
}
i++;
}
return count;
}
console.log(NumberOf1Between1AndN(23));
44.数字序列中某一位的数字
function printMinNumber(arr){
if(arr.length<1)
return "";
var newArr=[];
for(var i=0;i<arr.length;i++){
newArr.push(arr[i]+"");
}
newArr.sort((a,b)=>{
return a+b>b+a?1:0;
});
console.log(newArr);
var result="";
for(var j=0;j<newArr.length;j++){
result+=newArr[j];
}
return result;
}
console.log(printMinNumber([1,3,32,321]));