如何不用临时空间,把一个链表或数组反转?

fangliang510 2009-04-12 10:03:17
如题,面试时被问到这样的问题。
要是说出关键语句,虽然面试通过了,但是题目还是没明白
我想是不是反转输出,结果说不是。我就不会了
大家来看看怎么回答
...全文
364 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
cwjieNo1 2009-04-12
  • 打赏
  • 举报
回复
code=Java]
int m = 10 , n = 23;
m = m>n ?(m-n):(n-m);
n = m>n ?(m-n):(n-m);
m=m+n;
System.out.println("m="+m+" "+"n="+n);[
[/code]
butnet 2009-04-12
  • 打赏
  • 举报
回复
看看是不是这样

int i=10,j=20;
System.out.println(i+","+j);
i = j-i;
j=j-i;
i=j+i;
System.out.println(i+","+j);

就是不用临时空间,交换数据

你再加个循环就可以倒序了
qiying5001 2009-04-12
  • 打赏
  • 举报
回复
数组反向排序?? 链表这.....东西,,不可以用临时空间,那可以在原有链表上增加删除不???
xia0zhuge 2009-04-12
  • 打赏
  • 举报
回复
跟楼上学的

public class ReverseArray {
public static void main(String args[]){
int[] array = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int length = array.length;
for (int i=0; i < length / 2; i++){
array[i] = array[i] ^ array[length - i - 1];
array[length - i - 1] = array[i] ^ array[length - i - 1];
array[i] = array[i] ^ array[length - i - 1];
}

for (int i=0; i<array.length; i++)
System.out.print(array[i] +" ");
}
}
justinavril 2009-04-12
  • 打赏
  • 举报
回复
public class ReverseArray {
public static void main(String args[]){
int[] array = {1, 2, 3, 4, 5};

for (int i=0; i<array.length; i++){
for (int j=i+1; j<array.length; j++){
array[i] = array[i] ^ array[j];
array[j] = array[i] ^ array[j];
array[i] = array[i] ^ array[j];
}
}

for (int i=0; i<array.length; i++)
System.out.print(array[i] +" ");
}
}

捏造的信仰 2009-04-12
  • 打赏
  • 举报
回复
将数组元素交换,可以用 3 楼的方法避免临时空间;
将链表反转,可以用递归的方法避免临时空间。

62,635

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧