<?php function microtime_float() { list($usec, $sec) = explode(" ", microtime()); return ((float)$usec + (float)$sec); } for($i = 1;$i <= 10000;$i++) { $data_1[$i] = 1; } for($i = 1001;$i <= 600000;$i++) { $data_2[$i] = 1; } $time_start…
题目:在一个数组中,除了两个数外,其余数都是两两成对出现,找出这两个数,要求时间复杂度O(n),空间复杂度O(1) 分析:这道题考察位操作:异或(^),按位与(&),移位操作(>>, <<)等,Java代码及注释如下: public static int[] findTwoSingleNum(int[] num) { int[] twoNums = new int[2]; int result = 0; for (int i = 0; i < num.length;…
题目描述 给定一个整数数组,找出其中两个数相加等于目标值 输入 [1,3,5,7,9,11] 10 输出 1,9 3,7 代码: import java.util.HashMap; import java.util.HashSet; import java.util.Scanner; public class Main{ public static void main(String[] args) { Scanner sc = new Scanner(System.in); String str…
今天下午,看了一会github,想刷个题呢,就翻出来了刷点题提高自己的实际中的解决问题的能力,在面试的过程中,我们发现,其实很多时候,面试官 给我们的题,其实也是有一定的随机性的,所以我们要多刷更多的题.去发现问题. 题目:     给定一个整数数组 nums 和一个目标值 taget,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这个数组中同样的元素. 解析: 实际这里就是给你的一个列表的数字,给你一个预期,让你返…
//对传入sp的字符进行统计,三组两个相连字母“ea”"ou""iu"出现的次数,并将统计结果存入ct所指的数组中. #include <stdio.h> #include <string.h> #pragma warning (disable:4996) void fun(char*sp ,int *ct) { , b=, c=; while (*sp != '\0') { if (*sp == 'e')//利用if多重并列判断. { sp…
算法!用C#写一个函数,在一个数组中找出随意几个值相加等于一个值比如,数组{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}  要找出那些数相加等于100 解决方案一: #region 解决方案一 , , , , , , , , , , , , , , , , , , , }; List<List<int>> mylist = new List<List<int>>(); int length = mya…
题目: 给定一个旋转数组,但是你不知道旋转位置,在旋转数组中找出给定target值出现的位置:你可以假设在数组中没有重复值出现 举例: (i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2). 在旋转后的数组中查找6,则返回index =2. 若查找10,则返回index= -1: 解题思路: 由于数组中没有重复出现的数字,因此旋转后的数组基本可以划分为两部分:因此解题思路可以转换为我们熟悉的二分查找:但是在二分查找时我们需要注意,到底在哪边查找? 1)…
[Date]2013-09-19 [Author]wintys (wintys@gmail.com) http://wintys.cnblogs.com [Content]: 1.面试题 输入一个整型数组,找出最大值.最小值,最大值与第一个元素交换,最小值与最后一个元素交换,并输出. 2.程序 public class MaxMinTest {     public static void main(String[] args) {         int[] a={1,7,2,4,5,3,2,…
从一组数组中找出一组按不同顺序排列的字符串的数组元素将字符串转换成数组后再对数组进行 sort 排序,abcd 和 bdca 使用 sort 排序后会变成 abcd,将拍好序的字符串作为对象的 key 来保存排序一致的字符串.通过将字符转换成 Unicode 编码,用到的 sort 排序,会隐式的转换. 我这里只是简单提供一种思路,所以例子都是简单的一维数组,如果是二维数组的话,使用递归. var stringClassify = function(){ var arrLength = arr.…
题目 给出一个数组,找出K个最小的值 例如给出数组{5,2,4,3,1},给定K值3,则输出结果为{2,3,1} 程序 先给出第一个版本的程序 public static void printKNum(int[] source, int k) {//算法入口 if (k <= 0) { System.out.println("请出入合法的K值"); } else if (source.length <= k) {//如果数组的长度小于等于K,则全部输出 System.out…
题目:给定一个排序数组,找出给定的target值出现的范围:算法复杂度要求在O(logn);如果没有找到,则返回[-1, -1]; 举例: For example,Given [5, 7, 7, 8, 8, 10] and target value 8,return [3, 4]. 解题思路: 一看到题目要求的时间复杂度O(logn),就自然想要要用到二分的方法,这道题目,我们自然也是用二分的方法: mid = (start + end) / 2;则target和nums[mid]的关系有三种:…
这篇文章主要介绍了C#比较二个数组并找出相同或不同元素的方法,涉及C#针对数组的交集.补集等集合操作相关技巧,非常简单实用, 具有一定参考借鉴价值,需要的朋友可以参考下 " }; " }; //找出相同元素(即交集) var sameArr = arr1.Intersect(arr2).ToArray(); //找出不同的元素(即交集的补集) var diffArr = arr1.Where(c => !arr2.Contains(c)).ToArray(); 希望本文所述对大家…
#include <stdio.h> int main(void) { /* 选择排序算法 原理:从数组中 找出最小的元素然后交换位置: */ int a[10] = {9,5,10,7,2,3,1,6,8,4}; int i=0,j=0; int n = sizeof(a)/4; //外循环n-1轮 for(i=0;i<n-1;i++){ int pos = i;//始终指向最小的位置 for(j=i+1;j<n;j++){ if(a[j]<a[pos]){ pos = j…
java版本 package numCombine; /** * 从数组中找出所有组合为s的数 * @author root * */ public class NumComberAll { public static void main(String[] args) { // TODO Auto-generated method stub int a[] = {2,3,3,2,2,4,1,4,-2,5,1}; String b = ""; fun(a, b, 11, 0, 5); }…
Given an array of size n, find the majority element. The majority element is the element that appears more than ⌊ n/2 ⌋ times. You may assume that the array is non-empty and the majority element always exist in the array. 这里题目要求找出出现次数超过n/2的元素. 可以先排序,…
转自:https://blog.csdn.net/tiankong_/article/details/77234726#commentBox 1.题目 给定a.b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a.b文件共同的url? 2.思考过程 //我看见这个题就啥也没想到,想不到哈希啊... 可以使用哈希,对a文件中的所有进行遍历,再对b进行遍历,但是由于文件过大,并且还要给哈希表分配空间,所以一次性建立哈希表希望不大. 3.解决办法 50亿*64B=320…
就是找x+y=-z的组合 转化为找出值为-z满足x+y=-z的组合 解法一: 为了查找,首先想到排序,为了后面的二分,nlogn, 然后x+y的组合得n^2的复杂度,加上查找是否为-z,复杂度为nlogn + n^2 * logn 解法二: 还是先从小到大排序 nlogn 假设数组排序后为 a b c d e f 我们还是要找x+y=-z 会发现-z存在的可能只能是a+f和b+e,不会存在a+e和b+f这种情况(这里很重要,保证了算法的正确性),所以两个指针一头一尾往中间扫,肯定能找出来 fis…
Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero. Note: The solution set must not contain duplicate triplets. For example, given array S = [-1,…
曾经看到有这样一个JS题:有一组数字,从1到n,从中减少了3个数,顺序也被打乱,放在一个n-3的数组里请找出丢失的数字,最好能有程序,最好算法比较快假设n=10000 下面我也来贴一个算法. function getArray (){ //创建随机丢失3个数字的数组,并打乱顺序. var arr =[] for(var i=1;i<=10000;i++){ arr.push(i); } var a = arr.splice(Math.floor(Math.random()*arr.length)…
前提:最近在做后台的时候,页面加载太慢,故第一时间想到的自然是优化SQL, 优化后sql查询速度从 2秒变成了零点几秒, 以为就这麽完事了,然并卵,加载竟然花费30秒! 这麽慢,然后在代码中分块记录它的耗时时间, 发现是在 foreach 遍历的问题,嵌套数据量太大了, 我还嵌套了三层, 数据量大约为: 30*20000*20000: 额~ ~, 相乘起来数据量有点大了,怪不得会慢~ 1.模拟场景, 优化前是这样的: for($i=0; $i<30; $i++){ for($j=0; $j<2…
在网上看到过一个面试题,感觉挺有意思,看别人的代码写的逻辑不够谨慎,重写了一个,较真了又... package com.array7.algorithm; public class AlgorithmTest { public static void main(String[] args) { int[] arr = {2 ,4 ,5 ,8 ,10 ,12 ,13 ,16 ,17,Integer.MAX_VALUE }; int sum = 13; String result = getSumE…
/*利用冒泡排序实现*/ import java.util.Scanner;public class Paixun { public static void main(String[] args) { int []a;int p=0,q=9; a=new int[10] ; Scanner in=new Scanner(System.in); for(int i=0;i<10;i++) {  a[i]=in.nextInt(); } for(int j=0;j<a.length-1;j++) …
var twoSum = function(nums, target) { var len = nums.length; var exist = {} //这里利用了hash来存放已知的 exist[2] = 0; exist[3] = 1; exist[8] = 2; exist[9] = 3; // firstVaule = 11 - 8 巧合为 3, exist[3] 已经存在, for(var i = 0; i < len; i++){ var cur = nums[i]; var fi…
#include <bits/stdc++.h> using namespace std; const int N = 1e6,INF = 0x3f3f3f3f; int a[N]; int n,x; void fun(int n) { int left = 0, right = n-1; while(left < right) { int ans=a[left] + a[right]; if(ans == x) { cout<<a[left]<<' '<&…
class Solution {     public int[] twoSum(int[] nums, int target) {         for (int i = 0; i < nums.length;i++){             for(int j = i + 1;j < nums.length;j++){                 if (nums[j] == target - nums[i]){                     return new int…
利用改进的快排方法 public class QuickFindMaxKValue { public static void main(String[] args) { int[] a = {8, 3, 4, 1, 9, 7, 6, 10, 2, 5}; System.out.println(findMaxValue(a, 0, a.length - 1, 2)); } private static int findMaxValue(int[] a, int lo, int hi, int ma…
题目: 给定一个数组candidates和一个目标值target,求出数组中相加结果为target的数字组合: 举例: For example, given candidate set [2, 3, 6, 7] and target 7, A solution set is: [[7],[2, 2, 3]] 从举例中可以看出,同一个数字可以使用多次,且结果是唯一的: 解题思路: 我个人感觉该题目一点也不难,其实也是一个递归的过程,当达到递归条件时,就将结果加入结果集: 首先题目没说给的数组有啥特…
举例: $a = array(1,2,4,0,9,8,6);//定义一个数组 $len = count($a);//获取数组的长度 $min = $a[0];//默认情况下数组的第一个值是最小的 for ($i=0;$i<$len;$i++){//循环遍历数组的每一个值 if($min>$a[$i]){//将第一个默认为最小的值和数组中的所有值比较,如果默认的最小值比其他的值大,那叫交换,最终遍历完后,$min中存储的就是数组中的最小的值 $min = $a[$i]; } } echo $mi…
先讨论出现次数大于n/2的数字,如果这样的数字存在,那么这个数出现的次数大于其他数出现的次数的总和. 在数组A中,我们定义两个数据集合a1,a2.a1为出现次数大于n/2的数的集合,a2为其余数组成的集合.对于数组 A中元素a.b,假设a不等于b,那么有两种情况,分别为:a属于a1,b属于a2:a属于a2,b属于a2.对于这两种情况,如 果把a.b从数组A中去掉,集合a1的size依旧是大于a2的.按照这个思路,我们有如下代码: int m; ; for (auto num : nums) {…
package day01; import java.util.Arrays; import java.util.Random; public class MaxOfArray { public static void main(String[] args) { int[] arr = new int[10]; Random ran = new Random(); //随机生成数 for(int i = 0;i<=9;i++) { arr[i] = ran.nextInt(100); } Sys…