算法入门1-数据结构

位运算

byte类型8位,short类型16,int 类型32位,long类型64位
<< :向左移动做位运算,剩余部分补零,如向左移动1 位(0001 ——> 0010 ) ,左移一位相当于乘2
》》 :右移,带符号右移,左边用符号补齐,负数的话用1补齐,正数用0补齐
》》》:不带符号右移,左边用0补齐
&:与,两个1为1(有0则0),否则都为0,如(1110 和0010 ——>0010)
| :或,有1则1,如(00110和11000 ——> 11110)

1:000000000000000000000001 第一位0表示正数
-1: 11111111111111111111111111111 第一位1表示负数,剩下的31位取反再+1

11111111111111111111111111111 
取反
00000000000000000000000000000
+1
00000000000000000000000000001 -> 1 
最后加上符号 == -1
1000000000000000000000000000是最小的负数
1是符号位 表示负数,剩下的取反
111111111111111111111111111+1,之后要进位
100000000000000000000000000

5的相反数:5 -5取反+1

数据结构

所有的数据结构都是由连续和跳转组成的
连续:可以参考数组,但不严禁
跳转:链表、二叉树,数据与数据直接并不是连续在一起的,而是由地址指向的

场景:
有一个数组arr =[11,15,5,3,1,8,69,44,56,741,321],我经常查询数组区间的累加和,如 arr[1,3]区间的值的和

思路一:将所有相加的可能性放在一张表中,每次读取区间的值即可,不用再计算了
思路二:将数组的每一个元素和前面元素的和放在新的H[R]数组中,每次取的时候剪掉前面不需要的和即可,H[R]-H[R-1]
在这里插入图片描述
——————
对比:①比②多占用n(数组长度)倍空间,但②需要取两次数据并且做一次运算

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值