面试
万事只有开头
如果学习不用来装逼,那将毫无意义!
展开
-
交换两个数的值
一、中间临时变量法void swap(int &a, int &b) { int temp = a; a = b; b = temp;}二、异或法交换变量在计算机刚发明时,内存非常“精贵”。这种变量交换往往是非常奢侈的。于是计算机“大牛”发明了一些算法来避免使用中间变量:void swap(int &a, int &b) { a = a ^ b; // 充当临时变量 b = b ^ a; // <=>原创 2021-03-15 11:53:43 · 137 阅读 · 0 评论 -
leetcode——反转字符串中的单词
题目:给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。示例:输入:"Let's take LeetCode contest"输出:"s'teL ekat edoCteeL tsetnoc"提示:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格方案一:原地解法,分组旋转字符串, 可以接受多个连续空格class Solution {private: void reverseString(string&.原创 2021-01-29 19:50:14 · 264 阅读 · 0 评论 -
leetcode——反转字符串
题目:编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。链接:https://leetcode-cn.com/problems/reverse-string示例:1、输入:["h","e","l","l","o"]输出:["o","l","l","e","h"]2、输入:[原创 2021-01-29 19:17:22 · 113 阅读 · 0 评论 -
leetcode——Nim游戏
题目:你和你的朋友,两个人一起玩Nim 游戏:桌子上有一堆石头。 你们轮流进行自己的回合,你作为先手。 每一回合,轮到的人拿掉1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。假设你们每一步都是最优解。请编写一个函数,来判断你是否可以在给定石头数量为n的情况下赢得游戏。如果可以赢,返回true;否则,返回false。示例:1、输入:n = 4输出:false 解释:如果堆中有 4 块石头,那么你永远不会赢得比赛; 因为无论你拿走 1 块、2 块 还...原创 2021-01-28 21:20:24 · 332 阅读 · 0 评论 -
leetcode——除自身以外数组的乘积
题目:给你一个长度为n的整数数组nums,其中n > 1,返回输出数组output,其中 output[i]等于nums中除nums[i]之外其余各元素的乘积。说明:题目数据保证数组之中任意元素的全部前缀元素和后缀(甚至是整个数组)的乘积都在 32 位整数范围内 请不要使用除法,且在O(n) 时间复杂度内完成此题。示例:输入: [1,2,3,4]输出: [24,12,8,6]方案一:除法用到除法,就要检验除数是否为0class Solution...原创 2021-01-28 20:56:09 · 149 阅读 · 0 评论 -
leetcode——删除链表中的节点
题目:请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点。传入函数的唯一参数为要被删除的节点。示例:输入:head = [4,5,1,9], node = 5输出:[4,1,9]解释:给定你链表中值为5的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.链接:https://leetcode-cn.com/problems/delete-node-in-a-linked-list方案:思考:这个题目非常简单,如果在真实面试...原创 2021-01-28 20:33:27 · 157 阅读 · 0 评论 -
leetcode——2的幂
链接:https://leetcode-cn.com/problems/power-of-two/题目:给定一个整数,编写一个函数来判断它是否是 2 的幂次方。示例:1、输入: 1输出: true解释: 20 = 12、输入: 16输出: true解释: 24 = 163、输入: 218输出: false思考:2的幂特征:最高位是1,其余位为0。 如果输入值小于等于0, 则必返回false方案一:时间复杂度空间复杂度方案二:位运算原创 2021-01-27 21:50:04 · 277 阅读 · 0 评论 -
leetcode——反转链表
题目:反转链表示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL方案一:迭代法/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} *原创 2021-01-25 23:33:48 · 87 阅读 · 0 评论 -
leetcode——多数元素
题目:给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于⌊ n/2 ⌋的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。链接:https://leetcode-cn.com/problems/majority-element示例:1、输入:[3,2,3]输出:32、输入:[2,2,1,1,1,2,2]输出:2方案一:排序法class Solution {public: int majorityElement..原创 2021-01-24 21:22:20 · 125 阅读 · 0 评论 -
leetcode——排序链表
题目:给你链表的头结点head,请将其按升序排列并返回排序后的链表。示例:输入:head = [4,2,1,3]输出:[1,2,3,4]方案:class Solution: def sortList(self, head: ListNode) -> ListNode: if not head or not head.next: return head # termination. # cut the LinkedList at ...原创 2021-01-23 23:45:40 · 102 阅读 · 0 评论 -
leetcode——环形列表
题目:给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数pos来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果pos是 -1,则在该链表中没有环示例:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。方案一:class Solution {public: bool hasCycle(ListNode *head) { ListNode* fast .原创 2021-01-22 23:59:58 · 647 阅读 · 1 评论 -
leetcode——买卖股票的最佳时机2
题目:给定一个数组,它的第i个元素是一支给定股票第i天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。链接:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-ii/示例:1、输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天...原创 2021-01-21 12:30:51 · 127 阅读 · 0 评论 -
leetcode——买卖股票的最佳时机
题目:给定一个数组,它的第i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。注意:你不能在买入股票前卖出股票。链接:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock示例:1、输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖.原创 2021-01-21 12:03:17 · 121 阅读 · 0 评论 -
leetcode——二叉树的最大深度
题目:给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明:叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回最大深度 3方案一 递归/** * Definition for a binary tree node. * struct TreeNode { * int val; * Tree.原创 2021-01-20 20:33:51 · 128 阅读 · 0 评论 -
leetcode——格雷编码
题目:格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异。给定一个代表编码总位数的非负整数n,打印其格雷编码序列。即使有多个不同答案,你也只需要返回其中一种。格雷编码序列必须以 0 开头。https://leetcode-cn.com/problems/gray-code示例:1、输入:2输出:[0,1,3,2]解释:00 - 001 - 111 - 310 - 2对于给定的n,其格雷编码序列并不唯一。例如,[0,2,3,1]也是一个有...原创 2021-01-20 20:17:06 · 148 阅读 · 0 评论 -
leetcode——合并两个有序数组
题目:给你两个有序整数数组nums1和nums2,请你将nums2合并到nums1中,使nums1成为一个有序数组。初始化nums1 和 nums2 的元素数量分别为m 和 n 。你可以假设nums1有足够的空间(空间大小等于m + n)来保存 nums2 中的元素链接:https://leetcode-cn.com/problems/merge-sorted-array示例:输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,...原创 2021-01-20 10:40:25 · 257 阅读 · 0 评论 -
leetcode——爬楼梯
题目:假设你正在爬楼梯。需要n阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?(n为整数)https://leetcode-cn.com/problems/climbing-stairs/示例:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶方案一:动态规划class Solution {public: int climbStairs(int n) { if (n..原创 2021-01-19 21:06:28 · 85 阅读 · 0 评论 -
leetcode——螺旋矩阵
题目:给定一个包含mxn个元素的矩阵(m行,n列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。示例:1、输入:[ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ]]输出: [1,2,3,6,9,8,7,4,5]2、输入:[ [1, 2, 3, 4], [5, 6, 7, 8], [9,10,11,12]]输出: [1,2,3,4,8,12,11,10,9,5,6,7]方案一:class Solution {pu...原创 2021-01-18 21:28:28 · 462 阅读 · 0 评论 -
leetcode——字符串相乘
题目:给定两个以字符串形式表示的非负整数num1和num2,返回num1和num2的乘积,它们的乘积也表示为字符串形式。示例:输入: num1 = "2", num2 = "3"输出: "6"方案一:class Solution {private:// 字符 乘 字符串string charMultiStr(string num, char c) { if (c == '1') { return num; } else if (c =...原创 2021-01-17 23:09:09 · 466 阅读 · 1 评论 -
leetcode——搜索旋转排序数组
题目:升序排列的整数数组nums在预先未知的某个点上进行了旋转(例如,[0,1,2,4,5,6,7]经旋转后可能变为[4,5,6,7,0,1,2])。请你在数组中搜索target,如果数组中存在这个目标值,则返回它的索引,否则返回-1。(https://leetcode-cn.com/problems/search-in-rotated-sorted-array/)示例1、输入:nums = [4,5,6,7,0,1,2], target = 0 输出:42、输入:...原创 2021-01-16 17:27:46 · 120 阅读 · 0 评论 -
leetcode——删除排序数组重复元素
题目:给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。(https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array)示例:给定 nums = [0,0,1,1,1,2,2,3,3,4],函数应该返回新的长度 5, 并且原数组 nums 的前五个元素被修改为 0, 1...原创 2021-01-16 16:37:34 · 188 阅读 · 0 评论 -
leetcode——合并K个升序链表
目录题目:示例:提示:方案一:暴力解法方案二:顺序合并方案三:归并方案四:优先队列题目:给定一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。(https://leetcode-cn.com/problems/merge-k-sorted-lists/)示例:输入:lists = [[1,4,5],[1,3,4],[2,6]]输出:[1,1,2,3,4,4,5,6]解释:链表数组如下:[ 1->4-原创 2021-01-16 16:21:34 · 162 阅读 · 0 评论 -
leetcode——合并两个有序链表
题目:将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]方案一:迭代(C++)/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), ...原创 2021-01-15 14:19:48 · 125 阅读 · 0 评论 -
leetcode——有效的括号
题目:给定一个只包括'(',')','{','}','[',']'的字符串,判断字符串是否有效。有效字符串需满足:1、左括号必须用相同类型的右括号闭合。2、左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例:1、输入: "()" 输出: true2、输入: "()[]{}" 输出: true3、输入: "(]" 输出: false4、输入: "([)]" 输出: false5、输入: "{[]}" 输出: true方案一:栈clas..原创 2021-01-15 13:53:50 · 89 阅读 · 0 评论 -
leetcode——最接近的三数之和
题目:给定一个包括n 个整数的数组nums和 一个目标值target。找出nums中的三个整数,使得它们的和与target最接近。返回这三个数的和。假定每组输入只存在唯一答案。示例:输入:nums = [-1,2,1,-4], target = 1输出:2解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2) 。注意:3 <= nums.length <= 10^3-10^3 <= nums[i] <= 10^3-1...原创 2021-01-14 21:12:16 · 97 阅读 · 0 评论 -
leetcode——三数之和
题目:给你一个包含 n 个整数的数组nums,判断nums中是否存在三个元素 a,b,c ,使得a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。示例:1、输入:nums = [-1,0,1,2,-1,-4] 输出:[[-1,-1,2],[-1,0,1]]2、输入:nums = [] 输出:[]3、输入:nums = [0] 输出:[]提示:0 <= nums.length <= 3000 -...原创 2021-01-13 22:14:39 · 135 阅读 · 0 评论 -
leetcode——最长公共前缀(简单)
题目:编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串""。示例:1、输入:strs = ["flower","flow","flight"] 输出:"fl"2、输入:strs = ["dog","racecar","car"] 输出:"" 解释:输入不存在公共前缀。提示:0 <= strs.length <= 200 0 <= strs[i].length <= 200 strs[i]仅由小写英文字母组成方案一:暴力解..原创 2021-01-13 20:51:44 · 127 阅读 · 0 评论 -
leetcode——盛最多水的容器
题目:给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点(i,ai) 。在坐标内画 n 条垂直线,垂直线 i的两个端点分别为(i,ai) 和 (i, 0) 。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器。示例:输入:[1,8,6,2,5,4,8,3,7]输出:49 解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为49。方案一:...原创 2021-01-13 20:30:33 · 98 阅读 · 0 评论 -
leetcode——判断回文数
题目:判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数示例:1、输入: 121 输出: true2、输入: -121 输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数3、输入: 10 输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。方案一:class Solution {public: bool isPalindrome(int x) {原创 2021-01-12 21:01:29 · 149 阅读 · 0 评论 -
leetcode——字符串转换整数(atoi)
题目:实现一个atoi函数,使其能将字符串转换成整数。转换规则:首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下:如果第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字字符组合起来,形成一个有符号整数。 假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成一个整数。 该字符串在有效的整数部分之后也可能会存在多余的字符,那么这些字符可以被忽略,它们对函数不应该造成影响。假如该字符串中的第一个非空格字..原创 2021-01-12 20:50:04 · 173 阅读 · 0 评论 -
leetcode-整数反转
题目:给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为[−231, 231− 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。示例:1、输入:x = 123 输出:3212、输入:x = -123 输出:-3213、输入:x = 120 输出:214、输入:x = 0 输出:0方案:class Solution {public: int r...原创 2021-01-12 19:42:56 · 78 阅读 · 0 评论 -
leetcode——最长回文子串
题目:给定一个字符串s,找到s中最长的回文子串。示例 1:输入:s = "babad"输出:"bab"解释:"aba" 同样是符合题意的答案。示例 2:输入:s = "cbbd"输出:"bb"示例 3:输入:s = "a"输出:"a"示例 4:输入:s = "ac"输出:"a"方案一:暴力解法(代码可以运行,但是超时了,时间复杂度O(n^2))class Solution {public: string longestPa...原创 2021-01-11 22:20:28 · 109 阅读 · 0 评论 -
leetcode——寻找两个正序数组的中位数
题目:给定两个大小为 m 和 n 的正序(从小到大)数组nums1和nums2。请你找出并返回这两个正序数组的中位数。示例 1:输入:nums1 = [1,3], nums2 = [2]输出:2.00000解释:合并数组 = [1,2,3] ,中位数 2示例 2:输入:nums1 = [1,2], nums2 = [3,4]输出:2.50000解释:合并数组 = [1,2,3,4] ,中位数 (2 + 3) / 2 = 2.5示例 3:输入:nums1 = [0...原创 2021-01-11 21:46:33 · 110 阅读 · 0 评论 -
LeetCode-两数相加
题目:你两个非空 的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0开头。来源链接:https://leetcode-cn.com/problems/add-two-numbers/示例:输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807.方案一:直观解...原创 2021-01-11 21:03:32 · 91 阅读 · 0 评论 -
虚函数
目录一、什么是虚函数(virtual function)二、虚函数的实现机制——虚函数表(virtual table)2.1 虚函数表2.2 单继承下的虚函数表2.2.1 无覆盖2.2.2 有覆盖2.3 多继承下的虚函数表2.3.1 无覆盖2.3.2 有覆盖2.4 构造函数不能是虚函数,析构函数可以是虚函数2.4.1 构造函数不能是虚函数的原因2.4...原创 2019-10-20 17:40:15 · 4048 阅读 · 0 评论 -
【百面机器学习】第二章 模型评估
目录一、评估指标1、数值指标2、曲线指标3、距离指标二、模型评估方法1、留出法(Holdout)2、交叉验证(cross-validation)3、自助法:三、A/B测试1、什么是A/B测试:2、已经有离线评估的各种数据,为什么还要进行A/B测试:3、应该注意的问题四、过拟合/欠拟合1、定义:2、降低过拟合风险:3、降低欠拟合风险:...原创 2019-09-07 15:28:47 · 765 阅读 · 0 评论 -
【百面机器学习】第一章 特征工程
百面机器学习开篇一句话非常经典:对于一个机器学习问题,数据和特征往往决定了结果的上限,而模型和算法的选择及优化则是在逐步接近这个上限。一、特征工程1、特征工程定义对原始数据进行一系列的工程处理,将其提炼为特征,作为输入供算法和模型使用。从本质上来讲,特征工程是一个表示和展现数据的过程,在世界工作中,特征工程还包括对数据的一些预处理工作。2、原始数据类型:原始数据类型常用的有两种...原创 2019-09-16 00:25:38 · 240 阅读 · 0 评论 -
指针和引用的区别
目录一、指针&引用的基本概念二、引用1、引用存在的意义(既然有了指针为何还要有引用,引用的由来)2、引用实现原理3、const引用三、指针四、引用和指针的异同(高频面试题)一、指针&引用的基本概念说到指针和引用,首先看下变量名的概念:变量名: 实质上就是一段连续存储空间的别称。 变量名是逻辑层的概念, 变量有...原创 2019-09-24 22:30:50 · 492 阅读 · 0 评论 -
数据收录平台面试题(语言:PHP)
目录一、PHP 语言1、题目:2、php中用于字符串切分的函数:2.1explode: 按照分隔符分割数据2.2str_split: 按照指定长度分割字符串2.3preg_split: 按照正则表达式分割3、题解:3.1 循环调用explode分割3.2 正则表达式分割3.3 输出结果一、PHP 语言1、题目:explode函数扩展...原创 2019-08-12 01:57:46 · 185 阅读 · 0 评论