当然了,O(1)空间复杂度是必须的...先看一个简单版:求出一个序列中一个只出现一次的数COJ 1217 奇数个的那个数http://122.207.68.93/OnlineJudge/problem.php?id=1217我们知道任意两个相同的数 异或结果为0 任何数与0异或结果是其本身 异或运算...
分类:
其他好文 时间:
2014-08-15 17:21:49
阅读次数:
194
题意:有一个集合和一个目标态goal,现在的状态是X=0,现在在集合中有一些数,经过每次X=X|a[i] 这种异或运算后,能使得X=goal,即达到目标态。问:最少删除集合中多少个元素,使得初始X=0,不能达到目标态。思路:SRM600 #div2 的A题做了好一会儿,主要是不知道怎么直接计算出那个...
分类:
其他好文 时间:
2014-08-14 16:33:58
阅读次数:
198
很容易想到为二进制的与或非。
加法分为三步:
1 各位相加不进位 0 + 0 =0, 0+1 = 1,1+0=1,1+1=1,很明显是异或运算
2 进位 1+1 =10进位,其余均不进位 ,进行左移动一位
3 一直循环
代码:
#include
using namespace std;
int sum(int data1,int data2){
int sum,carry;
...
分类:
其他好文 时间:
2014-08-07 19:02:00
阅读次数:
196
按位与(&)运算方式:对应的两个二进位均为1时,结果位才为1,否则为09(00001001)5(00000101)1(00000001)9&5=1按位或运算方式:对应的两个二进位只要有一个为1,结果位就为19(00001001)5(00000101)13(00001101)9|5=13按位异或运算方...
分类:
其他好文 时间:
2014-08-01 10:30:51
阅读次数:
153
题解 每一次我都对上一次的答案区间进行更新。其实更准确的说实际上是在检查是否需要放大区间。特别判断不在这个区间的x(相当于上文中的M(n, k)中的k)的情况,并且正确的赋值就行,也就是low = 0, high = n。其余的就判断与当前的区间的边界的距离,一个取小值,一个取大值。
当然不能忘记处理奇偶性。奇偶性和异或运算很类似,所以我是用异或搞的。
最后因为是一个公差为2的序列,但是我们只记录了区间和奇偶性。所以应当根据奇偶性去判断答案。
总体的时间复杂度就是O(N){计算区间} - O(N){计算答案...
分类:
其他好文 时间:
2014-07-23 13:32:26
阅读次数:
259
不用加减乘除做加法 代码(C)本文地址: http://blog.csdn.net/caroline_wendy题目: 写一个函数, 求两个整数之和, 要求在函数体内不得使用+, -, *, /四则运算符号.不能使用运算符号, 使用位运算, 第一步异或运算选位, 第二步与运算进位.代码:/*
* main.cpp
*
* Created on: 2014.7.13
* Auth...
分类:
其他好文 时间:
2014-07-16 14:21:52
阅读次数:
216
之前两次那个是异或运算处理,这次以为也是类似,但是没想出来。
高富帅想出来了算法,转为bitset,然后加起来 相同的话 要么0+0+0 要么1+1+1,最后剩下的 可以通过%3 算出0 或1,思想是这样,
其实也是bit运算,只不过不是异或这种一次运算O(1)这种,但是由于输入是int数组,-2^31~2^31-1 所以用32bit就可以表示了。
之前遇到,过几次错误,包括分配存储...
分类:
其他好文 时间:
2014-07-08 16:49:50
阅读次数:
180
题目:一个整型数组里除了两个数字之外,其余的数字都出现了两次,求这两个只出现一次的数字题解分析:首先看到数字出现1次,出现2次,应该联想到 异或运算:0^a = aa^a = 0如果数组中只有一个数字出现奇数次,其余都出现偶数次,我们就可以将这些数字全部异或,最后的结果即为所求(因为所有偶数次数字异...
分类:
其他好文 时间:
2014-06-27 14:20:36
阅读次数:
153
一、实例说明本实例通过位运算的异或运算符 “ ^ ” 把字符串与一个指定的值进行异或运算,从而改变每个字符串中字符的值,这样就可以得到一个加密后的字符串。当把加密后的字符串作为程序输入内容,异或运算会把加密后的字符串还原为原有字符串的值。效果图如下:二、实现过程 1 package com.itxx...
分类:
编程语言 时间:
2014-06-26 15:31:41
阅读次数:
193
高级运算符
位运算符
按位取反: ~
按位与运算: &
按位或运算: |
按位异或运算: ^
按位左移运算:
按位右移动算: >>
溢出运算符
自从swift里面提供了所谓的类型安全之后,我们就不能再用一个 Int.max 进行+1操作了,这样会导致报错。所以swift又提供了一个让我们在知道这会溢出的前提下,继续+1的溢出运算符,这听上去也不错。...
分类:
其他好文 时间:
2014-06-22 18:00:23
阅读次数:
283