查找连续序列缺失值

问题描述:给定n-1个整数的未排序数组,元素都是1~n的不同整数。寻找序列中缺失的整数。

思路:累加求和。首先求出数组的和sum,1~n的累加和(n+1)*n/2,而数组的缺失值就是二者之差。

int getMissing(int a[], int len)
{
  int sum = 0;
  
  for(int i = 0; i<len; i++)
    sum+=a[i];

  return (len+1)*len/2 - sum;
}


两个tips:

  • 如何不使用临时变量,交换两个数

异或的两条性质: k^k = 0, k^0 = k. 同时也满足交换律和结合律
a = a^b; 
b = a^b; // b = (a^b)^b = a^(b^b) = a^0 = a
a = a^b; // a = (a^b)^a = (a^a)^b = 0^b = b
  • 如何求两个大数的平均值,比如两个数的和太大,超出内存范围。

还是异或
(x&y)+((x^y)>>1)
// x&y 取出x与y二进制中都为1的所有位
// x^y 表示x与y中有一个是1的所有位,右移1位表示除以2
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 3,893评论 0 2
  • 题目:输入一个链表,输出该链表中倒数第k 个结点.为了符合大多数人的习惯,本题从1 开始计数,即链表的尾结点是倒数...
    3e1094b2ef7b阅读 127评论 0 0
  • 反转链表: 输入一个链表,反转链表后,输出新链表的表头。 思路:三指针abc一次排列,每次都将b指向a,然后各推进...
    Buyun0阅读 138评论 0 0
  • 15.反转链表输入一个链表,反转链表后,输出链表的所有元素。 16.合并两个排序的链表输入两个单调递增的链表,输出...
    IAmWhoAmI阅读 310评论 0 0
  • 同窗 文/庄晋玲 一日,我到吉水中学赠送书籍,回来的时候,校长回赠了一本《吉水中学校志》。校长说,你是这个学校毕业...
    庄晋玲阅读 1,516评论 1 0

友情链接更多精彩内容