自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 收藏
  • 关注

原创 Android实习面试准备——数据结构与算法(六)

1、旋转输出矩阵public int[][] generateMatrix(int n) { if(n<1) return null; int[][] matrix = new int[n][n]; int startX = 0; int startY = 0; int loop = n/2; int mid = n/2; int i; int

2022-02-11 17:09:09 1508

原创 Android实习面试准备——数据结构与算法(五)

1、HashMap的底层原理是什么?线程安全么?jdk 1.8以前,HashMap使用数组+链表来实现的,jdk 1.8以后,就采用了数组+链表+红黑树来实现了,先从put方法看起:public V put(K key, V value) { return putVal(hash(key), key, value, false, true); } 跳转到了putVal方法:final V putVal(int hash, K key,...

2022-02-10 10:53:45 1813

原创 Android实习面试准备——数据结构与算法(四)

1、已知前序遍历为{1,2,4,7,3,5,6,8},中序遍历为{4,7,2,1,5,3,8,6},它的二叉树是怎么样的 前序遍历是中、左、右,中序遍历是左、中、右,那么前序遍历里的队列第一个一定是中,也就是1,然后在中序遍历队列中找到1,1左边的就是左子树,右边的就是右子树,然后继续这个逻辑进行递归,就能构建出一颗二叉树。(可以看leetcode 105)public TreeNode buildTree(int[] preorder, int[] inorder) { ...

2022-02-09 09:41:40 1416

原创 Android实习面试准备——java基础(三)

1、JVM DVM ART的区别JVM是java语言编译代码的运行平台,JVM结构包括运行时数据区、执行引擎、本地方法库和本地方法接口组成。DVM是Dalvik虚拟机,是Google专门为Android平台开发的虚拟机,DVM并不是JVM,因为它没有遵循JVM的规范。DVM与JVM的区别在于:(1)基于的架构不同。JVM是基于栈的,拷贝数据时需要大量的出入栈的指令和更多的内存访问次数,这会导致速度更慢,所以JVM并不适合性能有限的移动设备。而DVM是基于寄存器的,不需...

2022-01-24 18:11:08 1412

原创 Android实习面试准备——数据结构与算法(三)

关于队列和堆栈1、如何使用栈实现队列的功能一个输出栈,一个输入栈,push的时候进入输入栈,pop的时候从输出栈弹出,如果输出栈是空的,就把输入栈的内容pop再push进输出栈。class MyQueue { private Stack<Integer> input; private Stack<Integer> output; public MyQueue() { input = new Stack<&g...

2022-01-24 11:16:14 1282

原创 Android实习面试准备——并发编程(一)

1、假如只有一个cpu,单核,多线程还有用吗一般来说,一个任务既需要在CPU上花时间,也需要在IO上花时间,比如说读写文件等等。如果单核CPU、单线程的话,那么一个线程在处理的时候,CPU就是闲置的,这就浪费了CPU资源。而是多线程的话,一个CPU在等待IO的时候,另一个线程可以利用CPU进行计算,这样IO资源和CPU资源都得到了充分的利用。2、sychronied修饰普通方法和静态方法的区别?什么是可见性sychronied修饰普通方法时,锁是对象锁。...

2022-01-22 19:43:50 1704

原创 Android实习面试准备——java基础(二)

1、Java中有几种引用关系,它们的区别是什么java中数据类型分为基本数据类型和引用类型,指向对象的变量即是引用变量,通过引用对堆中的对象进行操作。java的垃圾回收也是根据引用来决定。在JDK1.2以前,如果引用类型的数据的值是另一块内存的地址,就称这个引用数据为这块内存或者对象的引用,但是这太绝对了,一个对象只有被引用和没被引用两种状态,引用了就不被回收,没被引用就会瘦。如果我们想表示那些“内存不足时回收,内存充足时保留”的对象就没办法了。 所以java...

2022-01-21 15:39:27 841

原创 Android实习面试准备——数据结构与算法(二)

关于链表1、查询第一个跟倒数第二个 第一个直接返回第一个节点就可以,查询倒数第二个节点的话,可以用两个指针,pre和curr,curr在pre的前面,当curr到最后一个节点的时候,pre就是倒数第二个节点。2、arrayList底层原理ArrayList的底层数据结构是一个object类型的数组Object[],默认数组大小为10。当调用无参构造方法时,会将默认大小为10的数组设置给成员变量elementData。public...

2022-01-21 09:50:12 815

原创 Android实现面试准备——java基础(一)

1、什么情况下会发生栈内存溢出栈是线程私有的,每个线程运行时所需要的内存就叫做栈。每个方法执行的时候都会创建一个栈帧,用来存储局部变量表、方法参数、返回地址等信息,每个栈由栈帧组成,所以要么是栈帧过大导致栈内存溢出,要么是栈帧过多导致溢出。根据平台的不同,线程栈的大小不同,Linux(64-bit)中是1M,也就是说很难因为栈帧过大导致栈内存溢出,那么主要就是因为栈帧过多了,这一般是方法的递归调用引起的。 public static void main(S...

2022-01-20 16:26:02 336

原创 Android实习面试准备——数据结构与算法(一)

目前准备冲击一下大厂的实习,现在开始刷面经,附上面经题目以及自己的一些答案,答案不是详细的代码,只是一些简要思路,算法方面关于时间和空间复杂度简单的就并没有附上去。如果有什么错误或者更好的答案,麻烦帮帮孩子,谢谢大佬们!!!1、常用的数据结构线性:数组、链表、栈、队列(后面两种在C++中容器适配器,因为其底层实现可能是数组,也可能是链表)(1)数组:内存中连续存储多个元素,数组元素通过下标索引,下标从0开始;优点:查找是O(1)的复杂度,速度快...

2022-01-20 10:33:02 654

原创 1026 Table Tennis (30 分)-------C语言

A table tennis club has N tables available to the public. The tables are numbered from 1 to N. For any pair of players, if there are some tables open when they arrive, they will be assigned to the available table with the smallest number. If all the tables

2021-09-01 19:00:23 231

原创 1021 Deepest Root (25 分)------C语言

A graph which is connected and acyclic can be considered a tree. The height of the tree depends on the selected root. Now you are supposed to find the root that results in a highest tree. Such a root is calledthe deepest root.Input Specification:Each .

2021-08-30 16:21:13 115

原创 1014 Waiting in Line (30 分)-----C语言

Suppose a bank hasNwindows open for service. There is a yellow line in front of the windows which devides the waiting area into two parts. The rules for the customers to wait in line are:The space inside the yellow line in front of each window is enoug..

2021-08-28 19:25:35 137

原创 11-散列4 Hashing - Hard Version (30 分)-------C语言

Given a hash table of sizeN, we can define a hash functionH(x)=x%N. Suppose that the linear probing is used to solve collisions, we can easily obtain the status of the hash table with a given sequence of input numbers.However, now you are asked to solv..

2021-08-18 08:54:03 468

原创 11-散列3 QQ帐户的申请与登陆 (25 分)------C语言

实现QQ新帐户申请和老帐户登陆的简化版功能。最大挑战是:据说现在的QQ号码已经有10位数了。输入格式:输入首先给出一个正整数N(≤105),随后给出N行指令。每行指令的格式为:“命令符(空格)QQ号码(空格)密码”。其中命令符为“N”(代表New)时表示要新申请一个QQ号,后面是新帐户的号码和密码;命令符为“L”(代表Login)时表示是老帐户登陆,后面是登陆信息。QQ号码为一个不超过10位、但大于1000(据说QQ老总的号码是1001)的整数。密码为不小于6位、不超过16位、且不包含空格的字符串。

2021-08-18 08:39:24 488

原创 11-散列2 Hashing (25 分)------C语言

The task of this problem is simple: insert a sequence of distinct positive integers into a hash table, and output the positions of the input numbers. The hash function is defined to beH(key)=key%TSizewhereTSizeis the maximum size of the hash table. Qua...

2021-08-18 08:31:44 99

原创 11-散列1 电话聊天狂人 (25 分)-------C语言

给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人。输入格式:输入首先给出正整数N(≤105),为通话记录条数。随后N行,每行给出一条通话记录。简单起见,这里只列出拨出方和接收方的11位数字构成的手机号码,其中以空格分隔。输出格式:在一行中给出聊天狂人的手机号码及其通话次数,其间以空格分隔。如果这样的人不唯一,则输出狂人中最小的号码及其通话次数,并且附加给出并列狂人的人数。输入样例:413005711862 1358862583213505711862 130886258

2021-08-18 08:21:59 193

原创 09-排序2 Insert or Merge (25 分)-------C语言

According to Wikipedia:Insertion sortiterates, consuming one input element each repetition, and growing a sorted output list. Each iteration, insertion sort removes one element from the input data, finds the location it belongs within the sorted list, a.

2021-08-10 18:29:01 136

原创 08-图9 关键活动 (30 分)-------C语言

假定一个工程项目由一组子任务构成,子任务之间有的可以并行执行,有的必须在完成了其它一些子任务后才能执行。“任务调度”包括一组子任务、以及每个子任务可以执行所依赖的子任务集。比如完成一个专业的所有课程学习和毕业设计可以看成一个本科生要完成的一项工程,各门课程可以看成是子任务。有些课程可以同时开设,比如英语和C程序设计,它们没有必须先修哪门的约束;有些课程则不可以同时开设,因为它们有先后的依赖关系,比如C程序设计和数据结构两门课,必须先学习前者。但是需要注意的是,对一组子任务,并不是任意的任务调度都是一

2021-08-10 18:24:54 339

原创 08-图8 How Long Does It Take (25 分)------C语言

Given the relations of all the activities of a project, you are supposed to find the earliest completion time of the project.Input Specification:Each input file contains one test case. Each case starts with a line containing two positive integersN(≤1..

2021-08-10 18:17:21 109

原创 08-图7 公路村村通 (30 分)-----C语言

现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每个村落都有公路连通所需要的最低成本。输入格式:输入数据包括城镇数目正整数N(≤1000)和候选道路数目M(≤3N);随后的M行对应M条道路,每行给出3个正整数,分别是该条道路直接连通的两个城镇的编号以及该道路改建的预算成本。为简单起见,城镇从1到N编号。输出格式:输出村村通需要的最低成本。如果输入数据不足以保证畅通,则输出−1,表示需要建设更多公路。输入样例:6 151 2 51 3 31 4

2021-08-10 18:08:10 515

原创 1018 Public Bike Management (30 分)-----C语言

There is a public bike service in Hangzhou City which provides great convenience to the tourists from all over the world. One may rent a bike at any station and return it to any other stations in the city.The Public Bike Management Center (PBMC) keeps mo

2021-08-08 16:54:44 128

原创 1003 Emergency (25 分)------C语言

As an emergency rescue team leader of a city, you are given a special map of your country. The map shows several scattered cities connected by some roads. Amount of rescue teams in each city and the length of each road between any pair of cities are marked

2021-08-08 16:39:26 164

原创 1131 Subway Map (30 分)--------C语言

哈利·波特要考试了,他需要你的帮助。这门课学的是用魔咒将一种动物变成另一种动物的本事。例如将猫变成老鼠的魔咒是haha,将老鼠变成鱼的魔咒是hehe等等。反方向变化的魔咒就是简单地将原来的魔咒倒过来念,例如ahah可以将老鼠变成猫。另外,如果想把猫变成鱼,可以通过念一个直接魔咒lalala,也可以将猫变老鼠、老鼠变鱼的魔咒连起来念:hahahehe。现在哈利·波特的手里有一本教材,里面列出了所有的变形魔咒和能变的动物。老师允许他自己带一只动物去考场,要考察他把这只动物变成任意一只指定动物的本事。于是他来

2021-08-08 16:29:55 180

原创 1076 Forwards on Weibo (30 分)------C语言

Weibo is known as the Chinese version of Twitter. One user on Weibo may have many followers, and may follow many other users as well. Hence a social network is formed with followers relations. When a user makes a post on Weibo, all his/her followers can vi

2021-08-05 16:51:05 122

原创 06-图3 六度空间 (30 分)----------C语言

“六度空间”理论又称作“六度分隔(Six Degrees of Separation)”理论。这个理论可以通俗地阐述为:“你和任何一个陌生人之间所间隔的人不会超过六个,也就是说,最多通过五个人你就能够认识任何一个陌生人。”如图1所示。图1 六度空间示意图“六度空间”理论虽然得到广泛的认同,并且正在得到越来越多的应用。但是数十年来,试图验证这个理论始终是许多社会学家努力追求的目标。然而由于历史的原因,这样的研究具有太大的局限性和困难。随着当代人的联络主要依赖于电话、短信、微信以及因特网上即时通信

2021-08-05 14:43:44 702

原创 06-图2 Saving James Bond - Easy Version-------C语言

This time let us consider the situation in the movie "Live and Let Die" in which James Bond, the world's most famous spy, was captured by a group of drug dealers. He was sent to a small piece of land at the center of a lake filled with crocodiles. There he

2021-08-04 19:51:04 228

原创 06-图1 列出连通集 (25 分)-------C语言

给定一个有N个顶点和E条边的无向图,请用DFS和BFS分别列出其所有的连通集。假设顶点从0到N−1编号。进行搜索时,假设我们总是从编号最小的顶点出发,按编号递增的顺序访问邻接点。输入格式:输入第1行给出2个整数N(0<N≤10)和E,分别是图的顶点数和边数。随后E行,每行给出一条边的两个端点。每行中的数字之间用1空格分隔。输出格式:按照"{v1​v2​...vk​}"的格式,每行输出一个连通集。先输出DFS的结果,再输出BFS的结果。输入样例:8 60 70 1...

2021-08-04 18:21:32 411

原创 05-树9 Huffman Codes (30 分)------C语言

In 1953, David A. Huffman published his paper "A Method for the Construction of Minimum-Redundancy Codes", and hence printed his name in the history of computer science. As a professor who gives the final exam problem on Huffman codes, I am encountering a

2021-08-04 09:32:54 210

原创 05-树8 File Transfer (25 分)--------C语言

We have a network of computers and a list of bi-directional connections. Each of these connections allows a file transfer from one computer to another. Is it possible to send a file from any computer on the network to any other?Input Specification:Each

2021-08-04 09:05:03 191

原创 05-树7 堆中的路径 (25 分)-------C语言

将一系列给定数字插入一个初始为空的小顶堆H[]。随后对任意给定的下标i,打印从H[i]到根结点的路径。输入格式:每组测试第1行包含2个正整数N和M(≤1000),分别是插入元素的个数、以及需要打印的路径条数。下一行给出区间[-10000, 10000]内的N个要被插入一个初始为空的小顶堆的整数。最后一行给出M个下标。输出格式:对输入中给出的每个下标i,在一行中输出从H[i]到根结点的路径上的数据。数字间以1个空格分隔,行末不得有多余空格。输入样例:5 346 23 26 24 1

2021-08-04 08:40:50 183

原创 04-树6 Complete Binary Search Tree (30 分)------C语言

A Binary Search Tree (BST) is recursively defined as a binary tree which has the following properties:The left subtree of a node contains only nodes with keys less than the node's key. The right subtree of a node contains only nodes with keys greater th

2021-08-02 20:25:20 117

原创 04-树5 Root of AVL Tree--------C语言

An AVL tree is a self-balancing binary search tree. In an AVL tree, the heights of the two child subtrees of any node differ by at most one; if at any time they differ by more than one, rebalancing is done to restore this property. Figures 1-4 illustrate t

2021-08-02 19:59:35 110

原创 04-树4 是否同一棵二叉搜索树--------C语言

给定一个插入序列就可以唯一确定一棵二叉搜索树。然而,一棵给定的二叉搜索树却可以由多种不同的插入序列得到。例如分别按照序列{2, 1, 3}和{2, 3, 1}插入初始为空的二叉搜索树,都得到一样的结果。于是对于输入的各种插入序列,你需要判断它们是否能生成一样的二叉搜索树。输入格式:输入包含若干组测试数据。每组数据的第1行给出两个正整数N(≤10)和L,分别是每个序列插入元素的个数和需要检查的序列个数。第2行给出N个以空格分隔的正整数,作为初始插入序列。最后L行,每行给出N个插入的元素,属于L个需要.

2021-08-02 19:31:25 391

原创 03-树3 Tree Traversals Again (25 分)------C语言

An inorder binary tree traversal can be implemented in a non-recursive way with a stack. For example, suppose that when a 6-node binary tree (with the keys numbered from 1 to 6) is traversed, the stack operations are: push(1); push(2); push(3); pop(); po..

2021-08-01 11:18:55 215

原创 03-树2 List Leaves (25 分) --------C语言

Given a tree, you are supposed to list all the leaves in the order of top down, and left to right.Input Specification:Each input file contains one test case. For each case, the first line gives a positive integerN(≤10) which is the total number of no..

2021-08-01 10:56:00 111

原创 03-树1 树的同构

给定两棵树T1和T2。如果T1可以通过若干次左右孩子互换就变成T2,则我们称两棵树是“同构”的。例如图1给出的两棵树就是同构的,因为我们把其中一棵树的结点A、B、G的左右孩子互换后,就得到另外一棵树。而图2就不是同构的。 图1 图2 现给定两棵树,请你判断它们是否是同构的。输入格式:输入给出2棵二叉树树的信息。对于每棵树,首先在一行中给出一个非负整数N(≤10),即该树的结点数(此时假设结点从0到N−1编号);随后N行,第i行对应编号第i个结点,给出该结点中存储的1个英文大写.

2021-08-01 10:47:31 207

原创 1019 数字黑洞 (20 分)

给定任一个各位数字不完全相同的 4 位正整数,如果我们先把 4 个数字按非递增排序,再按非递减排序,然后用第 1 个数字减第 2 个数字,将得到一个新的数字。一直重复这样做,我们很快会停在有“数字黑洞”之称的6174,这个神奇的数字也叫 Kaprekar 常数。例如,我们从6767开始,将得到7766 - 6677 = 10899810 - 0189 = 96219621 - 1269 = 83528532 - 2358 = 61747641 - 1467 = 6174... ....

2021-07-26 09:24:46 74

原创 1018 锤子剪刀布 (20 分)

大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示:现给出两人的交锋记录,请统计双方的胜、平、负次数,并且给出双方分别出什么手势的胜算最大。输入格式:输入第 1 行给出正整数N(≤10​5​​),即双方交锋的次数。随后N行,每行给出一次交锋的信息,即甲、乙双方同时给出的的手势。C代表“锤子”、J代表“剪刀”、B代表“布”,第 1 个字母代表甲方,第 2 个代表乙方,中间有 1 个空格。输出格式:输出第 1、2 行分别给出甲、乙的胜、平、负次数,数字间以...

2021-07-25 18:51:03 116

原创 1008 数组元素循环右移问题 (20 分)

一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将A中的数据由(A​0​​A​1​​⋯A​N−1​​)变换为(A​N−M​​⋯A​N−1​​A​0​​A​1​​⋯A​N−M−1​​)(最后M个数循环移至最前面的M个位置)。如果需要考虑程序移动数据的次数尽量少,要如何设计移动的方法?输入格式:每个输入包含一个测试用例,第1行输入N(1≤N≤100)和M(≥0);第2行输入N个整数,之间用空格分隔。输出格式:在一行中输出循环右移M位以

2021-07-25 17:09:06 48

空空如也

空空如也

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

TA关注的人

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