日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

LeetCode 1863. 找出所有子集的异或总和再求和(DFS)

發(fā)布時(shí)間:2024/7/5 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LeetCode 1863. 找出所有子集的异或总和再求和(DFS) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

    • 1. 題目
    • 2. 解題

1. 題目

一個(gè)數(shù)組的 異或總和 定義為數(shù)組中所有元素按位 XOR 的結(jié)果;如果數(shù)組為 空 ,則異或總和為 0 。

例如,數(shù)組 [2,5,6] 的 異或總和 為 2 XOR 5 XOR 6 = 1 。
給你一個(gè)數(shù)組 nums ,請(qǐng)你求出 nums 中每個(gè) 子集異或總和 ,計(jì)算并返回這些值相加之

注意:在本題中,元素 相同 的不同子集應(yīng) 多次 計(jì)數(shù)。

數(shù)組 a 是數(shù)組 b 的一個(gè) 子集 的前提條件是:從 b 刪除幾個(gè)(也可能不刪除)元素能夠得到 a 。

示例 1: 輸入:nums = [1,3] 輸出:6 解釋:[1,3] 共有 4 個(gè)子集: - 空子集的異或總和是 0- [1] 的異或總和為 1- [3] 的異或總和為 3- [1,3] 的異或總和為 1 XOR 3 = 20 + 1 + 3 + 2 = 6示例 2: 輸入:nums = [5,1,6] 輸出:28 解釋:[5,1,6] 共有 8 個(gè)子集: - 空子集的異或總和是 0- [5] 的異或總和為 5- [1] 的異或總和為 1- [6] 的異或總和為 6- [5,1] 的異或總和為 5 XOR 1 = 4- [5,6] 的異或總和為 5 XOR 6 = 3- [1,6] 的異或總和為 1 XOR 6 = 7- [5,1,6] 的異或總和為 5 XOR 1 XOR 6 = 20 + 5 + 1 + 6 + 4 + 3 + 7 + 2 = 28示例 3: 輸入:nums = [3,4,5,6,7,8] 輸出:480 解釋:每個(gè)子集的全部異或總和值之和為 480 。提示: 1 <= nums.length <= 12 1 <= nums[i] <= 20

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/sum-of-all-subset-xor-totals
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。

2. 解題

  • 窮舉法,DFS深度搜索,時(shí)間復(fù)雜度 O(2n)O(2^n)O(2n)
class Solution {int ans = 0; public:int subsetXORSum(vector<int>& nums) {dfs(nums, 0, 0);return ans;}void dfs(vector<int>& nums, int i, int XOR){if(i == nums.size()){ans += XOR;return;}dfs(nums, i+1, XOR);dfs(nums, i+1, XOR^nums[i]);} };

4 ms 6.9 MB C++


我的CSDN博客地址 https://michael.blog.csdn.net/

長按或掃碼關(guān)注我的公眾號(hào)(Michael阿明),一起加油、一起學(xué)習(xí)進(jìn)步!

總結(jié)

以上是生活随笔為你收集整理的LeetCode 1863. 找出所有子集的异或总和再求和(DFS)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。