摘要:
按照作者的说法,作为应届毕业生的我来说,如果能写出初级程序员的参考代码来解决面试题14就可认为过关了。。。参考代码如下:void ReorderOddEven_1(int *pData, unsigned int length){ if(pData == NULL || length == 0) return; int *pBegin = pData; int *pEnd = pData + length - 1; while(pBegin < pEnd) { // 向后移动pBegin,直到它指向偶数 while(pBe... 阅读全文
摘要:
#include "stdafx.h"#include using namespace std;//调整数组顺序使奇数位于偶数前void OddEvenSeparated(int* array, int length){ int indexfront = 0; int indexback = length - 1; bool bFinshed = false; while(indexfront 质量了。。。 阅读全文
摘要:
题目:以O(1)的时间复杂度删除单链表中的某个节点自己所写代码如下://以O(1)时间删除链表节点//要求:单向链表,头指针,待删节点指针//链表节点struct ListNode{ int m_nValue; ListNode* m_pNext;};//O(n)的解法:从头遍历,找到pToBeDeleted所指节点的前一个节点再进行删除void DeleteNode(ListNode** pListHead, ListNode* pToBeDeleted){ if(pListHead == NULL || *pListHead == NULL || pToBeDeleted... 阅读全文
摘要:
题目:打印从1~最大的n位数分析:知道陷阱在哪,即n很大时若用通常的int,long会溢出;想到用字符串解决,这涉及到字符转数字及反过来。 刚开始纠结于字符串怎么加1,想了片刻,觉得应该取出最后一位上的字符,转成数字+1再转成字符,但这就出现个问题:'9'加1后得到'10',这会产生进位。。。 到这思维就乱了。。。1、不断向前进位怎么解决?2、怎么判断到达最大值?在看过作者的代码后才豁然开朗。。。,解决方案:1、将进位与不进位分开,并且进位时设定nTakeOver用于下一字符的加,该过程用循环完成;2、同样判断最大值时,若第一位的数值=10了,那肯定已经到达最大 阅读全文