㈠ java編程 將一個數組中的值按逆序重新存放。如原來的順序為4,1,3,5,9,2,1,到倒置後順序為1,2,9,5,3,1,4
結果如圖所示,代碼在下面。不明白的地方可以追問。
publicclassHelloWorld{
publicstaticvoidmain(String[]args){
int[]a=newint[]{4,1,3,5,9,2,1};
intt;
for(inti=0;i<a.length/2;i++){
t=a[i];
a[i]=a[a.length-1-i];
a[a.length-1-i]=t;
}
for(inti=0;i<a.length;i++){
System.out.print(a[i]+",");
}
}
}
㈡ java中怎麼將字元串數組中的重復的元素去掉,但是還是保留一個。
import java.util.*;
class BaiDu
{
public static void main(String[] args)
{
TreeSet<String> tr = new TreeSet<String>();
String[] s ={"11","22","22","33","33","33"};
System.out.print("====處理前=======");
for(int i=0;i<s.length;i++){
System.out.print(s[i]+" ");
tr.add(s[i]);
}
String[] s2= new String[tr.size()];
System.out.println("=====處理後======");
for(int i=0;i<s2.length;i++){
s2[i]=tr.pollFirst();//從TreeSet中取出元素重新賦給內數組容
System.out.print(s2[i]+" ");
}
}
}
㈢ 如何用java倆個數組m,n,按從大到小順序排好,將mn合並,重新排好
package daily;
public class Test {
public static void main(String[] args) {
int[] m = new int[] { 16, 10, 9, 5, 3 };
int[] n = new int[] { 10, 9, 8, 6, 1 };
int[] A = new int[m.length + n.length];
merge(m, n, A);
for (int i = 0; i < A.length; i++)
System.out.println(A[i]);
}
public static void merge(int[] m, int[] n, int[] A) {
int i = 0, j = 0, k = 0;
while (i < m.length && j < n.length) {
if (m[i] > n[j]) {
A[k++] = m[i++];
} else {
A[k++] = n[j++];
}
}
// 如何數組m還沒有合並完成
while (i < m.length)
A[k++] = m[i++];
// 如何數組n還沒有合並完成
while (j < n.length)
A[k++] = n[j++];
}
}
㈣ 一個java編程題,怎麼求出數組中重復數字的出現次數,並按次數從大到下排序
#include <iostream>#include <string>#include <fstream>using namespace std;int count=0;void countNum(int a[],int start,int finish){//cout<<start<<" "<<finish<<" ";int middle=(start+finish)/2;if(start>finish)return ;if(a[middle]==2){count++;countNum(a,start,middle-1);countNum(a,middle+1,finish);//cout<<"get here"<<middle<<endl;}else if(a[middle]>2){countNum(a,start,middle-1);}else{
countNum(a,middle+1,finish);
}while(!inf.eof())
{inf>>s[i];i++;}//int s[]={1,2,2,2,3};int start=0;//,finish=NUM-1;countNum(s,start,i-1);cout<<count<<endl;}(4)java數組排重擴展閱讀
#include<iterator>
template<typenamebiIter>
voidinsertion_sort(biIterbegin,biIterend)
{
typedeftypenamestd::iterator_traits<biIter>::value_typevalue_type;
biIterbond=begin;
std::advance(bond,1);
for(;bond!=end;std::advance(bond,1)){
value_typekey=*bond;
biIterins=bond;
biIterpre=ins;
std::advance(pre,-1);
while(ins!=begin&&*pre>key){
*ins=*pre;
std::advance(ins,-1);
std::advance(pre,-1);
}
*ins=key;
}
}
㈤ Java如何將數組中具有相同的元素都刪去
ArrayLista=newArrayList(數組);
for(inti=0;i<a.size();i++){
Objectobj=數組[i];
if(a.contains(obj)){
a.remove(i);
}
}
我答案錯了,不好意思,當初咋想的忘記了,抱歉。下面的其他匿名網友回答是正確的。另外附上我的修改。
一:利用set的唯一性解決
String[]strArr={"B","A","C","D","C","A"};
Set<String>strList=newHashSet(Arrays.asList(strArr));
System.out.println(strList.toString());
二:創建新的存儲單位,判斷是否重復後逐個增加
publicstaticvoidmain(String[]args){
String[]strArr={"B","A","C","D","C","A"};
List<String>strList=newArrayList<String>();
for(Stringstr:strArr){
if(strList.contains(str)){
continue;
}
strList.add(str);
}
System.out.println(strList.toString());
}
三:利用steam的distinct方法去重(jdk1.8的新特性)
String[]strArr={"B","A","C","D","C","A"};
List<String>strList=Arrays.asList(strArr);
strList=strList.stream().distinct().collect(Collectors.toList());
System.out.println(strList.toString());
㈥ java 中 統計出 數組中 相同的數字 和字元串
首先,用java中的有序的Array,你根據自己需要重寫compare方法,第一個問題就是按版照數字的大小排序權,第二就是按照字元個數排序(有序的Array在建立過程中已經正確排序了),這樣就得到兩個有序數組。
第二,太簡單了,自己思考吧。一個循環搞定,復雜度O(n)。
排序復雜度也是O(n),所以這兩個題復雜度都是O(n)