
Coding
Datawhale
一个开源的学习组织
展开
-
Coding-数组(Array)
数组(Array)面试中最常见的就是围绕数组进行出题,主要原则数组可以随机读取,一般遇到数组相关的题目,都不是直观看到的那样。第一步暴力解法,第二步是否可以排序,是否可以二分,是否可以使用数据结构(哈希表,队列,栈等)。要时刻注意一个数组中有两列数,一列是给定的数组的值,另一个是数组的下标。1. two sum题目: 给你一个数组arr,和一个目标值target,找到一组下标(i,j...原创 2019-07-08 08:37:16 · 436 阅读 · 0 评论 -
Coding-排序(sort)
排序(sort)排序的目的是让一组无序的对象变成有序(升序、降序),排序在面试中很容易被问道。排序之所以这么重要是因为排序是解决大部分问题的第一步,一些看似复杂的问题当数据有序的时候就变的简单,例如查找问题,如果数组有序可以使用搞笑的折半查找。需要提出,这篇文章并不介绍排序,什么插入、冒泡、希尔等算法,我们都不会介绍,我们的目的是给出最常见的关于排序的面试题目,俗称押题,当然希望每个人都能...原创 2019-07-09 09:18:49 · 381 阅读 · 0 评论 -
Coding-贪心
贪心算法是每次只考虑当前最优,目标证明每次是考虑当前最优能够达到局部最优,这就是贪心的思想,一般情况下贪心和排序一起出现,都是先根据条件进行排序,之后基于贪心策略得到最优结果。面试的时候面试官一般不会出贪心算法,如果可能贪心一般都可以使用动态规划解决,面试官很喜欢出动态规划的题目。1. 最大连续子序列题目: 给定一个整数数组,找到一个具有最大和的子数组,返回其最大和。扩展1: 给定...原创 2019-07-15 21:45:47 · 362 阅读 · 0 评论 -
Coding-字符串
1.最长公共前缀编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入: [“flower”,“flow”,“flight”]输出: “fl”示例 2:输入: [“dog”,“racecar”,“car”]输出: “”解释: 输入不存在公共前缀。说明:所有输入只包含小写字母 a-z 。思路首先,我们将描述一种查找一组字符串的最...原创 2019-07-16 22:27:12 · 386 阅读 · 0 评论 -
Graph(图)
Graph(图)在面试的过程中,一般不会考到图相关的问题,因为图相关的问题难,而且描述起来很麻烦.但是也会问道一下常见的问题,比如,最短路径,最小支撑树,拓扑排序都被问到过.图常用的表示方法有两种: 分别是邻接矩阵和邻接表.邻接矩阵是不错的一种图存储结构,对于边数相对顶点较少的图,这种结构存在对存储空间的极大浪费.因此,找到一种数组与链表相结合的存储方法称为邻接表.邻接矩阵表示的...原创 2019-07-23 21:11:42 · 2846 阅读 · 2 评论 -
Coding-链表
linklist(链表)链表也是面试中常问道的题目,链表定义简单很容易考察面试者的水平,比如在数组中很简单的题目转换成链表就有很大的变动。例如链表的插入和归并排序、查找倒数第k个节点等.1.回文链表(234)请判断一个链表是否为回文链表class Solution(object): def isPalindrome(self, head): reverse, f...原创 2019-07-17 20:26:05 · 445 阅读 · 0 评论 -
Coing-二叉树(bibary Tree)
二叉树(bibary Tree)二叉树是面试中最容易被问道的问题,这里同样给出高频而且有代表性的10道题目。二叉树介绍:百度百科:二叉树wikipedia: binary Tree定义二叉树:struct TreeNode { int data; TreeNode *left, *right; TreeNode(){} TreeNode(int ...原创 2019-07-17 22:02:56 · 532 阅读 · 0 评论 -
动态规划(DP)
动态规划(DP)动态规划是面试中最常被问道的题目,但是一般情况下的都是常见的一些题目.百度百科wikipedia1. 最长上升子序列题目: 最长上升子序列问题是在一个无序的给定序列中找到一个尽可能长的由低到高排列的子序列,这种子序列不一定是连续的或者唯一的.解析:dp[j]: 表示以j结尾的最长子序列的长度,dp[j] = max(dp[j], dp[i]+1) if(a...原创 2019-07-27 13:49:22 · 603 阅读 · 0 评论 -
搜索(Search)
searchbfs 和 dfs的相关的题目1. 全排列题目: 给定一个数字列表,返回其所有可能的排列。// premute(ans, nums, 0)void permute(vector<vector<int> > &ans, vector<int> &nums, int k){ if(k==nums.size()-1){...原创 2019-07-27 09:09:17 · 826 阅读 · 1 评论