自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

司曹龙的博客

多学习 多进步

  • 博客(52)
  • 资源 (2)
  • 收藏
  • 关注

原创 (三)剑指offer 44扑克牌顺子

思路:找出其中的王的个数(可以匹配任何数字) 求出间隔数 =nums[right]-nums[left]-1;如果差一的话代表正好 不需要补充 ;4 5之间不需要王来填补;4 6 之间需要王来匹配5代码:class Solution {public: bool IsContinuous( vector<int> nums ) { int...

2018-08-31 23:54:07 133

原创 (三)剑指offer 43翻转单词顺序列

“student. a am I”-----》“I am a student.”思路:反转字符串的思路反转整个字符串 反转每个单词class Solution { void my_reverse(string &str,int left,int right) { if(left>=right)return ; while(left<righ...

2018-08-31 23:24:29 95

原创 (三)剑指offer 42 左旋转字符串

如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!思路:我是用的字符串的方式 利用了库函数 当然 可以用字符交换的方式class Solution {public: /*string LeftRotateString(string str, int n) { int len=...

2018-08-31 17:56:32 116

原创 (三)剑指offer41 和为S的两个数字

题目描述输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。输出描述:对应每个测试案例,输出两个数,小的先输出。思路:双索引技术;但是我没有考虑越往中间两个数的乘积越大(所以只要满足两个数相加=s的时候就直接输出)这是利用了数组的递增的性质;所以可以修改一下我的代码;class Soluti...

2018-08-31 17:43:20 162

原创 (三)剑指offer40 和为S的连续正数序列(滑动窗口)

思路 就是求几个连续数组的和等于sum;设置变量 left=1;right=-1;滑动窗口的初始化为不可能取得的值;int cur=0; 循环的条件while(left<sum); if(cur<sum&&right+1<sum) cur+=++right; else  cur-=left++; if(cur==sum) temp.push_bac...

2018-08-31 17:05:27 136

原创 (三)剑指offer39 数组中只出现一次的数字

一个整型数组里除了两个数字之外,其他的数字都出现了偶数次。请写程序找出这两个只出现一次的数字。思路一:map啊 肯定用map啊超简单的;需要额外的空间;思路二:异或操作;先全体异或 求出异或的结果,按照第一个为1的位数 分为两部分  为1的one;与不为1的zero数组; 再从每一个数组中求出只出现一次的那个数;代码:class Solution {public: ...

2018-08-31 16:12:10 106

原创 (三)剑指offer38 平衡二叉树的判断

思路:根据定义判断  dis=(left-right)《=1是否成立;方法1:求出每个节点的高度;然后再判断,递归判断左右子树是否是平衡二叉树(重复遍历了节点)方法2:把求根节点的高度的时候 记录下求得的每一个结点的高度;然后判断左右子树是不是平衡的二叉树;再判断root是不是代码:class Solution {public: //method1 /*int ...

2018-08-31 15:55:21 95

原创 (三)剑指offer37 二叉树的深度

思路:典型的递归回溯题代码:/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*/class Solution {public: int Tree...

2018-08-31 15:51:09 104

原创 (三)剑指offaer36 数字在排序数组中出现的次数

思路1:map;需要遍历一遍 可能会超时;思路2:排序数组,体现出二分查找的优势;查找 k-0.5 k+0.5 应该插入的位置;两者相减就是;class Solution {public: int findPos(vector<int>data,int left,int right,double k) { while(left<...

2018-08-31 15:50:00 99

原创 (三)剑指offer35 两个链表的第一个公共节点

思路:首先遍历两个链表 求出两个链表的长度len1、len2;以及长度差dis; 让长的为list1 短的为list2; list1 走dis步; 然后list1 list2 同时走  当list1==list2 的时候找到这个公共节点;代码:class Solution {public: ListNode* FindFirstCommonNode( ListNode* ...

2018-08-31 15:45:37 96

原创 排序算法总结

貌似排序算法又全忘了,是怎么回事了这次特地整理了一下希望以后别再忘了 记住大体的流程也好/************************************************************************* > File Name: src/sort.cpp > Author: sicaolong > Mail: s...

2018-08-27 21:52:13 152

原创 2017 校招题幸运袋子(递归回溯法 DFS)

一个袋子里面有n个球,每个球上面都有一个号码(拥有相同号码的球是无区别的)。如果一个袋子是幸运的当且仅当所有球的号码的和大于所有球的号码的积。例如:如果袋子里面的球的号码是{1, 1, 2, 3},这个袋子就是幸运的,因为1 + 1 + 2 + 3 > 1 * 1 * 2 * 3你可以适当从袋子里移除一些球(可以移除0个,但是别移除完),要使移除后的袋子是幸运的。现在让你编程计算一下你可...

2018-08-15 18:00:24 632

原创 2017校招题目 混合颜料

题目描述你就是一个画家!你现在想绘制一幅画,但是你现在没有足够颜色的颜料。为了让问题简单,我们用正整数表示不同颜色的颜料。你知道这幅画需要的n种颜色的颜料,你现在可以去商店购买一些颜料,但是商店不能保证能供应所有颜色的颜料,所以你需要自己混合一些颜料。混合两种不一样的颜色A和颜色B颜料可以产生(A XOR B)这种颜色的颜料(新产生的颜料也可以用作继续混合产生新的颜色,XOR表示异或操作)。本...

2018-08-15 16:17:07 225

原创 剑指offer(三)33题 第一次只出现一次的字符

题目描述在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写). 思路 :哈希表啊  map啊  直接上代码:class Solution {public: int FirstNotRepeatingChar(string str) { ...

2018-08-15 11:00:36 131

原创 剑指offer(三) 32题 丑数

题目描述把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。思路可以从前遍历每个数  然后判断这个数 是不是丑数   这个会超时; 可以用丑数逐渐变大的过程 来找  进行n次 就可以  计算量减少 设置2 3 5 出现的次数cnt2 cnt3 cnt5=...

2018-08-15 10:52:20 108

原创 2017 校招题目 地牢逃脱 考察 BFS

题目描述给定一个 n 行 m 列的地牢,其中 '.' 表示可以通行的位置,'X' 表示不可通行的障碍,牛牛从 (x0 , y0 ) 位置出发,遍历这个地牢,和一般的游戏所不同的是,他每一步只能按照一些指定的步长遍历地牢,要求每一步都不可以超过地牢的边界,也不能到达障碍上。地牢的出口可能在任意某个可以通行的位置上。牛牛想知道最坏情况下,他需要多少步才可以离开这个地牢。输入描述:每个输入...

2018-08-13 21:31:44 162

原创 2017年校招题 合唱团(动态规划)

题目描述有 n 个学生站成一排,每个学生有一个能力值,牛牛想从这 n 个学生中按照顺序选取 k 名学生,要求相邻两个学生的位置编号的差不超过 d,使得这 k 个学生的能力值的乘积最大,你能返回最大的乘积吗?输入描述:每个输入包含 1 个测试用例。每个测试数据的第一行包含一个整数 n (1 <= n <= 50),表示学生的个数,接下来的一行,包含 n 个整数,按顺序表示每...

2018-08-13 16:48:34 212

原创 网易:[编程题] 一封奇怪的信

现在你需要用一台奇怪的打字机书写一封书信。信的每行只能容纳宽度为100的字符,也就是说如果写下某个字符会导致行宽超过100,那么就要另起一行书写信的内容由a-z的26个小写字母构成,而每个字母的宽度均会事先约定。例如字符宽度约定为[1,2,3,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],那么就代表'a'到'd'四个字母的宽度分别是1,2,3,4...

2018-08-08 20:13:10 770

原创 网易:[编程题] 糖果谜题

小明是幼儿园的一名老师。某天幼儿园园长给小朋友们每人发一颗糖果,小朋友们拿到后发现有一些同学拿到的糖果颜色和自己相同,有一些同学糖果颜色和自己不同。假定每个小朋友只知道有多少同学和自己拿到了相同颜色的糖果。上课后,有一部分小朋友兴奋的把这一结果告诉小明老师,并让小明老师猜一猜,最少有多少同学拿到了糖果。例如有三个小朋友告诉小明老师这一结果如下:其中第一个小朋友发现有1人和自己糖果颜...

2018-08-08 20:09:38 2782

原创 网易笔试题2:会话列表

小云正在参与开发一个即时聊天工具,他负责其中的会话列表部分。会话列表为显示为一个从上到下的多行控件,其中每一行表示一个会话,每一个会话都可以以一个唯一正整数id表示。当用户在一个会话中发送或接收信息时,如果该会话已经在会话列表中,则会从原来的位置移到列表的最上方;如果没有在会话列表中,则在会话列表最上方插入该会话。小云在现在要做的工作是测试,他会先把会话列表清空等待接收信息。当接收完大...

2018-08-07 21:38:07 805

原创 网易互娱笔试:电子时钟

输入描述:每个输入数据包含多个测试点。每个测试点后有一个空行。 第一行为测试点的个数T(T<=100)。 每个测试点包含1行,为一个字符串”HH:MM:SS”,表示钟表显示的时间。输出描述:对于每个测试点,输出一行。如果钟表显示的时间为真实存在的时间,则不做改动输出该时间,否则输出一个新的”HH:MM:SS”,表示修改最少的数字情况下,字典序最小的真实存在的时间。输入...

2018-08-07 21:30:55 1528 2

原创 143. Reorder List

题目 就是把一个链表的首节点与尾结点链接  次首位与次尾链接例如:1-->2-->3--->4  输出:1--4-->2-->3;思路 :将这个链表分为两部分 left 和right;(涉及到找到链表的中点的问题) 然后对右侧的进行一个reverse操作; 然后再分别从两个中取出元素;进行重新赋值到原来的链表中; 代码: /** ...

2018-08-07 10:12:54 95

原创 leetcode 148 重点中的重点 链表的排序

思路:时间复杂度 olongn  必须用 归并排序;归并排序的思想 就是分治的思想将整个链表分为两部分 ,假设这两部分是排序完成的就 直接 merge他们两个;需要几个函数 :get_mid找到链表的中间节点; merge()将两个有序的链表合并为一个链表CODE/** * Definition for singly-linked list. * struct Lis...

2018-08-07 10:12:47 192

原创 leetcode 147 Insertion Sort List

思路 :首先要知道插入排序的思想  就是从前往后遍历 当遇到一个数比前面的数小的时候 就把这个数 拿出来  把它插入它应该在的位置;所以 就要 当前结点的前一个结点的下一个结点 指向这个结点的下一个结点也就是pre-->cur--->pNext;pre->next=pNext;把cur这个结点拿出来 将它插入它应该在的位置;  需要从前遍历 如果结点比这个结点...

2018-08-07 10:12:36 136

原创 leetcode 24. Swap Nodes in Pairs 每两个结点反转一次

Given a linked list, swap every two adjacent nodes and return its head.Example:Given 1->2->3->4, you should return the list as 2->1->4->3.Note:Your algorithm should use only...

2018-08-07 10:12:29 149

原创 leetcode 82 82. Remove Duplicates from Sorted List II

Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.Example 1:Input: 1->2->3->3->4->4->5Output: 1-&gt...

2018-08-07 10:12:23 107

原创 leetcode 203. Remove Linked List Elements

思路:链表的删除 应该要建立一个虚拟节点/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {p...

2018-08-07 10:12:17 85

原创 445. 两数相加 II

给定两个非空链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储单个数字。将这两数相加会返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。进阶:如果输入链表不能修改该如何处理?换句话说,你不能对列表中的节点进行翻转。示例:输入: (7 -> 2 -> 4 -> 3) + (5 -> 6 -> 4)输出...

2018-08-07 10:12:03 574

原创 leetcode 2 链表中的两数之和;

给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807/** * Definition...

2018-08-07 10:11:50 337

原创 leetcode 328 328. Odd Even Linked List 将链表的奇数偶数位置分开

Given a singly linked list, group all odd nodes together followed by the even nodes. Please note here we are talking about the node number and not the value in the nodes.You should try to do it in p...

2018-08-06 20:57:49 424

原创 61. Rotate List

Given a linked list, rotate the list to the right by k places, where k is non-negative.Example 1:Input: 1->2->3->4->5->NULL, k = 2Output: 4->5->1->2->3->NULLExplan...

2018-08-06 20:35:33 110

原创 25. k个一组翻转链表

给出一个链表,每 k 个节点一组进行翻转,并返回翻转后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么将最后剩余节点保持原有顺序。示例 :给定这个链表:1->2->3->4->5当 k = 2 时,应当返回: 2->1->4->3->5当 k = 3 时,应当返回: 3->2-&gt...

2018-08-06 17:59:28 117

原创 leetcode 21 合并两个有序链表

直接上代码 就不解释了  意义不大;/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {pub...

2018-08-06 17:17:01 94

原创 leetcode 23. Merge k Sorted Lists 合并k个有序链表

Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.Example:Input:[  1->4->5,  1->3->4,  2->6]Output: 1->1->2->3->4-...

2018-08-06 17:13:15 159

原创 leetcode 19. Remove Nth Node From End of List 删除倒数第n个节点;

Given a linked list, remove the n-th node from the end of list and return its head.Example:Given linked list: 1->2->3->4->5, and n = 2.After removing the second node from the end, t...

2018-08-06 16:38:21 120

原创 leetcode 86. Partition List 将val值把分为左右两部分;

Given a linked list and a value x, partition it such that all nodes less than x come before nodes greater than or equal to x.You should preserve the original relative order of the nodes in each of t...

2018-08-06 16:13:36 116

原创 Leetcode 83. Remove Duplicates from Sorted List

Given a sorted linked list, delete all duplicates such that each element appear only once.Example 1:Input: 1->1->2Output: 1->2Example 2:Input: 1->1->2->3->3Output: 1-...

2018-08-06 15:23:47 73

原创 leetcode 92 Reverse Linked List II(反转m--n);

Reverse a linked list from position m to n. Do it in one-pass.Note: 1 ≤ m ≤ n ≤ length of list.Example:Input: 1->2->3->4->5->NULL, m = 2, n = 4Output: 1->4->3->2->5-...

2018-08-06 14:55:03 101

原创 leetcode206 链表的反转

Reverse a singly linked list.Example:Input: 1->2->3->4->5->NULLOutput: 5->4->3->2->1->NULLFollow up:A linked list can be reversed either iteratively or recursi...

2018-08-06 14:07:58 104

原创 leetcode 76. 最小覆盖子串 (数组中的问题 滑动窗口和查找表的组合)

给定一个字符串 S 和一个字符串 T,请在 S 中找出包含 T 所有字母的最小子串。示例:输入: S = "ADOBECODEBANC", T = "ABC"输出: "BANC"说明:如果 S 中不存这样的子串,则返回空字符串 ""。 如果 S 中存在这样的子串,我们保证它是唯一的答案。思路:首先处理特殊情况  字符串为空 已经s串小于t串的长度的情况; 再者将t中的...

2018-08-03 09:55:08 544

c++ STL模板

向量vector是一种随机访问的数组类型,提供了对数组元素的快速、随机访问以及在序列尾部快速、随机的插入和删除操作。它是大小可变的向量,在需要是可以改变其大小。 形式:

2017-11-08

STL标准模板库

C++ STL 向量vector是一种随机访问的数组类型,提供了对数组元素的快速、随机访问以及在序列尾部快速、随机的插入和删除操作。它是大小可变的向量,在需要是可以改变其大小。 形式:

2017-11-08

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除