算法
genghaihua
这个作者很懒,什么都没留下…
展开
-
计算1的个数
#include #include using namespace std;int getintnum(int);void main(){ int n; cout<<"输入一个整数"; cin>>n; int m=getintnum(n); cout<<m<<endl; system("pause");}int getintnum(int n){ int num=0原创 2013-09-18 10:28:42 · 656 阅读 · 0 评论 -
最小的K个数
输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。import java.util.ArrayList;import java.util.Comparator;import java.util.PriorityQueue;public class Solution { public ArrayList<Intege...原创 2018-04-14 17:51:13 · 145 阅读 · 0 评论 -
数组中出现次数超过一半的数字
数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。 public static int MoreThanHalfNum_Solution(int[] array) { int length = array.length;...原创 2018-04-14 18:29:54 · 133 阅读 · 0 评论 -
连续子数组的最大和
HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。你会不会被他忽悠住?(子向量的长度至少是1)...原创 2018-04-14 19:20:42 · 105 阅读 · 0 评论 -
两个链表的第一个公共结点
题目描述输入两个链表,找出它们的第一个公共结点。class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}public ListNode FindFirstCommonNode(ListNode pHead1, ListNode p...原创 2018-04-14 19:31:17 · 138 阅读 · 0 评论 -
数字在排序数组中出现的次数
题目:统计一个数字在排序数组中出现的次数。例如输入排序数组{1,2,3,3,3,3,4,5}和数字3,由于3在这个数组中出现了4次,因此输出4。public static int GetNumberOfK(int [] array , int k) { int length=array.length; int low=0; int high=leng...原创 2018-04-14 20:24:00 · 104 阅读 · 0 评论 -
二叉树的深度
输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = va...原创 2018-04-14 20:42:17 · 102 阅读 · 0 评论 -
数组中有两个出现一次的数字,其他数字都出现两次,找出这两个数字
public void FindNumsAppearOnce(int [] array,int num1[] , int num2[]) { int length=array.length; if(length==2){ num1[0]=array[0]; num2[1]=array[1]; } ...原创 2018-04-14 21:22:06 · 685 阅读 · 0 评论 -
和为S的两个数字
题目描述输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。输出描述:对应每个测试案例,输出两个数,小的先输出。 public ArrayList<Integer> FindNumbersWithSum(int [] array,int sum) { ArrayList<Integer&g...原创 2018-04-14 21:34:07 · 147 阅读 · 0 评论 -
滑动窗口的最大值
//对于前面的元素,如果后面的元素比它大,那么移除它,因为不可能成为后面窗口的最大值了 //对于前面的元素,如果后面的元素比它小,如果不在窗口中,那么删除它 //前面始终保存最大值 public static ArrayList<Integer> maxInWindows(int[] num, int size) { ArrayList<...原创 2018-03-27 16:27:22 · 142 阅读 · 0 评论 -
股票买卖(买入卖出一次)
public int maxProfit(int[] prices) { int maxprofit=0;//最大利润 if(prices.length==0) return maxprofit; int min=prices[0];//当前最小买入价 for(int i=1;i<prices.length...原创 2018-04-15 14:51:49 · 1833 阅读 · 0 评论 -
数据流中的中位数
private int count = 1;//当前是第几个插入的值 private PriorityQueue<Integer> minHeap = new PriorityQueue<>(); private PriorityQueue<Integer> maxHeap = new PriorityQueue<Integer>( ...原创 2018-03-27 17:46:00 · 111 阅读 · 0 评论 -
对称的二叉树
boolean isOK(TreeNode node1,TreeNode node2){ if(node1==null&&node2==null)return true; if(node1!=null&&node2==null)return false; if(node1==null&&node2!...原创 2018-03-29 13:48:22 · 114 阅读 · 0 评论 -
判断一棵树是不是平衡二叉树
public int getDepth(TreeNode rootnode) { if (rootnode == null) return 0;//如果当前节点为空返回深度为0 int leftlength = getDepth(rootnode.left); int rigthlength = getDepth(rootnode.right); ...原创 2018-05-01 15:48:44 · 471 阅读 · 2 评论 -
二叉树中和为某一值的路径
public ArrayList<ArrayList<Integer>> FindPath(TreeNode root, int target) { ArrayList<ArrayList<Integer>> pathlist = new ArrayList<>(); if (root == null) ...原创 2018-05-01 17:38:48 · 135 阅读 · 0 评论 -
二叉搜索树第k个节点
TreeNode KthNode(TreeNode pRoot, int k) { int count = 0; if (count >= k || pRoot == null) return null; TreeNode p = pRoot; Stack<TreeNode> nodeSta...原创 2018-05-01 19:09:20 · 171 阅读 · 0 评论 -
删除链表中重复的结点
public ListNode deleteDuplication(ListNode pHead) { if(pHead==null||pHead.next==null)return pHead; if(pHead.val==pHead.next.val){ ListNode node=pHead.next; ...原创 2018-05-01 20:13:14 · 132 阅读 · 0 评论 -
链表倒置
class ListNode{int val;ListNode next=null;ListNode(int val){this.val=val;}}public static ListNode reverse2(ListNode head) {if(head==null)return head;ListNode pre=head;//最前面的节点ListNode cur=...原创 2018-03-21 14:56:41 · 179 阅读 · 0 评论 -
两个有序链表合并
class ListNode {int val;ListNode next = null;ListNode(int val) {this.val = val;}}public ListNode Merge(ListNode list1, ListNode list2) {if (list1 == null) return list2;if (list2 == null) re...原创 2018-03-21 14:56:18 · 267 阅读 · 0 评论 -
链表逆序输出
import java.util.ArrayList;import java.util.Stack;public class Solution { public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { Stack<Integer> resstack=new ...原创 2018-03-21 14:55:50 · 221 阅读 · 0 评论 -
一个数组存储很多英文字母,输出没有存储的字母
此题只考虑小写字母#include #include #include using namespace std;int main(){string str="qwertyuiopasdfghjklasdgfyureoiwefhiuwefrufrytggtrqqwdes";int n=str.length();int aa[26]={0};string str原创 2013-09-18 10:17:53 · 1787 阅读 · 0 评论 -
如何对n个整数数进行排序,要求时间复杂度O(n),空间复杂度O(1)
题目:如何对n个不重复出现的整数序列进行排序,已知这些数的范围为(0-65535),要求时间复杂度O(n),空间复杂度O(1)分析:可以申请一个大小为65536的数组A,数组的x下标代表数字x,A[x]代表x 在整数序列中出现的次数。扫描一遍整数序列就可以完成对该整数序列的排序,时间复杂度为O(n)应为已知范围,申请大小为65536的数组,大小为常量,所以空间复杂度为O(1)代码:转载 2013-11-29 13:36:08 · 3437 阅读 · 0 评论 -
shell排序
void shellsort(int a[],int n){ int i,j,gap; for (gap=n/2;gap>0;gap/=2)//步长 { for (i=0;i<gap;i++) { for (j=gap+i;j<n;j+=gap) { if (a[j]<a[j-gap]) { int temp=a[j]; int k=原创 2013-12-03 17:09:25 · 631 阅读 · 0 评论 -
数组中只出现1次的两个数字(百度面试题)
// 百度面试题 //数组中除两个数字外,其它数字都出现了次。要求尽可能快的找出这两个数字 //By MoreWindows (http://blog.csdn.net/MoreWindows) #include void FindTwoNotRepeatNumberInArray(int *a, int n, int *pN1, int *pN2转载 2013-12-03 21:17:56 · 748 阅读 · 0 评论 -
冒泡排序
#include #include using namespace std;const int N=7;void BubbleSort(int a[],int n){ int i,j; int temp; for (i=0;i<n;i++) { for (j=1;j<n-i;j++) { if(a[j-1]>a[j]) { temp=a[j-1];原创 2013-12-03 16:13:46 · 612 阅读 · 0 评论 -
插入排序
#include #include using namespace std;const int N=7;void insertsort(int a[],int n){ int i,j,k; int temp; for (i=1;i<n;i++) { for (j=i-1;j>=0;j--) { if (a[j]>a[j+1])//如果前一个数大于后一个数二者交换,一原创 2013-12-03 16:05:32 · 530 阅读 · 0 评论 -
数组中只出现一次的数
数组A中,除了某一个数字x之外,其他数字都出现了三次,而x出现了一次。请给出最快的方法找到x。#include #include #include using namespace std;int findnumber(int a[],int n){ int bits[32]; int i,j; memset(bits,0,sizeof(bits)); for (in转载 2013-12-03 20:55:27 · 625 阅读 · 0 评论 -
找出数组中出现次数超过一半的数字
int MoreThanHalfNum(int* numbers,int length){ int result=numbers[0]; int times=1; for(int i=1;i<length;i++) { if (times==0) { result=numbers[i]; times=1; } else if(numbers[i]==resul原创 2014-02-19 17:41:44 · 537 阅读 · 0 评论 -
分层访问二叉树的节点,每层换行
#include ;#include using namespace std; struct Node{ int data; Node* LChild; Node* RChild;};void PrintNodeByLevel(Node* root){ if(root==NULL) return; vector vec; vec.push_back(root);转载 2014-03-17 15:42:24 · 749 阅读 · 0 评论 -
数塔
一个数字三角形, 形式如下: 1 2 3 4 5 6 7 8 9 10找出从第一层到最后一层的一条路,使得所经过的权值之和最小或者最大.原创 2014-08-20 13:55:53 · 712 阅读 · 0 评论 -
要求写一个程序,返回最少的操作数,使得源串进行这些操作后等于目标串。源串和目标串长度都小于2000。
2013 google校招笔试题2.3 给定一个原串和目标串,能对源串进行如下操作:1.在给定位置插入一个字符2.替换任意字符3.删除任意字符要求写一个程序,返回最少的操作数,使得源串进行这些操作后等于目标串。源串和目标串长度都小于2000。原创 2014-08-20 17:11:51 · 3007 阅读 · 0 评论 -
分层打印二叉树
public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {ArrayList<Integer> reslist=new ArrayList<>();if(root==null) return reslist ;// if(root.left==null&&root.right==...原创 2018-03-21 14:52:56 · 257 阅读 · 0 评论 -
栈的压入、弹出序列
public static boolean IsPopOrder(int [] pushA,int [] popA) {int len=pushA.length;Stack<Integer> dataStack=new Stack<>();int i=0;int j=0;//popA indexwhile (i<len){if(!dataStack.isEmpty()...原创 2018-03-21 14:53:31 · 117 阅读 · 0 评论 -
替换空格字符串
public String replaceSpace(StringBuffer str) {StringBuffer res=new StringBuffer();for(int i=0;i<str.length();i++){if(str.charAt(i)==' '){res.append("%20");}else{res.append(str.charAt(i));}}...原创 2018-03-21 14:53:59 · 151 阅读 · 0 评论 -
用两个栈实现队列
Stack<Integer> stack1 = new Stack<Integer>(); Stack<Integer> stack2 = new Stack<Integer>(); public void push(int node) { while (!stack2.isEmpty()){ ...原创 2018-03-21 14:55:02 · 116 阅读 · 0 评论 -
之字型打印二叉树
class TreeNode {int val = 0;TreeNode left = null;TreeNode right = null;public TreeNode(int val) {this.val = val;}}public ArrayList<ArrayList<Integer>> Print(TreeNode pRoot) {Arra...原创 2018-03-21 14:55:28 · 261 阅读 · 0 评论 -
置信区间和置信度
原创 2019-05-07 14:58:01 · 1264 阅读 · 0 评论