세 번째 변수를 사용하지 않고 두 개의 변수를 숫자 값으로 교체해야합니다. 간단한 해결책은 무엇입니까?세 번째 변수를 사용하지 않고 교환하는 방법은 무엇입니까?
답변
우리는 방법 중 하나, 즉 산술 연산자를 사용하여 봅시다. 두 변수가 x = 50 및 y = 70이라고 가정하고 세 번째 변수를 사용하지 않고 x = 70 및 y = 50으로 만드는 두 변수의 값을 교환하는 방법을 살펴 보겠습니다. Y
X = X - -
• X = X + Y를 제공
주는 Y X 이것은 다음과 같은 산술 연산, 즉
X = X + Y
Y = X를 사용하여 수행 할 수 있습니다 = 70 + 50이므로 x는 120과 같습니다.
• y = x - y는 y의 값을 50으로 만듭니다.
• x = x - y는 x = 120 - 50이고 x의 값은 70이된다.
또 다른 인기있는 방법은 XOR 스와핑 전략입니다. http://en.wikipedia.org/wiki/XOR_swap_algorithm
여기에 MIPS 어셈블러에 있습니다. 첫 번째 해결책은 길고 나쁘다. 두 번째 XOR을 사용하는 것이 좋습니다.
addi $t0, $0, -5
addi $t1, $0, 15
add $t0, $t0, $t1
sub $t1, $t1, $t0
nor $t1, $0, $t1
addi $t1, $t1, 1
sub $t0, $t0, $t1
####
xor $t0, $t0, $t1
xor $t1, $t0, $t1
xor $t0, $t0, $t1
변수 유형에 따라 Interlocked.Exchange을 사용할 수 있습니다. 이것은 원자 연산을 사용하여 스왑을 수행합니다.
int x = 15;
int y = 5;
x = x + y;
y = x - y;
x = x - y;
넌
int A = ...;
int B = ...;
A = A^B;
B = A^B;
A = A^B;
@Bertrand, 방금 "마음 테스트"를했으며 여전히 괜찮다고 생각합니다. A가 B와 같으면 첫 번째 할당에서 A의 결과는 0이 될 것이고 B는 B가 0 인 XOR B가 할당 된 다음 A가 B가 다시 0 인 XOR B가 할당됩니다 (시작 A와 같음) . – Fede
A = 1, B = 1. 1 단계 : A = A^B = 1^1 = 0. Step2 : B = A^B = 0^1 = 1. Step3 : A = A^B = 0^1 = 1. 그것이 나에게 효과가있는 것처럼 보입니다. –
- 1. 값으로 변수를 참조로 사용하지 않고
- 2. 브라우저를 사용하지 않고 Flash를 사용하지 않고 글꼴을 포함시키는 방법은 무엇입니까?
- 3. 모든 매개 변수를 사용하지 않고 htaccess
- 4. 양식간에 데이터를 교환하는 방법은 무엇입니까?
- 5. 전역 변수를 사용하지 않고 두 함수에서 사용할 변수를 공유하십시오.
- 6. 함수를 사용하지 않고 변수를 하나씩 늘림
- 7. 디자인은 세 번째 정규형입니까?
- 8. 세 번째 점을 찾으십시오
- 9. AudioSystem을 사용하지 않고 FrameLength를 계산하는 방법은 무엇입니까?
- 10. DBUtils.ExecuteMap에서 세 번째 인수가 필요한 이유는 무엇입니까?
- 11. atan2를 사용하여 세 번째 점을 계산하는 방법은 무엇입니까?
- 12. Ruby on Rails에서 세 번째 수준의 nav를 추가하는 방법은 무엇입니까?
- 13. 위치 경로 이름의 세 번째 부분을 찾는 방법은 무엇입니까?
- 14. C에서 세 번째 DLL에서 두 DLL의 코드를 사용하는 방법은 무엇입니까?
- 15. 드릴 다운 테이블 뷰에 세 번째 옵션을 포함시키는 방법은 무엇입니까?
- 16. 0 카운트 항목을 잃지 않고 COUNT를 반환하는 SQL 문에서 세 번째 테이블을 조인하는 방법은 무엇입니까?
- 17. Drupal의 세 번째 인수로 필터링보기
- 18. 세 번째 열의 역 텍스트
- 19. 두 번째 또는 세 번째 사람의 의견?
- 20. 2 타이머를 교환하는 방법은 무엇입니까? Java GUI에서
- 21. 세 번째 정규형 (3NF)으로 분해
- 22. 세 번째 부분 앱 실행
- 23. 데이터베이스의 세 번째 정상적인 형식입니까?
- 24. 문자열 내에서 부분 문자열을 교환하는 방법은 무엇입니까?
- 25. qml 그리드에서 요소를 교환하는 방법은 무엇입니까?
- 26. 터미널을 사용하는 프로그램간에 데이터를 교환하는 방법은 무엇입니까?
- 27. wcf와 wpf간에 데이터를 교환하는 방법은 무엇입니까?
- 28. jQuery를 사용하지 않고 stopPropagation
- 29. Linq는 세 번째 클래스없이 다 대다 관계를 SQL로 내 데이터베이스에서
- 30. eval()을 사용하지 않고 배열의 내용을 변수로 사용하는 방법은 무엇입니까?
[제 3 변수를 사용하지 않고, 두 변수의 값을 바꿔]의 중복 가능성 (http://stackoverflow.com/questions/756750/swap-the XOR 함께 달성 두 번째 변수를 사용하지 않고 세 번째 변수를 사용하지 않고). 또한 [임시 변수를 사용하지 않고 두 개의 변수 교환] (http://stackoverflow.com/questions/804706/swap-two-variables-without-using-a-temp-variable) –
http://stackoverflow.com/questions/804706/swap-two-variables-using-a-temp-variable – Inisheer
@ 인터뷰 중 트릭 질문으로 사용하는 것을 보았습니다. * 증명할 의미가 무엇인지 모르겠지만 그것을 보았습니다. – ray