后台开发编程题目
笨鸟先飞飞飞
这个作者很懒,什么都没留下…
展开
-
奇数位递增,偶数位递减,将其变为升序链表(c++)
题目描述:一个链表,奇数位升序偶数位降序,让链表变成升序的。 比如:1 8 3 6 5 4 7 2 9,最后输出1 2 3 4 5 6 7 8 9 这道题目可以分为三个步骤, 一:对链表按照奇偶划分,分为一个升序链表 一个降序链表 二:翻转降序链表 三:合并两个升序链表 代码如下: #include <bits/stdc++.h> using namespace std; struct node{ node * next; int val; node(int v):val(v), next原创 2020-07-24 17:21:50 · 837 阅读 · 0 评论 -
c++实现atoi以及itoa函数
atoi函数 int atoi(char * str) 将字符串转为整形数,跳过前面的空格字符,直到遇上数字或者正负号才开始进行转换,而在遇到非数字或者字符’\0’结束转化,然后返回结果(int)。 当正溢出时返回INT_MAX,负溢出返回INT_MIN 题目思路比较简单,但是有挺多细节地方: 跳过前面的空格 使用stringstream >> string 正负号处理 将第一个有效字符单独拿出来讨论,为+,为-,为数字,为其他。 溢出处理 int的范围是[−231,231−1][-2^{31原创 2020-06-27 17:26:22 · 588 阅读 · 0 评论 -
求数组两个元素与(&)、异或操作最大值
问题一: 给定一个数组A[n],求解max(A[i] & A[j]), 其中i!=j 思路: 暴力解法时间复杂度是O(n2)O(n^2)O(n2), 那么能不能找到其他方法优化时间复杂度呢? 下面从不同角度出发去考虑: 规律法 对于&运算,如果想要最大化结果,那么尽可能使得高bit位的运算结果为1。 考虑最高位,很容易想到,只有最高位都为1的两个元素运算才能保证运算结果中最高位为1。 另外一种情况,还是针对最高位,如果找不到两个元素可以使得运算结果中的最高位为1呢,那么结果中的最高位只能原创 2020-06-25 17:53:12 · 1803 阅读 · 0 评论