【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.mzph.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;焊机始终处于工作…