编程题
zhuifengnian
这个作者很懒,什么都没留下…
展开
-
京东2018-回文串
一串字符串,删去其中几个字符,即可构成回文串,请问方案有几种?这是一道动态规划,举例:XXD,X,X,D每一个字符都是回文串,基数为3,XX也是回文串, XD不是回文串,XXD也不是回文串,所以有4种。知道子串有几种回文串,添加一个字符,再找回文串。package dian;import java.util.PriorityQueue;import java.util.Scanner;imp...原创 2018-04-09 22:24:24 · 221 阅读 · 0 评论 -
Next Greater Element I
//map的getOrDefault方法是返回有map键值的,没有的话,返回-1public int[] nextGreaterElement(int[] nums1, int[] nums2) { Stack <Integer>stack =new Stack<Integer>(); Map<Integer, Integer> m...原创 2018-04-25 09:18:47 · 136 阅读 · 0 评论 -
找出数组之后一个比它大的数字(利用栈)
private static int[] solve(int []input){ if(null == input || 0 == input.length){ return null; } Stack<Integer> stack = new Stack<>(); int []res...原创 2019-03-20 11:21:37 · 629 阅读 · 0 评论 -
找到数组唯一出现的数字
private static int noRepeat(int []input){ if(null == input && 0 == input.length){ return -1; } int count =input[0]; for(int i=1;i<input.length;...原创 2019-03-20 14:19:55 · 435 阅读 · 0 评论 -
旋转数组最小值
private static int getNum(int []input){ if(null == input || 0 == input.length) return 0; int i = 0; int j= input.length - 1; while(input[i]>=input[j]){ ...原创 2019-03-20 14:44:40 · 92 阅读 · 0 评论 -
数组的全排列
private static int permanent(int []a,int start,int end){ if(start == end){ sum++; return sum; } for(int i=start;i<=end;i++){ swap(a,sta...原创 2019-03-21 08:45:54 · 155 阅读 · 0 评论 -
数组中出现数字超过一半的情况
private static int halfNum(int [] input){ int count = 1; int temp = input[0]; for(int i=1;i<input.length;i++){ if(temp == input[i]){ count++; ...原创 2019-03-21 08:58:08 · 84 阅读 · 0 评论 -
硬币找零(动态规划问题)
public static int coinChange(int[] coin, int n){ int [][]dp =new int[coin.length+1][n+1]; for(int i=0;i<coin.length+1;i++){ dp[i][0]=0; } for(int i=0;i<n+1;i++){ ...转载 2019-03-19 13:14:55 · 355 阅读 · 0 评论 -
今日头条3-16笔试第二题(后端开发)
public static String strVerity(String s){ StringBuilder stringBuilder =new StringBuilder(s); for(int i=2;i<stringBuilder.length();i++){ if(stringBuilder.charAt(i)==stringBuilder.ch...原创 2019-03-19 13:33:11 · 147 阅读 · 0 评论 -
今日头条3-16后端实习第三题
Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); for (int i = 0; i < n; i++) { int amount = scanner.nextInt(); int[] b = new int[amoun...原创 2019-03-19 14:14:29 · 102 阅读 · 0 评论 -
今日头条3-16后端开发实习第四题
public static boolean check(int n,int m,double l,int []a) { int count = 0; for (int i = n - 1; i >= 0 && a[i] >= l; --i) { count += Math.floor(a[i] / l); ...原创 2019-03-19 14:32:39 · 116 阅读 · 0 评论 -
找到两个字符串中最长相同子串的个数
string s1="acbcbcef"; string s2="abcbced"; int dp[s1.length()+1][s2.length()+1]; for(int i=0;i<s2.length()+1;i++){ dp[0][i]=0; } for(int j=0;j<s1.length()+1;j++)...原创 2019-06-21 17:25:24 · 1344 阅读 · 0 评论 -
两个字符串中最长公共子序列
string s1="svow1213"; string s2="sds121921"; int dp[s1.length()+1][s2.length()+1]; for(int i=0;i<s1.length()+1;i++){ dp[i][0] = 0; } for(int i=0;i<s2.length()+1;...原创 2019-06-21 17:28:03 · 776 阅读 · 0 评论 -
最长上升子序列
int p[7] = {2,1,4,3,1,5,6}; int dp[7] ; for(int i=0;i<7;i++){ dp[i] = 1; } for(int i=1;i<7;i++){ for(int j=0;j<i;j++){ if(p[i]>p[j]){ ...原创 2019-06-21 17:30:44 · 115 阅读 · 0 评论 -
Minimum Path Sum
//动态规划问题总是由小到大,先从小出发,先找第一行,第一列的步数,然后再累加 public int minPathSum(int[][] grid) { int m = grid.length; int n = grid[0].length; int[][] dp = new int[m][n]; dp[0][0] = grid[0][0]; for...原创 2018-04-20 10:15:00 · 103 阅读 · 0 评论 -
Word Break
//一道动态规划的问题,从0找到i,再从j找到ipublic static boolean wordBreak(String s, List<String> wordDict) { int n = s.length(); boolean [] a = new boolean[n]; for(int i = 0;i < n;i...原创 2018-04-24 09:38:31 · 116 阅读 · 0 评论 -
找出数组中第一个重复的数字
//存储在一个数组中,以给定数组为下标,累加超过1,则判定为重复数字public static int dup(int []nums) { int [] dp= new int[nums.length]; for(int i=0;i<nums.length;i++) { if(dp[nums[i]]==0) dp[nums[i]]++; else if(dp[nums...原创 2018-04-23 22:27:01 · 3901 阅读 · 1 评论 -
京东2018-括号
package dian;import java.util.PriorityQueue;import java.util.Scanner;import java.util.Stack;public class Dian { public static void main(String[] args){ Scanner in = new Scanner(System.in); ...原创 2018-04-10 09:36:12 · 138 阅读 · 0 评论 -
132pattern
//方法有很多,最简单的办法是三层循环,但是时间复杂度过高,//使用栈的方法,先将数组预处理,选出前m个中最小的值,倒序选出k的值,如果比最小的值还小,不满足规则,出栈。如果比它大,只需要比较j和k的值,只要满足规则,即返回truepackage dian;import java.util.Scanner;import java.util.Stack;public class SumStack {...转载 2018-04-10 10:52:17 · 157 阅读 · 0 评论 -
Next Greater Element II
//这道题没有编出来,但是思想很好,首先倒序将前面的大数找出来,存入栈中,再进行第二次比较,得出最终结果class Solution { public int[] nextGreaterElements(int[] nums) { int[] res = new int[nums.length]; Stack<Integer> stack = new ...转载 2018-04-16 08:43:16 · 134 阅读 · 0 评论 -
Baseball Game
//只需将字符串数组中的值压入栈中,然后提取出来做累加,即可得到最后结果。 public static int shuchu(String[] ops) { int sum=0; Stack <String> stack= new Stack < String> (); for(int i=0;i<ops.length;i++) { if(ops[i].equ...原创 2018-04-11 09:58:47 · 120 阅读 · 0 评论 -
Given a string containing just the characters '(', ')', '{', '}', '[' and ']',
首先我用的是java,java中提供了栈的包class Solution { public boolean isValid(String s) { //定义一个栈 Stack<String> stack = new Stack<String>(); //通过分析,进行进栈处理 for(int i=0;i<s.length();i++){ ...转载 2018-02-10 18:19:02 · 649 阅读 · 0 评论 -
Asteroid Collision
//定义栈对象,让数组里的数据进栈,如果是正数,就不判断,如果是负数进行判断 public static int[] asteroidCollision(int[] asteroids) { Stack <Integer> stack =new Stack<Integer>(); Stack <Integer> stacks=new S...原创 2018-04-12 09:56:20 · 132 阅读 · 0 评论 -
Binary Tree Inorder Traversal
class Solution { public List<Integer> inorderTraversal(TreeNode root) { List <Integer> list=new ArrayList< >(); helper(root,list); return list; }//从头结点开始遍历...原创 2018-04-12 10:08:57 · 101 阅读 · 0 评论 -
Find the Duplicate Number
//先排序,在找ipublic int findDuplicate(int[] nums) { Arrays.sort(nums); for(int i=1;i<nums.length;i++) { if(nums[i]==nums[i-1]) return nums[i]; } return -...转载 2018-04-18 09:18:33 · 99 阅读 · 0 评论 -
Largest Rectangle in Histogram
//这道题属于栈的题目,需要判断入栈元素和栈内元素大小,构造一个非递减栈//最巧妙的地方在于,扩大原数组容量,使得最后一个数据为0,以此来排除栈内剩余元素//注意数组为空,数组为1的情况class Solution { public int largestRectangleArea(int[] heights) { Stack<Integer> stack =new...原创 2018-04-22 10:12:43 · 216 阅读 · 0 评论 -
Longest Substring Without Repeating Characters
//查找不重复的最大子串,可以判断map集合是否存在相同的字符,直接加索引i指向j+1,如果比原有的ans大,就使用新的长度//这里使用数组替代map public int lengthOfLongestSubstring(String s) { int n=s.length(),ans=0; int [] sum=new int[128];...原创 2018-04-23 09:02:26 · 94 阅读 · 0 评论 -
Daily Temperatures
//栈中存储数组下标,从后往前遍历比较,可以省去从前往后的数组过大的麻烦 public static int[] dailyTemperatures(int[] temperatures) { int[] ans = new int[temperatures.length]; Stack<Integer> stack = new Stack(); ...转载 2018-04-13 12:20:06 · 174 阅读 · 0 评论 -
Maximum Subarray
//找到字符串中最大的子串和,需要从第一个开始统计lass Solution { public int maxSubArray(int[] nums) { int sum=0; int max=0; int len=nums.length; if(len==0) return 0; f...原创 2018-04-19 09:20:46 · 118 阅读 · 0 评论 -
Longest Palindromic Substring
//设置dp为i到j是否为回文串,1代表是,0为不是,i到j相等,则考虑i-1到j-1是否是回文串,一层一层递进 public String longestPalindrome(String s) { int maxLen = 0; String longestStr = s.substring(0,1); int length = s.length(); int[...转载 2018-04-19 09:57:24 · 94 阅读 · 0 评论 -
最小编辑代价
string s1="abc"; string s2="adc"; int dp[s1.length()+1][s2.length()+1]; dp[0][0]=0; for(int i=1;i<s1.length()+1;i++){ dp[i][0]=3; } for(int i=1;i<s2.length()...原创 2019-06-21 17:33:55 · 215 阅读 · 0 评论