java中的異或問題代碼解析
java的位運算符中有一個叫異或的運算符,用符號(^)表示,其運算規(guī)則是:兩個操作數(shù)的位中,相同則結(jié)果為0,不同則結(jié)果為1。下面看一個例子:
public class TestXOR{ public static void main(String[] args){ int i = 15, j = 2; System.out.println("i ^ j = " + (i ^ j)); } }
運行結(jié)果是:i^j=13.
分析上面程序,i=15轉(zhuǎn)成二進制是1111,j=2轉(zhuǎn)成二進制是0010,根據(jù)異或的運算規(guī)則得到的是1101,轉(zhuǎn)成十進制就是13.
利用這個規(guī)則我們可以靈活運用到某些算法。比如,假定有2K+1個數(shù),其中有2k個相同,需要找出不相同的那個數(shù),比如:2、3、4、4、3、5、6、6、5。我們利用異或運算符就可以這樣寫:
public class TestXOR{ public static void main(String[] args){ int[] array = {2,3,4,4,3,5,6,6,5}; int v = 0; for (int i = 0;i < array.length;i++) { v ^= array[i]; } System.out.println("只出現(xiàn)一次的數(shù)是:" + v); } }
結(jié)果是:只出現(xiàn)一次的數(shù)是2.
我們就是巧用異或運算符的規(guī)則,得出一個數(shù)和0異或還是自己,一個數(shù)和自己異或是0的原理。
上述計算方式:v=2^3^4^4^3^5^6^6^5;
根據(jù)交換律以及上述規(guī)則
可以推出只出現(xiàn)一次的數(shù)(需滿足前提條件2k個相同)
總結(jié)
以上就是本文關(guān)于java中的異或問題代碼解析的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!
相關(guān)文章
java抓取鼠標(biāo)事件和鼠標(biāo)滾輪事件示例
這篇文章主要介紹了java抓取鼠標(biāo)事件和鼠標(biāo)滾輪事件示例,需要的朋友可以參考下2014-05-05SpringCloud輪詢拉取注冊表與服務(wù)發(fā)現(xiàn)流程詳解
這篇文章主要介紹了SpringCloud輪詢拉取注冊表與服務(wù)發(fā)現(xiàn),現(xiàn)在很多創(chuàng)業(yè)公司都開始往springcloud靠了,可能是由于文檔和組件比較豐富的原因吧,畢竟是一款目前來說比較完善的微服務(wù)架構(gòu)2022-11-11Spring Boot 配置和使用多線程池的實現(xiàn)
這篇文章主要介紹了Spring Boot 配置和使用多線程池的實現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-06-06Springboot項目對數(shù)據(jù)庫用戶名密碼實現(xiàn)加密過程解析
這篇文章主要介紹了Springboot項目對數(shù)據(jù)庫用戶名密碼實現(xiàn)加密過程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-06-06Java中jqGrid 學(xué)習(xí)筆記整理——進階篇(二)
這篇文章主要介紹了Java中jqGrid 學(xué)習(xí)筆記整理——進階篇(二)的相關(guān)資料,需要的朋友可以參考下2016-04-04解決idea npm:無法將“npm”項識別為cmdlet、函數(shù)、腳本文件或可運行程序的名稱問題
在IDEA中運行npm命令時出現(xiàn)無法識別的錯誤,通常是由于npm環(huán)境變量配置不正確引起,解決方法包括以管理員身份運行IDEA,確認(rèn)node和npm是否正確安裝及配置環(huán)境變量,需要在系統(tǒng)環(huán)境變量中添加node.js的安裝路徑,并設(shè)置npm的全局模塊和緩存路徑2024-10-10