随笔分类 -  剑指offer

摘要:数组问题。输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。 C++版本 #include <iostream> #include <vector> #include <stack> #include <cstring> #inclu 阅读全文
posted @ 2020-07-28 16:55 程序员曾奈斯 阅读(101) 评论(0) 推荐(0)
摘要:分行从上到下打印二叉树(其实就是广度优先遍历),引用辅助队列。 不管是广度优先遍历一幅有向图还是一棵树,都要用到队列。首先把起始节点(对树而言是根节点)放入队列。接下来每次从队列的头部取出一个节点,遍历这个节点之后把它能到达的节点(对树而言是子节点)都依次放入队列。重复这个遍历过程,知道队列中的节点 阅读全文
posted @ 2020-07-28 15:17 程序员曾奈斯 阅读(125) 评论(0) 推荐(0)
摘要:从上到下打印二叉树(其实就是广度优先遍历),引用辅助队列。 不管是广度优先遍历一幅有向图还是一棵树,都要用到队列。首先把起始节点(对树而言是根节点)放入队列。接下来每次从队列的头部取出一个节点,遍历这个节点之后把它能到达的节点(对树而言是子节点)都依次放入队列。重复这个遍历过程,知道队列中的节点全部 阅读全文
posted @ 2020-07-28 09:04 程序员曾奈斯 阅读(121) 评论(0) 推荐(0)
摘要:栈的压入、弹出序列,很经典。 C++版本 #include <iostream> #include <vector> #include <stack> #include <cstring> #include <algorithm> using namespace std; // 定义辅助栈 stac 阅读全文
posted @ 2020-07-27 20:49 程序员曾奈斯 阅读(122) 评论(0) 推荐(0)
摘要:本题考查栈的使用。 C++版本 #include <iostream> #include <vector> #include <stack> #include <algorithm> using namespace std; // 定义数据栈 stack<int> stack1; // 定义辅助栈 阅读全文
posted @ 2020-07-27 15:10 程序员曾奈斯 阅读(88) 评论(0) 推荐(0)
摘要:本体考察数组的使用。注意本体使用vector的指针形式。 C++版 #include <iostream> #include <vector> #include <algorithm> using namespace std; void printMatrixInCircle(vector<vect 阅读全文
posted @ 2020-07-27 10:47 程序员曾奈斯 阅读(92) 评论(0) 推荐(0)
摘要:考察二叉树的遍历。判断前序遍历,与新增的前->右->左遍历结果是否一致。 C++版 #include <iostream> #include <algorithm> using namespace std; // 定义二叉树 struct TreeNode{ int val; struct Tree 阅读全文
posted @ 2020-07-25 21:53 程序员曾奈斯 阅读(148) 评论(0) 推荐(0)
摘要:考察二叉树的遍历。镜像对称,本解法使用的是前序遍历。 C++版 #include <iostream> #include <algorithm> using namespace std; // 定义二叉树 struct TreeNode{ int val; struct TreeNode* left 阅读全文
posted @ 2020-07-25 21:05 程序员曾奈斯 阅读(138) 评论(0) 推荐(0)
摘要:考察二叉树的遍历。 C++版 #include <iostream> #include <algorithm> using namespace std; // 定义二叉树 struct TreeNode{ int val; struct TreeNode* left; struct TreeNode 阅读全文
posted @ 2020-07-25 20:22 程序员曾奈斯 阅读(146) 评论(0) 推荐(0)
摘要:考察链表的操作,合并两个有序链表,合并后的链表仍是有序的。 C++版 #include <iostream> #include <algorithm> using namespace std; // 定义链表 struct ListNode{ int val; struct ListNode* ne 阅读全文
posted @ 2020-07-25 19:37 程序员曾奈斯 阅读(104) 评论(0) 推荐(0)
摘要:考察链表的操作,将单向链表反转,返回头节点。 C++版 #include <iostream> #include <algorithm> using namespace std; // 定义链表 struct ListNode{ int val; struct ListNode* next; Lis 阅读全文
posted @ 2020-07-25 19:20 程序员曾奈斯 阅读(109) 评论(0) 推荐(0)
摘要:考察链表的操作,找到单向链表中环的入口节点 C++版 #include <iostream> #include <algorithm> using namespace std; // 定义链表 struct ListNode{ int val; struct ListNode* next; List 阅读全文
posted @ 2020-07-25 18:39 程序员曾奈斯 阅读(122) 评论(0) 推荐(0)
摘要:考察链表的操作,注意使用一次遍历。相关题目:求链表的中间节点。 C++版 #include <iostream> #include <algorithm> using namespace std; // 定义链表 struct ListNode{ int val; struct ListNode* 阅读全文
posted @ 2020-07-25 16:23 程序员曾奈斯 阅读(97) 评论(0) 推荐(0)
摘要:考察字符串匹配:这个题目的指针运用特别有意思。注意第30行代码,传递的是数组的地址,那么在函数中就有可能改变当前指针的地址,后面再使用*str就可能不会再指向数组首位了。 C++版 #include <iostream> #include <algorithm> using namespace st 阅读全文
posted @ 2020-07-23 10:56 程序员曾奈斯 阅读(117) 评论(0) 推荐(0)
摘要:考察字符串匹配:正则表达式。 C++版 #include <iostream> #include <algorithm> using namespace std; bool matchCore(char str[], char pattern[]){ if(*str == '\0' && *patt 阅读全文
posted @ 2020-07-23 10:15 程序员曾奈斯 阅读(207) 评论(0) 推荐(0)
摘要:本题考查链表的操作。 C++版本 // 由于可能需要删除头结点,所以需要指向头结点的指针,即二级指针,有两种方式 // 方式一:参数声明为二级指针 ListNode** pHead; // 方式二:新建指向头结点的指针 ListNode* vHead = new ListNode(-1); vHea 阅读全文
posted @ 2020-07-22 21:57 程序员曾奈斯 阅读(134) 评论(0) 推荐(0)
摘要:本题考查大数问题。大数一般用字符串或者数组表示。注意,strlen()函数返回的值是数组'\0'前元素的个数,并不包括'\0'。 C++版本 #include <iostream> #include <algorithm> #include <cstring> using namespace std 阅读全文
posted @ 2020-07-22 16:54 程序员曾奈斯 阅读(399) 评论(0) 推荐(0)
摘要:本题考查大数问题。大数一般用字符串或者数组表示。注意,strlen()函数返回的值是数组'\0'前元素的个数,并不包括'\0'。 C++版本 #include <iostream> #include <algorithm> #include <cstring> using namespace std 阅读全文
posted @ 2020-07-22 16:31 程序员曾奈斯 阅读(259) 评论(0) 推荐(0)
摘要:本题考查大数问题。大数一般用字符串或者数组表示。注意,strlen()函数返回的值是数组'\0'前元素的个数,并不包括'\0'。 C++版本 #include <iostream> #include <algorithm> #include <cstring> using namespace std 阅读全文
posted @ 2020-07-19 17:14 程序员曾奈斯 阅读(137) 评论(0) 推荐(0)
摘要:本题考查库函数的实现原理,特别注意用O(logn)时间求a的n次方的优化算法。 C++版 #include <iostream> #include <cmath> using namespace std; bool g_InvalidInput = false; double powerWithUn 阅读全文
posted @ 2020-07-18 20:28 程序员曾奈斯 阅读(144) 评论(0) 推荐(0)