自定义博客皮肤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)
  • 收藏
  • 关注

原创 招银网络科技2021年提前批笔试题-Java方向

算法题洗牌输入n张牌,牌的数字范围在1-9,输入k,表示洗k次牌,接着输入n个数,表示牌的数字洗牌规则:首先将牌分为左右两堆,如果n是奇数,那么左边比右边多一张拍,比如有6张牌,牌的数字为1, 2,3,4,5,6;分为两堆,左边一堆为1,2,3,右边一堆为4,5,6;奇数次洗牌时,先放左边的牌,后放右边的牌,以此交叉放完,表示洗了一次牌;然后将牌重新分堆,再次洗牌;偶数次洗牌时,先放右边的牌,后方左边的牌,以此交叉放完,表示洗了一次牌;当洗了k次牌的时候,输出牌的顺序,数字以空格隔

2020-06-22 21:39:45 8368 2

原创 面试题51:数组中的逆序数

面试题51:数组中的逆序数求数组中的逆序数。思路:用归并排序的方式求逆序数,时间复杂度为O(nlogn)。class InversePairs_51 { public static void main(String[] args) { int[] arr = {14, 12, 15, 13, 11, 16, 9}; System.out.println(reversePairs(arr)); } private static int

2020-06-12 09:16:22 450

原创 Java中常用语法

Java中控制台常用输入输入一行Scanner in = new Scanner(System.in);String str = in.nextLine();

2020-06-07 21:19:18 296

原创 面试题44:数字序列中某一个的数字

面试题44:数字序列中某一个的数字题目:数字以123456789101112…………的格式徐磊话得到一个字符序列。在这个序列中,第5位(从0开始计数)是5,第13位是1,第十九位是4。请写一个函数,求任意第n位对应的数字。分析:规律:0-9:一共有10x1=10位,10-99:一共有(100-10)x2=180位,100-999:一共有(1000-100)x3=2700位按照1中的规律,可以先求出n位所对应的数字段,然后求出n位该数字段中第几个数字,然后找出第几位int pow(int a

2020-06-07 10:39:37 214

原创 面试题43:1~n整数中1出现的次数(有比剑指Offer更好懂的算法)

面试题43:1~n整数中1出现的次数题目:输入一个整数n,求1~n这n个整数的十进制表示中1出现的次数。思路1:遍历n个数,统计每个数中1出现的次数,时间复杂度O(nlongn),此方法不是最优//思路1int number1Between1AndNMethod1(int n){ if (n <= 0) return -1; int numbers = 0; for (int i = 0; i <= n; i++) {

2020-06-06 09:38:50 198

原创 Android中利用Messenger实现跨进程通信

Android中默认的情况下,一个应用运行在单独进程中,要实现多个进程中的通信,可以利用Messenger实现跨进程通信。以下写了一个例子来说明使用Messenger的基本步骤。1、Service端public class MessengerService extends Service { private static final String TAG = "MessengerService"; private static class MessengerHandler exten

2020-06-05 15:17:31 287

原创 面试题42:连续子数组的最大和

面试题42:连续子数组的最大和题目:输入一个整型数组,数组里有正数也有负数。数组中的一个或者连续多个整型组成的一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)思路:如果通过枚举所有子数组的和,则时间复杂度为O(n^2);该问题可以通过动态规划来完成。如果用f(i)表示以第i个数字结尾的子数组的最大和,那么我们需要求出max{f(i)},其中0 <= i <=n。则我们可以用递归公式求f(i):f(i)=arr[i],若i=0或f(i-1)<=0;f(i)=f

2020-06-03 21:38:44 106

原创 面试题40:最小k个数

面试题40:最小k个数题目:输入n个整数,找出其中最小的k个数思路:1、如果输入的数组可以改变,则基于第K个数来调整,是第k个数左边的数都小于第k个数,右边的数都大于第k个数;时间复杂度O(n)//思路1void printKMinNumberByMethod1(int arr[], int length, int k){ if (arr == NULL || length <= 0 || k <= 0 || k > length) { re

2020-06-02 21:18:45 130

原创 面试题39:数组中出现次数超过一半的数字

面试题39:数组中出现次数超过一半的数字题目:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字思路1: 如果这个数组有序,遍历一边并记录出现次数最多的数字,然后判断是否是出现的次数超过数组长度的一半;先排序再找,时间复杂度为O(nlogn)//思路1int findNumberMethod1(int arr[], int length){ if (arr == NULL || length <= 0) { return -1; }

2020-06-01 22:13:13 264

原创 面试题38:字符串的排列

面试题38:字符串的排列题目:输入一个字符串,打印出该字符串中字符的所有排列思路:把这个问题看成两部分:1、求出所有可能出现在第一个位置的字符,即把第一个字符和后面所有的字符交换;2、固定第一个字符,求出后面所有字符的排列;基于这种思想,通过递归可以完成;代码:#include <iostream>using namespace std;void printStringPermutation(char *str, char *begin);int main(){

2020-05-31 11:16:42 174

原创 面试题37:序列化二叉树

面试题:37:序列化二叉树序列化和反序列化二叉树思路:通过前序遍历的结构序列化二叉树,对于NULL指针,输出一个特殊符号, 反序列化时,同样采用前序遍历的结构反序列化,对于特殊符号,则表示是空指针由于c++学得不精,采用vector容器来装序列化和反序列化的结果//序列化void serializeBTree(TreeNode *root, vector<int> &data){ if (root == NULL) { //这里用-10000来代

2020-05-30 21:55:12 142

原创 二叉树的非递归遍历

二叉树的非递归遍历非递归前序遍历//非递归前序遍历:根-》左-》右,要点:用栈,先打印栈顶元素,出栈,先右进,再左进void traverseNodeInTreePreOrderNonRecrusive(TreeNode *root){ if (root == NULL) return; stack<TreeNode *> dataStack; dataStack.push(root); while (!dataStack.empt

2020-05-30 20:38:48 150

原创 面试题36:转换二叉搜索树为排序双向链表

面试题36:转换二叉搜索树为排序双向链表思路:1、二叉排序树的特点:左子树的所有节点的值都比根节点的值大,右子树的所有节点的值都比根节点的值小;2、根据这些特点,中序遍历二叉树就能得到有序的结果,所以通过中序遍历来转换这些结果。代码://转换二叉搜索树为排序双向链表TreeNode *convertBST(TreeNode *rootNode){ if (rootNode == NULL) { return NULL; } TreeNode *

2020-05-29 20:50:41 131

原创 面试题35:复杂链表的复制

面试题35:复杂链表的复制题目:请实现一个函数,复制一个复杂链表。在复杂链表中,每一个节点除了有一个next指针指向下一个节点,还有一个slbling指针指向链表中任意节点或者为空。思路:方式1:先复制每个节点,用next指针连接起来;然后对每个节点,再从头找它sibling 指针的指向;时间复杂度O(n^2);方式2:先复制每个节点,用next指针连接起来,并用哈希表存放原始复杂节点的sibling的指向;复制next完成以后,再用哈希链表来重建sibling重建复杂链表;时间复杂度O(n)

2020-05-28 23:32:00 120

原创 面试题34:二叉树中和为某一值的路径

面试题34:二叉树中和为某一值的路径输入一颗二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。从树的根节点开始王下一直到叶子节点所经过的节点形成一条路径。思路:通过递归的方式来访问树的节点,当访问到某个节点时,先判断它是否是叶子节点,如果叶子节点,判断所经历的节点之和是否等于给定的数,若等于,则打印出来。代码://打印树中等于targetValue的路径void printPathInTree(TreeNode *rootNode, int currentValue, int t

2020-05-28 21:32:33 94

原创 面试题33:二叉搜索数的后续遍历序列

面试题33:二叉搜索数的后续遍历序列输入一个整肃数组,判断该数组是不是某个二叉搜索树的后续遍历结果。如果是则返回true,否则返回false。假如输入的数组中任意两个数字都不相同.思路:1、二叉搜索树的特点:根节点的左子树的所有节点的值都比根节点的值小,右子树的所有节点的值都比根节点的值大;2、后续遍历的特点:左、右、根,所以遍历结果的最后一个节点一定是根节点,根据搜索二叉树的特点,遍历结果的前半段一定比根节点的值小,后边段一定比根节点的值大;根据这个特点,可以通过递归的方式来判断序列是否正确

2020-05-27 22:04:06 129

原创 面试题32:分层打印二叉树

面试题32:分层打印二叉树题目1:按层次从根节点打印二叉树,每一层分行打印思路:思路:用一个队列来辅助,打印某层时,把下一层的子节点加入到队列中,按照FIFO的原则,可以实现层次打印;要实现分行打印,用两个变量来记住本层的节点数和下一层的节点数代码://层级按行二叉树void printNodeInTreeHierachyInZStyle(TreeNode *root){ if (root == NULL) return; queue<TreeNode

2020-05-26 21:17:56 220

原创 面试题31:栈的压入、弹出序列

面试题31:栈的压入、弹出序列题目:输入两个整数序列,第一个序列表示栈的压入序列,请判断第二个序列是否是改压入序列的弹出顺序。栈中的数据不重复思路:建立一个辅助栈,把输入的第一个序列总的数字依次压入该辅助栈,并按照第二个序列的顺序从该栈中弹出如果下一个弹出的数字刚好是辅助栈顶的数字,那么直接弹出;如果下一个弹出的数字不在辅助栈的栈顶,则把压栈序列中还没入栈的数字压入辅助栈,直到把下一个需要弹出的数字压入辅助栈顶为止;如果所有的数字都压入辅助栈后任然没有找到要弹出的数字,那么该序列不可能是一个弹出序

2020-05-26 20:40:29 194

原创 面试题30:包含min函数的栈

面试题30:包含min函数的栈题目:定义栈的数据结构,请在该类型上实现栈的最小元素的min函数。在该栈中,调用min、push、pop的时间复杂杜都为O(1)思路:用双栈实现,一个用于装数据,一个用于装最小值代码:#include <iostream>#include <stack>using namespace std;template <typename T>class MinStack{private: stack<T>

2020-05-25 21:22:23 103

原创 面试题29:顺时针打印矩阵

面试题29:顺时针打印矩阵题目:输出一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。思路:矩阵从外向内,每一次打印顺时针打印一圈注意:停止打印的条件,某圈的次序要小于矩阵的行数和列数的一半,如果超过一半,就无法形成一个圈了代码://顺时针打印矩阵void printMatrixCicle(int matrix[][4], int rows, int cols){ if (matrix == NULL || rows <= 0 || cols <= 0)

2020-05-25 20:36:41 172

原创 面试题28:对称二叉树

面试题28:对称二叉树题目:请判断一个函数,用来判断一颗二叉树是不是对称的。如果一棵二叉树和它的镜像是一样的,那么它是对称的。思路:自定义一种对称前序遍历:先遍历根节点,在遍历右子节点,最后遍历左子节点 如果前序遍历和对称前序遍历结果一样,那么这颗二叉树是对称的注意:要考虑子节点是空指针的情况,因为空指针会导致遍历跳过而出现问题代码://是否是对称二叉树bool isSymmetrical(Tree *root){ return isSymmetricalCore(roo

2020-05-24 21:00:37 113

原创 面试题28:二叉树的镜像

面试题28:二叉树的镜像题目:请完成一个函数,输入一个二叉树,该函数输出它的镜像思路:递归交换根节点的左右子树代码://输出二叉树的镜像void mirrorInTree(TreeNode *root){ if (root == NULL) { return; } TreeNode *tempNode = root->rightChild; root->rightChild = root->leftchild;

2020-05-24 20:30:47 125

原创 面试题26:树的子结构

面试题26:树的子结构题目:输入两颗二叉树A和B,判断B是不是A的子结构思路:1.先用递归的方式判断A树中存不存在B树根节点一样的值的结点,如果不存在,则不存在该子结构;2.在A树中找到B树根节点一样的值的结点后,通过递归的方式判断是否存在子结构。代码://第一颗二叉树是否存在第二棵树根结点的值bool hasNodeInTree1(TreeNode *root1, TreeNode *root2){ bool result = false; if (root1 == N

2020-05-15 21:54:29 96

原创 实时抓取基金的估值数据

在天天基金上抓取实时估值数据url:http://fundgz.1234567.com.cn/js/519674.js?rt=1589463125600其中:519674为基金的代码,改成你需要的基金代码就可以了。以下是返回的数据jsonpgz({“fundcode”:“519674”,“name”:“閾舵渤鍒涙柊鎴愰暱娣峰悎”,“jzrq”:“2020-05-13”,“dwjz”:“5.4409”,“gsz”:“5.4543”,“gszzl”:“0.25”,“gztime”:“2020-05

2020-05-14 22:42:44 8309 4

原创 面试题25:合并有序链表

面试题25:合并有序链表题目:合并两个有序(递增)链表,使之融合后仍然有序分析:设置两个指针分别指向两个链表,通过比较两个链表的值来进行链表的合并1.常规算法代码://非递归式地融合链表Node *mergeNodeList(Node *pHead1, Node *pHead2){ if (pHead1 == NULL) { return pHead2; } else if (pHead2 == NULL) { re

2020-05-13 22:56:07 162

原创 面试题24:反转链表

面试题24:反转链表题目:输入一个链表,反转链表,并输出思路:定义三个指针,分别指向当前结点,前一个结点和后一个结点,遍历原来的链表,对每一个结点进行链表反转操作。注意:当链表为空或者只有一个结点的时候的处理//反转链表Node *reserveNodeList(Node *pHead){ if (pHead == NULL) { return NULL; } Node *pNewHead = NULL; Node *pNode =

2020-05-13 12:00:44 118

原创 面试题22:链表中环的入口结点

面试题22:链表中环的入口结点找到单项环状链表中的环入口结点思路:1.如何确定有环?可以定义两个一快一慢的指针,快指针一次走两个结点,慢指针一次走一个结点,当快指针遇到慢指针时,说明有环。2.如何找到环的入口结点?加入构成环的结点数目是N,定义两个指针,第一个指针先走N个结点,然后第一个指针和第二个指针同步向前走,当两个指针相遇时,相遇的结点就是环的入口结点。3.如何确定构成环的结点数目?根据思路1,当确定有环时,快慢指针相遇时指向的结点肯定在环中,从该结点出发,顺环遍历并计数,当再次访

2020-05-11 22:32:29 116

原创 面试题21:调整数组顺序使奇数位于偶数前面

面试题21:调整数组顺序使奇数位于偶数前面题目:输入一个整数数组,实现一个函数来调整该数组中的数字的顺序,使得所有奇数位于数组的前半部分,偶数位于数组的后半部分。思路:扫描这个数组的时候,如果发现有偶数出现在奇数的前面,则交换他们的顺序。分析:定义两个指针,一个指着数组开头,一个指着数组结尾,它们一先一后地向中间扫描,当前指针指着的数是偶数,后指针指着的数是奇数,就交换他们的位置,然后继...

2020-05-08 11:36:08 236

原创 面试题20:表示数值的字符串

面试题20:表示数值的字符串题目:请实现一个函数来判断字符串是否表示为数值(包括小数和整数)。数值的匹配模式为A[.[B]][e|EC]或则.[B][e|EC],其中,A表示整数部分数字,可以带‘+’或‘-’,B表示小数部分数字,不能带正负,C表示指数部分数字,可以带‘+’或‘-’。分析:见题目。代码:////// 题目:判断一个字符串是否是数值类型,数值的匹配模式为A[.[B]][...

2020-05-07 21:33:16 104

原创 面试题19:正则表达式匹配

面试题19:正则表达式匹配题目:请实现一个函数用来匹配包含’‘和’.'的正则表达式。其中‘.’表示匹配任意字符,‘’表示匹配0次或则多次,本题中,匹配是指字符串的全匹配。分析:由于是全匹配,我们可以给字符串和模式串设定两个指针,指向当前的要匹配的字符。有以下几种情况:模式串中当前字符的下一个字符是"**",那么这个待匹配串可以匹配0次或多次;当匹配0次时,字符串指针不动,模式串指针向后...

2020-05-06 21:07:18 129

原创 面试题18:删除链表的结点

面试题18:删除链表的结点题目1:在O(1)的时间内删除链表结点给定单项链表的头指针和一个结点指针,定义一个函数在O(1)的时间内删除该结点。分析:要在O(1)的时间内删除结点,按照常规的找到删除结点的上一个结点,然后删除该结点的思路肯定行不通。但是我们可以将待删除的结点的下一个结点的值赋给待删除结点,然后删除下一个结点,可以达到同样的目的。但以下几个问题要注意:待删除的结点是单项链...

2020-05-01 10:17:54 128

原创 面试题17:打印从1到最大的n位数

面试题11:打印从1到最大的n位数题目:输入数字n,按顺序打印出从1到最大的n位十进制数分析:由于n未知,可能是非常大的数,常规的数据类型可能装不下,考虑用字符串数组来存储数字,但需要考虑一下两个问题:字符串数组表示数字的相加算法(通过模拟十进制数的加法过程完成或其他方法);规范得打印出数字。代码:#include <stdio.h>//////题目:打印1到...

2020-04-29 22:50:41 69

原创 面试题16:数值的整数次幂

面试题16:数值的整数次幂题目:实现函数double power(double base,int exponet),求base的exponent次幂。不得使用库函数,同时不考虑大数问题分析:求幂比较好做,通过连乘(指数为正)即可完成。主要考虑底数为0和指数为负等情况代码:#include <iostream>#include <cmath>#include ...

2020-04-28 21:29:13 225

原创 面试题15:二进制中1的个数

面试题15:二进制中1的个数题目:请实现一个函数,输入一个整数,输出改数的二进制表示中1的个数常规解法思路:通过与运算来判断某一个是否为1。该数先和1相与,如果结果为1,则第一位为1,然后1左移一位与该数相与,判断第二位是否为1 ,以此类推,即可判断该数的二进制中有多少个1。代码:int getNumOfOneInBinary1(int num){ int count ...

2020-04-28 21:13:19 112

原创 2021届腾讯实习笔试题

第一题#include<iostream>using namespace std;void getNode(int x, int k);int main0() { int q; cin >> q; int x, k; while (q) { cin >> x >> k; q--; getNode(x, k); ...

2020-04-26 22:21:07 1772

原创 面试题14:剪绳子

面试题14:剪绳子题目:给你一根长度为n的绳子,请把绳子剪成m段(n,m都是整数,且m,n>0),每段绳子的长度记为k[0]、k[1]、k[2]……k[m]。请问k[0]xk[1]xk[2]……k[m]的最大乘积是多少?思路:动态规划动态规划的几大特点:1.求解一个问题的最优解;2.整体问题的最优解依赖于各子问题的最优解;3.把大问题分解为若干个子问题,这些子问题还有相互重...

2020-04-24 22:22:25 131

原创 面试题13 机器人的运动范围

面试题13:机器人的运动范围题目:地上有一个m行n列的格子。一个机器人从坐标(0,0) 的格子开始移动,它每次可以想左、右、上、下个移动一个格子,但不能移动到行坐标和列坐标的数位之和大于k的格子,请问该机器人可以到达多少个格子?思路:回溯法。代码:#include<iostream>using namespace std;//计算机器人走的格子数int movin...

2020-04-24 21:37:34 158

原创 面试题12:矩阵中的路径

面试题12:矩阵中的路径题目:请设计一个函数,用来判断再一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左、上、下、右移动一格。如果一条路径经过了矩阵的某一格,那么该路径不能再次进入该格子|a|b|t|g|–|--|| | |...

2020-04-10 21:55:03 92

原创 面试题11:旋转数组的最小数字

面试题11:旋转数组的最小数字题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转旋转数组的最小元素。例如数组{3,4,5,1,2}是数组{1,2,3,4,5}的一个旋转,该数组的最小值为1。思路:方法一:通过顺序查找法可以在O(n)的时间里找到最小的数字。根据该数组的特点,肯定不是最优解;方法二:通过二分查找法查找...

2020-04-04 16:52:30 97

原创 面试题10:斐波那契数列

面试题10:斐波那契额数列题目:求斐波那契数列的第n项思路:可以用递归,但递归的性能消耗太严重。改用从下而上用循环来计算。按照递推关系式,先计算第一二项,然后后续项由前面项相加得到即可。类似问题还有青蛙跳台阶问题。一只青蛙一次跳1级台阶或两级台阶,请问青蛙跳上n级台阶总共由集中跳法代码:#include<iostream>using namespace std;l...

2020-03-25 21:56:24 133

空空如也

空空如也

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

TA关注的人

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