[日常] Go語言聖經-指標對象的方法-bit數組習題2

來源:互聯網
上載者:User

標籤:app   bre   break   沒有   bit   add   word   nbsp   fun   

練習 6.3: (*IntSet).UnionWith會用|操作符計算兩個集合的交集,我們再為IntSet實現另外的幾個函數IntersectWith(交集:元素在A集合B集合均出現),DifferenceWith(差集:元素出現在A集合,未出現在B集合),SymmetricDifference(並差集:元素出現在A但沒有出現在B,或者出現在B沒有出現在A)。

*練習6.4: 實現一個Elems方法,返回集合中的所有元素,用於做一些range之類的遍曆操作。

練習 6.2: 定義一個變參方法(*IntSet).AddAll(...int),這個方法可以添加一組IntSet,比如s.AddAll(1,2,3)。

/*練習 6.3: (*IntSet).UnionWith會用|操作符計算兩個集合的交集,我們再為IntSet實現另外的幾個函數IntersectWith(交集:元素在A集合B集合均出現),DifferenceWith(差集:元素出現在A集合,未出現在B集合),SymmetricDifference(並差集:元素出現在A但沒有出現在B,或者出現在B沒有出現在A)。*///交集:元素在A集合B集合均出現func (s *IntSet) IntersectWith(t *IntSet) IntSet {        var result IntSet        for i, word := range s.words {                if i >= len(t.words) {                        break                }                   result.words = append(result.words, word&t.words[i])        }           return result}//差集:元素出現在A集合,未出現在B集合func (s *IntSet) DifferenceWith(t *IntSet) IntSet {        var result IntSet        for i, word := range s.words {                if i >= len(t.words) {                        result.words = append(result.words, word)                        continue                }                   result.words = append(result.words, word&(word^t.words[i]))        }           return result}//並差集:元素出現在A但沒有出現在B,或者出現在B沒有出現在Afunc (s *IntSet) SymmetricDifference(t *IntSet) IntSet {        var result IntSet        for i, word := range s.words {                if i >= len(t.words) {                        result.words = append(result.words, word)                        continue                }                   result.words = append(result.words, word^t.words[i])        }           return result}//練習6.4: 實現一個Elems方法,返回集合中的所有元素,用於做一些range之類的遍曆操作。func (s *IntSet) Elems() []int {        var result []int        for i, word := range s.words {                for j := 0; j < 64; j++ {                        if word&(1<<uint(j)) != 0 {                                 result = append(result, 64*i+j)                        }                   }           }           return result}//練習 6.2: 定義一個變參方法(*IntSet).AddAll(...int),這個方法可以添加一組IntSet,比如s.AddAll(1,2,3)。func (s *IntSet) AddAll(elements ...int) {        for _, r := range elements {                s.Add(r)        }}

  

[日常] Go語言聖經-指標對象的方法-bit數組習題2

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.