사용자 지정 클래스가 있고 해당 개체에 대해 XOR 연산을 수행하려고합니다.Java XOR 사용자 지정 개체
내가 생각할 수있는 유일한 방법은 객체를 문자열로 직렬화 한 다음 문자열을 바이트 배열로 변환 한 다음 각 요소에 대해 xor 연산을 수행하는 것입니다. 그런 다음 필요할 때 역 직렬화합니다. 예를 들어
은 - 온라인의 간단한 사건을 맡아>
좀 효율적인 구현을 위해 L1 XOR의 L2를 수행하고 싶지만 자바에서 그것을 할 수있는 청소기 방법을 찾을 수 없습니다class ListNode {
int val;
ListNode next;
ListNode(int val) {this.val = val;}
}
ListNode l1 = new ListNode(2);
ListNode l1 = new ListNode(3);
// ListNode x = l1^l2;
.
제안 사항?
편집 하나의 알고리즘에는 하나의 포인터 만 있지만 XOR 표현을 사용하면 2 개의 주소를 저장할 수 있습니다.
예를 들어, 내 목록은 5의 노드의 다음 포인터를 저장하는 대신 5-> 4-> 3-> 2 - >>>>> ... 입니다. 내가 뭘 하려는지 노드의 다음 필드에 previousPointer XOR nextNodePointer를 저장하는 것입니다.
그래서5's next pointer = NULL XOR 4
4's next pointer = 5 XOR 3..........
은 그래서, XOR이 경우 결과에 저장해야합니다. 이제 우리는 null이 머리보다 먼저 발생한다는 것을 알 수 있습니다. 4, 우리가 널 (null) XOR nextPointer을 수행 할 수 있습니다 머리의 (5의) 다음 노드에 액세스하려면, 그래서 기본적으로 우리는 '
5 next pointer = null XOR 4 as above/
to acess 4 do null XOR (null XOR 4) = 4
now to access 3 do 5 XOR (5 XOR 3) = 5...
그래서, 어디 선가이 XOR 정보를 저장하고 싶지만 내가 할 수있는 각 노드에 해당 할 것 새 목록 노드 하나를 만들어 저장하십시오. 주소 수준에서 어떻게 든 수행 할 수있어 결과가 위의 작업과 동일하게 유지됩니다.
두 가지 객체 참조를 XOR하는 것은 무엇을 의미할까요? – Sneftel
데이터 구조에 대해 XOR이 기대하는 것을 정의해야합니다. I1 xor I2의 예상 결과는 무엇입니까? – Ray
왜 관심이 있으십니까? –