算法
yuanyuan啊
远远呀 猿猿呀 一只小菜鸟 飞呀飞呀 总会飞很高!!!
展开
-
有一个数组a[N]顺序存放0~N-1,要求每隔两个数删掉一个数,到末尾时循环至开头继续进行,求最后一个被删掉的数的原始下标位置。以8个数(N=7)为例:{0,1,2,3,4,5,6,7},0->1->
有一个数组a[N]顺序存放0~N-1,要求每隔两个数删掉一个数,到末尾时循环至开头继续进行,求最后一个被删掉的数的原始下标位置。以8个数(N=7)为例:{0,1,2,3,4,5,6,7},0->1->2(删除)->3->4->5(删除)->6->7->0(删除),如此循环直到最后一个数被删除。解题思路:使用队列;首先将数组里面的元素全部放到队列中...原创 2020-04-05 11:03:49 · 1217 阅读 · 0 评论 -
算法题
1、在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。public boolean Find(int target, int [][] array) { int rows = array.length; int lines ...原创 2020-03-11 10:40:38 · 106 阅读 · 0 评论 -
罗马数字转整数
public int romanToInt(String s) { HashMap<String,Integer> map = new HashMap<>(); map.put("I", 1); map.put("IV", 4); map.put("V", 5); map.put("IX", 9); ...原创 2020-02-01 20:43:14 · 166 阅读 · 0 评论 -
整数转罗马数字
public String intToRoman(int num) { int[] nums = {1000,900,500,400,100,90,50,40,10,9,5,4,1}; String[] z = {"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"}; StringBu...原创 2020-02-01 20:18:47 · 107 阅读 · 0 评论 -
盛最多水的容器
题目:给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。public int maxArea(int[] height) { int left = 0 ; int ri...原创 2020-02-01 19:48:02 · 112 阅读 · 0 评论 -
Z 字形变换
题目:将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 “LEETCODEISHIRING” 行数为 3 时,排列如下:L C I RE T O E S I I GE D H N之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“LCIRETOESIIGEDHN”。请你实现这个将字符串进行指定行数变换的函数:...原创 2020-01-31 19:24:11 · 153 阅读 · 0 评论 -
最长回文子串
题目: 给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000public class Test11 { public String longestPalindrome(String s) { char[] a = s.toCharArray(); int len = 0; int start = 0 ; int end = 0; ...原创 2020-01-31 16:17:44 · 108 阅读 · 0 评论 -
无重复字符的最长子串
题目:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。public int lengthOfLongestSubstring(String s) { if(s.length() == 0) return 0; char[] a = s.toCharArray(); int max = 0; int ...原创 2020-01-31 15:22:13 · 71 阅读 · 0 评论 -
算法:回溯法 矩阵中的路径
题目:请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径,路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左、右、上、下移动一格。如果一条路径经过了矩阵的某一格,那么该路径不能再次进入该格子利用回溯法:直接上代码 public static boolean hasPath(char[][] matrix,char[] str){ int rows= matri...原创 2020-01-30 09:13:33 · 149 阅读 · 0 评论 -
算法 旋转数组的最小的数字
题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素其实就和二分查找的思想一致:直接代码 :public static void getMin(int[] a){ int left = 0 ; int high = a.length - 1; int mindle = 0; while(a[left...原创 2020-01-29 17:43:09 · 99 阅读 · 0 评论 -
算法 归并排序
归并排序思想:图解代码:public static void sort(int[] a,int low,int high){ if(low <high){ int mid = (low+high)/2; sort(a,low,mid); sort(a,mid+1,high); mergeSort(a,low,mid,high); } } p...原创 2020-01-23 18:11:24 · 397 阅读 · 0 评论 -
算法 二叉树的下一个节点
**题目: 给定一颗二叉树和其中的一个节点,如何找出中序遍历序列的下一个节点? 树中的节点除了有两个分别指向左右子节点的指针,还有一个指向父节点的指针**思想:如果一个节点有右子树,那么它下一个节点就是它的右子树中最左子节点。如果一个节点没有右子树,且该节点是它父节点的左孩子节点,那么它下一个节点就是它的父节点如果一个节点既没有右子树,并且它还是它父节点的右子节点,那么这种情况有点复...原创 2020-01-22 20:06:28 · 126 阅读 · 0 评论 -
算法 :重建二叉树
**题目: 输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字**public static TreeNode construct(int[] preorder,int[] inorder){ if(preorder == null || inorder == null){ return null; } return...原创 2020-01-22 19:24:59 · 223 阅读 · 0 评论 -
从尾到头打印链表
**题目:输入一个链表的头节点,从尾到头反过来打印每个节点的值。**public static void printNode(Node head){ Node p = head; Stack<Node> s = new Stack<>(); while(p!= null){ s.add(p); p = p.next; } whil...原创 2020-01-22 15:59:40 · 124 阅读 · 0 评论 -
算法:二维数组中的查找
题目:在一个二维数组中 每一行都按照从左到右递增的顺序排序 每一列都按照从上到下递增的顺序排序 请完成一个函数,输入这样的一个二维数组 和一个整数,判断数组中是否含有该整数***思路首先选取数组中右上角的数字 如果该数等于要查找的数字 则查找结果结束* 如果该数组大于查找的数字,则剔除这个数组所在的列* 如果该数字小于要查找的数字 则踢除这个数字所在的行* 也就是说 如果要查找的数...原创 2020-01-21 17:39:39 · 185 阅读 · 0 评论 -
算法:算法中重复的数字
题目:在一个长度为n的数组中的所有数字都在0-n-1的范围内 数组中某些数字是重复的,但不知道几个数组重复了,但不知道每个数字重复了几次。请找出数组中重复的数字import java.util.HashMap;/* * 在一个长度为n的数组中的所有数字都在0-n-1的范围内 数组中某些数字是重复的,但不知道几个数组重复了,但不知道每个数字重复了几次。 * 请找出数组中重复的数字 *...原创 2020-01-21 16:56:36 · 392 阅读 · 0 评论 -
先发后发策略 java
题目:方法一://先发策略 public static int f(int[] arr,int i,int j){ if(i == j){ return arr[i]; } return Math.max(arr[i]+s(arr,i+1,j), arr[i]+s(arr,i,j-1)); }//后发策略 private static int s(int[] ...原创 2019-02-03 09:44:04 · 226 阅读 · 0 评论 -
二叉树
1.先序遍历递归方式非递归方式实现先序遍历2.递归的中序实现非递归方法实现中序遍历3.递归方法实现后序遍历非递归方法实现后序遍历方法二:使用一个栈完成:4.二叉树按层遍历5.二叉树的子树6.平衡二叉树给定一颗二叉树的头节点head,判断一棵树是否是平衡二叉树:7.搜索二叉树eg:给定一棵二叉树的头节点head,请判断这棵树是否是搜索二叉树:8...原创 2019-01-16 15:37:29 · 136 阅读 · 0 评论