算法
yan-mario
这个作者很懒,什么都没留下…
展开
-
!Leetcode
字节跳动的面试算法题:合并K个有序的元素个数为N的数组思想将数组的首元素建立一个大根堆,然后进行堆调整,代码有注释//// Created by yanpan on 2019/3/26.// 字节跳动的手写算法题 2019春招#if 0#include <iostream>#include <vector>#include <algorithm...原创 2019-03-27 09:30:50 · 357 阅读 · 0 评论 -
leetcode---hash
插入hash表之后,要查找这个key是否存在于hash表中,应该用find函数,然后去和容器的end()进行比较1.https://leetcode-cn.com/problems/two-sum/class Solution {public: vector<int> twoSum(vector<int>& nums, int target...原创 2019-08-13 17:45:49 · 196 阅读 · 0 评论 -
动态规划 -- 动态递推1
53. 最大子序和. 给定一个整数数组 nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4], 输出: 6 解释:连续子数组[4,-1,2,1] 的和最大,为6dp状态的定义,dp[i] dp方程: dp[i] = max(dp[i-1] + nums[i...原创 2019-08-13 17:45:27 · 138 阅读 · 0 评论 -
动态规划 -- 动态递推一
第一步. 找出dp状态的定义第二步. 找到dp递推方程Leetcode120. 三角形的最小路径和 动态规划 时间复杂度 O(m*k) 空间复杂度 O(m*k)一种较为好理解的解法,定义一个二维的数组 dp, 状态 存放在二维数组中dp[i][j] = min(dp[i+1][j], dp[i+1][j+1]) + triangle[i][j]对dp二维数组初始化,...原创 2019-08-13 17:45:17 · 206 阅读 · 0 评论 -
leetcode---5
给定一个字符串s,找到s中最长的回文子串。你可以假设s的最大长度为 1000。示例 1:输入: "babad" 输出: "bab" 注意: "aba" 也是一个有效答案。示例 2:输入: "cbbd" 输出: "bb"class Solution {public: string longestPalindrome(string s) ...原创 2019-05-28 17:57:41 · 82 阅读 · 0 评论 -
Leetcode---181
给定一个包括n个整数的数组nums和 一个目标值target。找出nums中的三个整数,使得它们的和与target最接近。返回这三个数的和。假定每组输入只存在唯一答案。例如,给定数组 nums = [-1,2,1,-4], 和 target = 1与 target 最接近的三个数的和为 2 (-1 + 2 + 1 = 2)解题思想:将数组进行排序(升序,...原创 2019-05-30 09:20:53 · 116 阅读 · 0 评论 -
输出给定字符串的连续子串
//时间复杂度 O(n三次方)void AllSubString(char *str, int len){ int i = 0; for(; i < len; i++) { for(int j = i; j < len; j++) { for(int k = i; k < j; k++) ...原创 2019-05-07 13:20:49 · 720 阅读 · 0 评论 -
没有bug的二分查找
二分查找都熟悉吧,先写一个有bug的二分查找static int binary(int *arr, int len, int data){ int min = 0; int max = len - 1; int mid = 0; while(min <= max) { mid = (min + max) / 2; ...原创 2019-05-06 22:01:29 · 227 阅读 · 0 评论 -
leetcode---49
给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例:输入: ["eat", "tea", "tan", "ate", "nat", "bat"],输出:[ ["ate","eat","tea"], ["nat","tan"], ["bat"]]说明:所有输入均为小写字母。 不考虑答案输出的顺序。class So...原创 2019-05-01 10:34:40 · 103 阅读 · 0 评论 -
Leetcode---136
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素示例 1:输入: [2,2,1] 输出: 1示例2:输入: [4,1,2,1,2] 输出: 4说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?思路采用异或的思路,相同的数字异或的结果是0,不同的数字异或结果是1;不同异...原创 2019-06-02 16:35:26 · 83 阅读 · 0 评论 -
Leetcode---41
给定一个未排序的整数数组,找出其中没有出现的最小的正整数。 示例1:输入: [1,2,0] 输出: 3示例2:输入: [3,4,-1,1] 输出: 2示例3:输入: [7,8,9,11,12] 输出: 1说明: 你的算法的时间复杂度应为O(n),并且只能使用常数级别的空间。解法一:空间复杂度是O(n)#if 1class Solution {publ...原创 2019-05-05 14:26:18 · 254 阅读 · 0 评论 -
反转一个字符串,保持字符串中的单词不反转
#if 1#include <stdio.h>#include <string.h>void Reserver(char *start, char *end){// if(NULL == str)// return; while(start <= end) { char tmp = *start; ...原创 2019-05-01 21:02:07 · 895 阅读 · 0 评论 -
回朔算法
回朔算法的思想很简单,每一步都是尝试,如果正确进行下一步,如果不正确则回退,回退到上一步或者原点。 为了优化时间,不必要的搜索要进行剪枝操作常见的深度优先搜索就是回朔法的思想,来几道经典的回朔法。1.https://leetcode-cn.com/problems/combination-sum/ 代码有注释,今天时间紧急,后边有时间画图放上边加以理解class Soluti...原创 2019-08-15 11:57:17 · 705 阅读 · 0 评论