❶ java怎么实现逆序数计数,时间复杂度为O(n)
实现逆序数计数,时间复杂度为O(n)
publicclassMaxSumOfArray{
publicstaticvoidmain(Stringargs[]){
System.out.print(max_sum());
}
publicstaticintmax_sum(){
int[]array={-2,11,-4,13,-5,-2};
intmax_sum=0;
intarray_sum=0;
for(intj=0;j<array.length;j++)
{
array_sum+=array[j];
if(array_sum<0){
max_sum=0;
}
if(array_sum>max_sum)
{
max_sum=array_sum;
}
}
returnmax_sum;
}
}
❷ JAVA输入一个数字逆序输出
你的Java程序错在用变量a去计算位数,导致a为0,所以后面的结果都为0,应该把a赋给一个临时变量t,用t去计算位数。
还有你的逆序算法有问题,不但复杂,而且结果不是逆序。
我给你一个Java语言的逆序算法,你看看吧.
import java.util.Scanner;
public class nx{
public static void main(String[] args){
Scanner s=new Scanner(System.in);
int a=s.nextInt();
while(a>0){
System.out.print(a%10);
a=a/10;
}
}
}
❸ 怎样求数组中逆序数对的个数(java)
privatestaticintmethod(int[]array){
intcount=0;
for(inti=0;i<array.length;i++){
for(intj=i+1;j<array.length;j++){
if(array[i]>array[j]){
count++;
}
}
}
returncount;
}
privatestaticintcount=0;
privatevoidcount(int[]array){
intlength=array.length;
intleft=(int)(length/2+0.5);
intright=length/2;
int[]leftArray=newint[left];
int[]rightArray=newint[right];
System.array(array,0,leftArray,0,left);
System.array(array,left,rightArray,0,right);
if(left>1&&right>1){
count(leftArray);
count(rightArray);
}
Arrays.sort(leftArray);
Arrays.sort(rightArray);
mergeCount(leftArray,rightArray);
}
privatevoidmergeCount(int[]leftArray,int[]rightArray){
intleftLength=leftArray.length;
intrightLength=rightArray.length;
while(leftLength>0&&rightLength>0){
if(leftArray[0]>rightArray[0]){
count=count+leftLength;
System.array(rightArray,1,rightArray,0,rightLength-1);
rightLength--;
}else{
System.array(leftArray,1,leftArray,0,leftLength-1);
leftLength--;
}
}
}
privatestaticNode[]nodes;
privatestaticint[]tree;
privatestaticint[]reflect;
privatestaticintlength;
privatestaticintcountArray(int[]array){
init(array);
returndoCount();
}
privatestaticintdoCount(){
for(inti=0;i<length;i++){
reflect[nodes[i].pos]=i+1;
}
intcount=0;
for(inti=1;i<=length;i++){
update(reflect[i]);
count=count+i-sum(reflect[i]);
}
System.out.println(count);
returncount;
}
privatestaticvoidinit(int[]array){
length=array.length;
nodes=newNode[length];
reflect=newint[length+1];
tree=newint[length+1];
for(inti=0;i<length;i++){
nodes[i]=newNode();
nodes[i].value=array[i];
nodes[i].pos=i+1;
}
Arrays.sort(nodes,Comparator.comparingInt(o->o.value));
}
privatestaticintlowbit(intx){
returnx&(-x);
}
privatestaticvoipdate(intpos){
while(pos<=length){
tree[pos]+=1;
pos+=lowbit(pos);
}
}
privatestaticintsum(intpos){
intsum=0;
while(pos>0){
sum+=tree[pos];
pos-=lowbit(pos);
}
returnsum;
}
publicstaticvoidmain(Stringargs[]){
int[]array={40000000,20000000,3000000,534435454,732123434,167675688,46565656,8};
System.out.println(countArray(array));
}
//---------------//
classNode{
intvalue;
intpos;
}
❹ java怎么把字符串反序排列
StringBuilder类中来有一个方法reverse()可以实现源,像楼上的思路,是reverse这个方法具体实现。
不过他写的代码是不错。可是还少了一点东西。
String s = "abcdefg";
char [] chs = s.toCharArray();
for(int i=chs.length-1;i>0;i--){
System.out.print(chs[i]);
}
下面是调用API操作的。
String s = "abcdefg";
StringBuilder a = new StringBuilder(s);
System.out.println(a.reverse());
❺ 用java反序输出数组a[]={7,8,6,4,2}
publicclassNot{
/**
*反序输出数组里面的所有元素
*
*@paramarr
*/
publicstaticvoiddisplay(int[]arr){
if(null==arr){
return;
}
for(intindex=arr.length-1;index>=0;index--){
System.out.print(arr[index]+"");
}
}
publicstaticvoidmain(String[]args){
int[]arr={7,8,6,4,2};
display(arr);
}
}
❻ JAVA求四个正整数,逆序数1234。这些求余怎么求啊!
用求余数的方法,求一个四位正整数的逆序数的Java程序如下:
importjava.util.Scanner;
publicclassAA{
publicstaticvoidmain(String[]args){
Scannersc=newScanner(System.in);
System.out.print("请输入一个四位正整数:");
intn=sc.nextInt();
if(n<1000||n>9999){
System.out.println("您输入的不是一个四位正整数!");
}else{
inta,b,c,d,result;
a=n/1000;//取四位正整数的千位数
b=n/100%10;//取四位正整数的百位数
c=n/10%10;//取四位正整数的十位数
d=n%10;////取四位正整数的个位数
result=d*1000+c*100+b*10+a;
System.out.println("四位正整数"+n+"的逆序数为:"+result);
}
}
}
运行结果:
请输入一个四位正整数:1234
四位正整数1234的逆序数为:4321
❼ Java倒序输出数字
import java.util.Scanner;
public class test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
char[] ch = null;
System.out.println("请输入源一个十位数的数字");
String str = sc.next();
if (str.trim().length() != 10) {
System.out.println("你输入的数字格式不正确,清检查后重新输入");
}else {
ch = str.toCharArray();
}
for (int i = ch.length; i > 0 ; i--) {
System.out.print(ch[i-1]);
}
}
}
❽ java .给定一个五位数,然后把它逆序输出.
new StringBuilder().append(12345).reverse().toString()
❾ 在JAVA中实现数字的倒序输出
你的意思是1234然后输出4321吗?那可以把1234以string形式存放在一个数组里,然后int i=4;i>.0;i--形式输出,不就反过来了。
❿ 用java实现整型反序
publicclassNumberInverse
{
privateintamount;
privateStringstringOutput;
privateintinverseInt;
publicNumberInverse(intinput)
{
if(input>99999||input<-99999)
{
System.out.println("请输入一个小于5位的整数");
return;
}
//位数
amount=Integer.toString(Math.abs(input)).length();
//空格显示
for(charc:Integer.toString(Math.abs(input)).toCharArray())
{
if(stringOutput==null)
{
stringOutput="";
}
stringOutput+=String.format("%s%s",String.valueOf(c),
"");
}
stringOutput=input>=0?stringOutput:String.format(
"-%s",stringOutput);
//逆序
Strings="";
for(inti=this.getAmount()-1;i>=0;i--)
{
s+=String.valueOf((Integer.toString(Math.abs(input))
.toCharArray())[i]);
}
inverseInt=input>=0?Integer.parseInt(s):Integer
.parseInt(String.format("-%s",s));
}
publicintgetAmount()
{
returnamount;
}
publicStringgetStringOutput()
{
returnstringOutput;
}
publicintgetInverseInt()
{
returninverseInt;
}
/**
*测试
*
*@paramargs
*/
publicstaticvoidmain(String[]args)
{
NumberInversen=newNumberInverse(-32345);
System.out.println(n.getAmount());//打印位数
System.out.println(n.getStringOutput());//打印格式化字符串
System.out.println(n.getInverseInt());//打印逆序的数字
}
}