编程题
文章平均质量分 95
owenbb
这个作者很懒,什么都没留下…
展开
-
leetcode秋招刷题总结
文章目录数组1299. 将每个元素替换为右侧最大元素数组1299. 将每个元素替换为右侧最大元素题目思路:逆序解决,而且不能用多余的空间,arr[i] = max(arr[i+1],res[i+1])import java.util.Map;import java.util.Scanner;public class Solution { public int[] replaceElements(int[] arr){ int cur_max = arr[arr.原创 2021-01-01 16:17:00 · 483 阅读 · 0 评论 -
leetcode链表总结
文章目录链表中倒数第k个节点链表中倒数第k个节点输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。示例:给定一个链表: 1->2->3->4->5, 和 k = 2.返回链表 4->5.思路:快慢指针package listNode;class ListNode {原创 2020-11-27 15:54:47 · 194 阅读 · 0 评论 -
leecode-java正则
字节字符匹配题目三个连续的替换成两个,AABB替换成AABimport java.util.*;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); sc.nextLine(); //去掉多余的空行 while(n > 0){原创 2020-10-27 16:47:19 · 108 阅读 · 0 评论 -
LRU
定义LeastRecentlyUsed最近最久未使用,一种缓存淘汰策略关键点1、最大容量,put、get2、O(1)的时间复杂度3、上次访问的元素在第一个import java.util.HashMap;class LRUCache { public static class Node { Node next, pre; int key, val; Node(int k, int v) { //少了这两行原创 2020-08-30 16:01:45 · 116 阅读 · 0 评论 -
牛客网 java oj输入输出
链接import java.util.*;public class OJ { public static void main(String[] args){ Scanner sc = new Scanner(System.in); while (sc.hasNext()){ int a = sc.nextInt(); ...原创 2020-04-18 09:39:32 · 1957 阅读 · 1 评论 -
leetcode刷题记录
动态规划面试题42. 连续子数组的最大和给定一个整数数组(有正数有负数),找出总和最大的连续数列,并返回总和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。class Solution(object): def maxSubArray(self, nums): """ ...原创 2020-03-25 01:25:20 · 290 阅读 · 0 评论 -
剑指offer+leetcode刷题记录
剑指offer树的子结构题目描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)leetcode原创 2020-01-15 16:55:25 · 204 阅读 · 0 评论 -
581. 最短无序连续子数组
给定一个整数数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序。你找到的子数组应是最短的,请输出它的长度。示例 1:输入: [2, 6, 4, 8, 10, 9, 15]输出: 5解释: 你只需要对 [6, 4, 8, 10, 9] 进行升序排序,那么整个表都会变为升序排序。说明 :输入的数组长度范围在[1, 10,000]。输入...原创 2019-12-28 16:11:19 · 92 阅读 · 0 评论 -
常见的排序算法总结及python实现
来自剑指offer:面试官经常要求应聘者比较插入排序、冒泡排序,归并排序、快速排序等不同算法的优劣,要求能够从额外空间开销、平均时间复杂度和最差时间复杂度去比较它们的优缺点。快排是重点。概述1.1 排序的稳定性令狐冲的成绩和张无忌的成绩一样,未排序时令狐冲在前,排序后令狐冲依然在前,这样就是稳定的排序。如果二者颠倒,那就是不稳定的排序。1.2 内外排序内排序是指在排序的整个...原创 2019-12-19 11:17:42 · 251 阅读 · 0 评论 -
剑指offer-用两个栈实现队列
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。创建两个栈S1和S2,入队时,将元素压入S1,出队时,如果栈S2中的元素个数为0,则将S1中的元素一个个压入S2,并弹出最后压入的那个元素,如果栈S2中的元素个数不为0,则直接弹出S2中的顶元素。class Solution: def __init__(self): self...原创 2019-12-15 16:42:53 · 83 阅读 · 0 评论 -
剑指offer-二进制中1的个数
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。如果一个整数不为0,那么这个整数至少有一位是1。如果我们把这个整数减1,那么原来处在整数最右边的1就会变为0,原来在1后面的所有的0都会变成1(如果最右边的1后面还有0的话)。其余所有位将不会受到影响。举个例子:一个二进制数1100,从右边数起第三位是处于最右边的一个1。减去1后,第三位变成0,它后面的两位0变成了1,而...原创 2019-12-15 15:08:23 · 76 阅读 · 0 评论 -
746. 使用最小花费爬楼梯
数组的每个索引做为一个阶梯,第i个阶梯对应着一个非负数的体力花费值cost[i](索引从0开始)。每当你爬上一个阶梯你都要花费对应的体力花费值,然后你可以选择继续爬一个阶梯或者爬两个阶梯。您需要找到达到楼层顶部的最低花费。在开始时,你可以选择从索引为 0 或 1 的元素作为初始阶梯。示例1:输入: cost = [10, 15, 20]输出: 15解释: 最低花费是从co...原创 2019-11-15 22:06:39 · 75 阅读 · 0 评论 -
392. 判断子序列
给定字符串 s 和 t ,判断 s 是否为 t 的子序列。你可以认为 s 和 t 中仅包含英文小写字母。字符串 t 可能会很长(长度 ~= 500,000),而 s 是个短字符串(长度 <=100)。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。示例1:s ...原创 2019-11-15 21:15:34 · 136 阅读 · 0 评论 -
leetcode 打家劫舍
打家劫舍1你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [1,2,3,1]输出: 4解释: 偷窃 1 号房屋 (金额 = 1)...原创 2019-11-15 21:33:05 · 147 阅读 · 0 评论 -
206. 反转链表
反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?头插法# Definition for singly-linked list.# class ListNode(object):# ...原创 2019-10-22 09:34:35 · 89 阅读 · 0 评论 -
70. 爬楼梯
假设你正在爬楼梯。需要 n阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶2. 1 阶...原创 2019-10-17 16:51:15 · 79 阅读 · 0 评论 -
344. 反转字符串
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。示例 1:输入:["h","e","l","l","o"]输出:["o","l","l","e","h"]示例 2:...原创 2019-10-17 15:32:38 · 106 阅读 · 0 评论 -
26. 删除排序数组中的重复项
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需要考虑数组中超出新长度后面的元素。示例2:...原创 2019-10-14 23:21:52 · 90 阅读 · 0 评论 -
217. 存在重复元素
给定一个整数数组,判断是否存在重复元素。如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。示例 1:输入: [1,2,3,1]输出: true示例 2:输入: [1,2,3,4]输出: false示例3:输入: [1,1,1,3,3,4,3,2,4,2]输出: true# -*- coding: utf-8 -...原创 2019-10-09 10:17:24 · 90 阅读 · 0 评论 -
231. 2的幂
给定一个整数,编写一个函数来判断它是否是 2 的幂次方。示例1:输入: 1输出: true解释: 20= 1示例 2:输入: 16输出: true解释: 24= 16示例 3:输入: 218输出: false题解若 n = 2^xn=2x 且 xx 为自然数(即 nn 为 22 的幂),则一定满足以下条件:恒有 n & (n - 1) ...原创 2019-10-09 09:59:17 · 90 阅读 · 0 评论 -
Leetcode 动态规划-213. House Robber II
题目环形抢劫思路:一个圆上有n座房子,其它条件都一样,只是第1座房子和第n座房子变成相邻的了,也就是说不能同时抢了,那么最优解就变成 第1座房子到第n-1座房子能抢的最多的钱 或者 第2座房子到第n座房子能抢的钱了。#include <bits/stdc++.h>using namespace std;int robOriginal(vector<int&g...原创 2018-08-03 21:54:15 · 186 阅读 · 0 评论 -
160. 相交链表
编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:在节点 c1 开始相交。示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Reference of the node with value = 8输入解释:相交节点的值为 8 ...原创 2019-10-10 09:50:55 · 59 阅读 · 0 评论 -
557. 反转字符串中的单词 III
给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。示例1:输入: "Let's take LeetCode contest"输出: "s'teL ekat edoCteeL tsetnoc"注意:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。思路:先字符串反转,然后去除空格,变成列表反转再连接# -*-...原创 2019-10-10 23:21:50 · 66 阅读 · 0 评论 -
122. 买卖股票的最佳时机 II
给定一个数组,它的第i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交...原创 2019-10-11 00:14:10 · 94 阅读 · 0 评论 -
121. 买卖股票的最佳时机
给定一个数组,它的第i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 ...原创 2019-10-11 00:47:19 · 102 阅读 · 0 评论 -
235. 二叉搜索树的最近公共祖先
二叉搜索树(BST)的性质:节点 NN 左子树上的所有节点的值都小于等于节点 NN 的值节点 NN 右子树上的所有节点的值都大于等于节点 NN 的值左子树和右子树也都是 BST算法从根节点开始遍历树如果节点 pp 和节点 qq 都在右子树上,那么以右孩子为根节点继续 1 的操作如果节点 pp 和节点 qq 都在左子树上,那么以左孩子为根节点继续 1 的操作如果条件 2 ...原创 2019-10-08 20:25:58 · 93 阅读 · 0 评论 -
合并两个有序数组
给定两个有序整数数组nums1和nums2,将nums2合并到nums1中,使得num1成为一个有序数组。说明:初始化nums1和nums2的元素数量分别为m和n。 你可以假设nums1有足够的空间(空间大小大于或等于m + n)来保存nums2中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m = 3nums2 ...原创 2019-09-13 19:46:34 · 96 阅读 · 0 评论 -
Leetcode array 121. Best Time to Buy and Sell Stock
Say you have an array for which the ith element is the price of a given stock on day i.If you were only permitted to complete at most one transaction (i.e., buy one and sell one share of the stock),...原创 2019-01-22 13:10:14 · 94 阅读 · 0 评论 -
Leetcode 动态规划-413. Arithmetic Slices
A sequence of number is called arithmetic if it consists of at least three elements and if the difference between any two consecutive elements is the same.For example, these are arithmetic sequence:...原创 2019-01-21 13:05:44 · 124 阅读 · 0 评论 -
Leetcode 动态规划-62. Unique Paths
给一个m×n的方格,只能向右或者向下,有多少走法Example 1:Input: m = 3, n = 2Output: 3Explanation:From the top-left corner, there are a total of 3 ways to reach the bottom-right corner:1. Right -> Right -> Dow...原创 2019-01-20 20:08:26 · 90 阅读 · 0 评论 -
编程题收获
1、C++创建矩阵vector<vector<int>> matrix(RR, vector<int>(CC));This creates a vector of RR size CC vectors, filled with 0.vector<vector<int>> paths(m,vector<int>(...原创 2019-01-20 19:54:46 · 214 阅读 · 0 评论 -
Leetcode array 11. Container With Most Water
Given n non-negative integers a1, a2, ..., an , where each represents a point at coordinate (i, ai). n vertical lines are drawn such that the two endpoints of line i is at (i, ai) and (i, 0). Find two...原创 2019-01-24 10:00:22 · 121 阅读 · 0 评论 -
Leetcode 动态规划-64. Minimum Path Sum (Medium)
[[1,3,1], [1,5,1], [4,2,1]]Given the above grid map, return 7. Because the path 1→3→1→1→1 minimizes the sum.题目描述:求从矩阵的左上角到右下角的最小路径和,每次只能向右和向下移动。我用的是复杂的方法O(n^2)#include <bits/stdc++.h>...原创 2018-10-19 21:26:52 · 218 阅读 · 0 评论 -
Leetcode贪心算法 Assign Cookies (Easy)
题目Input: [1,2], [1,2,3]Output: 2Explanation: You have 2 children and 3 cookies. The greed factors of 2 children are 1, 2.You have 3 cookies and their sizes are big enough to gratify all of the ...原创 2018-07-21 11:09:59 · 186 阅读 · 0 评论 -
Leetcode 动态规划-198. House Robber
题目题目描述:抢劫一排住户,但是不能抢邻近的住户,求最大抢劫量。定义 dp 数组用来存储最大的抢劫量,其中 dp[i] 表示抢到第 i 个住户时的最大抢劫量。由于不能抢劫邻近住户,因此如果抢劫了第 i 个住户那么只能抢劫 i - 2 或者 i - 3 的住户,所以#include <bits/stdc++.h>using namespace std;int r...原创 2018-07-25 22:10:24 · 209 阅读 · 0 评论 -
Leetcode动态规划-斐波那契数列-爬楼梯
题目You are climbing a stair case. It takes n steps to reach to the top.Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top?Note: Given n will be a posi...原创 2018-07-23 20:51:51 · 446 阅读 · 0 评论 -
连续最长子序列和
int maxsequence(int a[],int n){ int maxsum, maxhere; maxsum = maxhere = a[0]; //初始化最大和为a【0】 for (int i=1; i<n; i++) { if (maxhere <= 0) maxhere = a[i]; ...原创 2018-07-08 15:33:28 · 397 阅读 · 0 评论 -
Leetcode array 122. Best Time to Buy and Sell Stock II
Say you have an array for which the ith element is the price of a given stock on day i.Design an algorithm to find the maximum profit. You may complete as many transactions as you like (i.e., buy on...原创 2019-01-22 14:21:44 · 100 阅读 · 0 评论 -
Leetcode array 1. Two Sum(Easy)
1. Two Sum(Easy)Given an array of integers, return indices of the two numbers such that they add up to a specific target.You may assume that each input would have exactly one solution, and you may...原创 2019-02-16 09:20:32 · 104 阅读 · 0 评论 -
搜索二维矩阵 II
编写一个高效的算法来搜索mxn矩阵 matrix 中的一个目标值 target。该矩阵具有以下特性:每行的元素从左到右升序排列。 每列的元素从上到下升序排列。示例:现有矩阵 matrix 如下:[ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 1...原创 2019-09-12 12:26:08 · 154 阅读 · 0 评论