【Python位運算】——左移操作(<<)右移操作>>

目錄

左移操作

右移操作

其他博主的理解

應用——力扣題目78. 子集

解法

深度優先搜索

位運算

參考文獻


左移操作


# 左移操作,左移一位相當于乘以b,a<<b,a' = a*(2^b)

print(2<<3) # 2*2^3 = 16,2的二進制10,向左移動3位后10000
print(2<<1) # 2*2^1 = 4
print(3<<4) # 3*2^4 = 48,3的二進制為11,向左移動四位后110000

16
4
48

右移操作

# 右移操作,右移一位相當于除以b,a<<b,a' = a//(2^b)注意這里是整除,當向右移動位數大于能移動的位數時,置為0【可以理解為會將尾巴截掉】
?

print(2>>3) # 2//2^3 = 0,2的二進制10,向右最多移動2位后,所以多移動無疑為0
print(2>>1) # 2*2^1 = 4,向右移動一位為01,
print(3>>4) # 3*2^4 = 48,3的二進制為11,向右移動四位后00
print(3>>1) # 3*2^4 = 48,3的二進制為11,向右移動一位后為01

0
1
0
1

其他博主的理解

?>> 和 <<都是位運算,對二進制數進行移位操作。
<< 是左移,末位補0,類比十進制數在末尾添0相當于原數乘以10,x<<1是將x的二進制表示左移一位,相當于原數x乘2。比如整數4在二進制下是100,4<<1左移1位變成1000(二進制),結果是8。
>>是右移,右移1位相當于除以2。
而>>=和<<=,就是對變量進行位運算移位之后的結果再賦值給原來的變量,可以類比賦值運算符+=和-=可以理解。
比如x>>=2, 就是把變量x右移2位,再保留x操作后的值。

應用——力扣題目78. 子集

78. 子集——力扣題目

給你一個整數數組 nums ,數組中的元素 互不相同 。返回該數組所有可能的子集(冪集)。

解集 不能 包含重復的子集。你可以按 任意順序 返回解集。

示例 1:

輸入:nums = [1,2,3]
輸出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]

示例 2:

輸入:nums = [0]
輸出:[[],[0]]

提示:

??? 1 <= nums.length <= 10
??? -10 <= nums[i] <= 10
??? nums 中的所有元素 互不相同

解法

https://leetcode-cn.com/problems/subsets/solution/hui-su-python-dai-ma-by-liweiwei1419/

深度優先搜索

class Solution:# 深度優先搜索# 執行用時:36 ms, 在所有 Python3 提交中擊敗了85.39% 的用戶def subsets(self, nums):res = []sub = []n = len(nums)def dfs(index,sub):if index == n:res.append(sub[:])return# 不選擇indexdfs(index+1,sub)# 選擇sub.append(nums[index])dfs(index+1,sub)sub.remove(nums[index])dfs(0,sub)return res

位運算

記原序列中元素的總數為 nnn。原序列中的每個數字 aia_iai? 的狀態可能有兩種,即「在子集中」和「不在子集中」。我們用 111 表示「在子集中」,000 表示不在子集中,那么每一個子集可以對應一個長度為 nnn 的 0/10/10/1 序列,第 iii 位表示 aia_iai? 是否在子集中。

例如,n=3,a={1,2,3}:

可以發現 0/1 序列對應的二進制數正好從 0 到2^(n - 1)。我們可以枚舉 mask∈[0,2^(n?1)],mask的二進制表示是一個 0/1 序列,我們可以按照這個 0/1 序列在原集合當中取數。當我們枚舉完所有 2n2^n2n 個 mask\textit{mask}mask,我們也就能構造出所有的子集。

?這里其實有規律,首先是如果一個集合是由n個無重復數字組成的,那么他的子集個數為2^n,因此我們可以通過兩次遍歷,一個用于遍歷子集數,一個用于遍歷每個子集代表的二進制

class Solution:def subsets(self, nums: List[int]) -> List[List[int]]:size = len(nums)n = 1 << sizeres = []for i in range(n):cur = []for j in range(size):if i >> j & 1:cur.append(nums[j])res.append(cur)return res

參考文獻

https://zhidao.baidu.com/question/310628609.html

https://www.zhihu.com/question/397471252

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/255908.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/255908.shtml
英文地址,請注明出處:http://en.pswp.cn/news/255908.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

sql中字段名中包含特殊字符的查詢方法

sql中字段名章包含特殊字符的查詢方法&#xff1a;例如包含""&#xff0c;student表中字段為&#xff1a;id“學號”、name"姓名"。 解決辦法&#xff1a;用英文下的 ""&#xff08;Tab鍵上面那個鍵,不需要shift&#xff09;把字段名包起來。如&…

tomcat Server.xml Context配置

有時候需要在tomcat里面做特殊的配置&#xff0c;來進行訪問&#xff1a; 例如你的程序 名字是hello端口是80 這時候你要訪問你的程序 就要用 localhost/hello 來訪問了。 但是怎么直接用 localhost來訪問呢&#xff1f;就需要進行tomcat 的配置了呢 看以下配置&#xff1a;to…

絕望,絕望、希望

晚上&#xff0c;經歷了一場小小的絕望&#xff0c;因為在論文方面&#xff0c;經過一些實踐檢驗&#xff0c;我發現之前所提出的理論竟然差別太大&#xff0c;這件事情讓人感到絕望&#xff0c;但是&#xff0c;也只有被逼繼續前行&#xff0c;沒有退路&#xff0c;前行才能慢…

【Python數據結構】——二叉查找樹(查找、構建、刪除、插入、打印)

#!/usr/bin/env python # -*- coding: utf-8 -*- # Time : 2021/7/15 0:34 # Author : linlianqin # Site : # File : 二叉查找樹類實現&#xff08;查找、創建、刪除、插入、遍歷&#xff09;.py # Software: PyCharm # description:class TreeNode:def __init__(s…

ABB RAPID SOCKET編程

相傳在2009年6月11日&#xff0c;微博的鼻祖t-w-i-t-t-e-r還沒有被封鎖的時候&#xff0c;于仁頗黎寫了了一個東西可以將staubli機器人在運行時的狀態&#xff0c;實時發送上去&#xff0c;可以被實時的查看&#xff0c;任何一個人都可以查看&#xff0c;于是就有了這個名為TWI…

Plupload文件上傳組件使用API

Plupload有以下功能和特點&#xff1a; 1、擁有多種上傳方式&#xff1a;HTML5、flash、silverlight以及傳統的<input type”file” />。Plupload會自動偵測當前的環境&#xff0c;選擇最合適的上傳方式&#xff0c;并且會優先使用HTML5的方式。所以你完全不用去操心當前…

廣告主產品推詞中的NLP

加詞&#xff0c;加產品&#xff0c;調價是廣告主的核心問題&#xff0c;為了解決廣告主加詞的問題在阿里巴巴以及速賣通的賬戶后臺提供了加詞利器——先知&#xff0c;一鍵解決廣告主煩惱&#xff0c;從此不再為加詞而憂愁。一 引言 在目前付費搜索引擎中&#xff0c;買詞和競…

Android 動態設置 layout_centerInParent

RelativeLayout.LayoutParams rp new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);rp.addRule(RelativeLayout.CENTER_IN_PARENT);記錄一下轉載于:https://www.cnblogs.com/IWings/p/6097134.html

tidevice.exceptions.MuxServiceError: Could not start service: com.apple.testmanagerd.lockdown.secure

錯誤是在進行利用pycharm IDE和airtest框架進行蘋果手機自動化測試遇到的 錯誤具體如下 [I 210715 10:32:34 _device:572] ProductVersion: 14.6 [I 210715 10:32:34 _device:551] Download https://tool.appetizer.io/iGhibli/iOS-DeviceSupport/raw/master/DeviceSupport/14…

機器人 工具坐標系的標定

概念 工具坐標系是把機器人腕部法蘭盤所握工具的有效方向定為Z軸&#xff0c;把坐標定義在工具尖端點&#xff0c;所以工具坐標的方向隨腕部的移動而發生變化。 工具坐標的移動&#xff0c;以工具的有效方向為基準&#xff0c;與機器人的位置、姿勢無關&#xff0c;所以進行相…

Linux內核分析— —計算機是如何工作的(20135213林涵錦)

實驗部分 &#xff08;以下命令為實驗樓64位Linux虛擬機環境下適用&#xff0c;32位Linux環境可能會稍有不同&#xff09; 使用 gcc –S –o main.s main.c -m32命令編譯成匯編代碼&#xff0c; int g(int x){ return x 6;} int f(int x){ return g(x);} int main(void){ r…

apache域名跳轉

①編輯虛擬主機配置文件/usr/local/apache2.4/conf/extra/httpd-vhosts.conf如下<VirtualHost *:80>DocumentRoot "/data/wwwroot/111.com"ServerName 111.comServerAlias www.example.com 2111.com.cnErrorLog "logs/111.com-error_log"CustomLog …

php 畫圖片2

<?php// 使用php操作gd庫做圖// 1. 創建一個畫布資源$im imagecreatetruecolor(200, 50);// 2. 創建背景色// 2.1 得到背景顏色$bg_color imagecolorallocate($im, mt_rand(200, 255), mt_rand(200, 255), mt_rand(200, 255));// 2.2 填充畫布imagefill($im, 0, 0, $bg_c…

ABB機器人ROBOTSTUDIO中軌跡與二次開發的問答

問&#xff1a; 在視頻學習里&#xff0c;robotstudio可以提取物體的某條輪廓來直接生成路徑。請問&#xff0c;1.如果要提取的是模型兩邊的中心線&#xff0c;也能直接生成路徑嗎&#xff1f;2.robotstudio有二次開發的功能嗎&#xff0c;比如對數據進行運算。我也不知道我說的…

【Python數據結構】——二叉平衡樹AVL(查找、構建、刪除、插入、打印、遍歷)

#!/usr/bin/env python # -*- coding: utf-8 -*- # Time : 2021/7/28 20:57 # Author : linlianqin # Site : # File : 二叉平衡樹專題&#xff08;創建、插入、查找&#xff09;.py # Software: PyCharm # description:二叉平衡樹的特點&#xff1a;在二叉查找樹的…

隨筆速記

LVM增加與縮小Swap分區操作 http://blog.sina.com.cn/s/blog_5f2ca1ed0101ebw8.html Ubuntu刪除多余內核 # dpkg --get-selections | grep linux # apt-get purge linux-headers-3.0.0-12 linux-image-3.0.0-12-generic # update-grub Ubuntu清理安裝包、已卸載軟件、已卸載軟件…

【測試開發】測試用例講解

文章目錄 目錄 文章目錄 前言 一、測試用例的基本要素 二、測試用例的設計方法 1.基于需求的設計方法 對日歷根據web界面的功能布局分析出的功能框圖如下&#xff1a; 繼續舉一個例子百度云盤非功能測試的案例&#xff1a; 2.等價類 3.邊界值 5.正交表 6.場景設計法 7…

Linux下進行Web服務器壓力(并發)測試工具http_load、webbench、ab、Siege、autobench簡單使用教程(轉)...

一、http_load 程序非常小&#xff0c;解壓后也不到100K http_load以并行復用的方式運行&#xff0c;用以測試web服務器的吞吐量與負載。但是它不同于大多數壓力測試工 具&#xff0c;它可以以一個單一的進程運行&#xff0c;一般不會把客戶機搞死。還可以測試HTTPS類的網站請求…

【Python數據結構】——并查集的實現(查找、合并、集合、實例)

#!/usr/bin/env python # -*- coding: utf-8 -*- # Time : 2021/7/30 23:12 # Author : linlianqin # Site : # File : 并查集專題&#xff08;合并、查找、集合&#xff09;.py # Software: PyCharm # description: 并查集其實就是多個數組&#xff0c;每一個數組都…

如何實現ABB機器人與老式焊機的連接控制

問題&#xff1a; 請教一個機器人與老式焊機如何連接&#xff0c;如何設置。 我現在是用SET指令設DO為1再外接繼電器來控制焊機工作的&#xff0c;用RESET指令來使焊機停止工作的。現在可 以焊接&#xff0c;但是如果中間停止或機器人報錯停止不動&#xff0c;焊機始終處于工作…