精华内容
下载资源
问答
  • 对于这个题要输出子串存在一个规律:比如输出我们对所有字符都以一位编码 则对于abcde 这样一个串 输出a记作00001(1) 输出b记作00010(2) 输出c记作00100(4) 输出d记作01000(8) 输出e则记作10000(16) 输出ab 则记...

    在CSDN博客看到一篇文章 是阿里实习生店面题

    通过观察题目 我得出了

    对于这个题要输出的子串存在一个规律:比如输出我们对所有的字符都以一位编码 则对于abcde 这样一个串 输出a记作00001(1) 输出b记作00010(2) 输出c记作00100(4) 输出d记作01000(8) 输出e则记作10000(16) 输出ab 则记作00011(3) 输出bc 则记作00110(6) 输出cd记作01100(12) 输出de则记作11000(24) 输出abc记作00111(7) 输出bcd记作01110(14) 输出cde记作11100(28) 输出abcd记作01111(15) 输出11110(30) 输出abcde 记作11111(31) 则可以发现规律 前5个记作(2^1-1)*2^i 从第六个开始的四个数记作 (2^2-1)*2^i 之后的3个数记作 (2^3-1)*2^i 之后的两个数 (2^4-1)*2^i 之后的一个数记作(2^5-1)*2^i i从零开始. 整体发现规律则是记字符串长度为n, 则对于长度为1的个数为n 长度为2的长度为n-1 对于长度为3的个数为n-2 依次类推 这样我们就可以总结出一个规律 for (i = n; i > 0; --i) { int len = n; int pos = len - i; int j = 0; for (; j < n; ++j){ nums[j] = array[pos] * array[j];}} 在array[]数组中存储的2^0-2^30 这样再做位运算 从而决定输出那个位置的字符就可以 但是貌似这样对时间复杂度没有什么改善 也是O(n*n*n)的

    从而给出了一个时间复杂度为O(n^2)的算法

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    #define  MAX  15
    
    int  main(void)
    {
        char*  str = "abcde";
    	int  array[MAX] = {1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384};
    	int len = strlen(str);
    	
    	int i = len;
    	int n = i * (i + 1) / 2;
    	int k = 0;
    	int j = 0;
        int* numbers = (int*)malloc(sizeof(int) * n);
        
        if (numbers == NULL)
        {
            system("pause");
            exit(1);
        }
    	
    	for (; i > 0; --i)
    	{
    		int pos = len - i + 1;
    		
    		for (j = 0; j < i; ++j)
    		{
    		    numbers[k] = (array[pos] - 1) * array[j];
    		    ++k;
    		}
    	}
    	
    	
    	for (j = 0; j < n; ++j)
    	{
    		int m = 0;
    			
    		for (k = 1; k <= array[MAX-1]; k <<= 1)
    		{
    			if (numbers[j] & k)
    			{
    			    printf("%c\t", str[m]);    
    			}
    			++m;
    		}
    			
    	    printf("\n");
    	}
    	
    	system("pause");
    	return  0;
    }
    


    展开全文
  • 今天在网上逛贴,天然看见一个刚刚电过阿里同学发上来面的题目,比较好奇,题目是这样:给定一个字符串,输出其所有连续子串,如给定字符串为abcd,则要输出其全部连续子串为:a,b,c,d,ab,bc,cd,...


    今天在网上逛贴,天然看见一个刚刚电面过阿里的同学发上来的电面的题目,比较好奇,题目是这样的:给定一个字符串,输出其所有的连续子串,如给定字符串为abcd,则要输出其全部连续子串为:a,b,c,d,ab,bc,cd,abc,bcd,abcd,

    可能大家看到这道题目,首先映入脑海的是从头到尾遍历,这是最为常规的解法,但是其复杂度我们不难分析出为O(n*n*n),显然面试管肯定不满意这种解法,

    我们可以看到这是要不断循环的,于是我们想到了递归,下面是递归的基本思想:

    1、刚开始,输入abcd,我们从后往前遍历,

    abcd->abc->ab->a,一次递归完成

    2、将原字符串的第一个字符截下,用后面的字符组成一个新的字符串,开始新的遍历,即bcd,开始新的遍历,

    bcd->bc->b

    3、继续下去,cd->c

    4、最后是d

    package programmer;
    
    import java.util.Scanner;
    
    public class SuccessiveString {
    	public void successiveString(String str) {
    		for (int i = str.length(); i >= 0; i--)
    			System.out.println(str.substring(0, i));
    		if (str.length() > 1)
    			successiveString(str.substring(1));
    	}
    
    	public static void main(String[] args) {
    		Scanner sc = new Scanner(System.in);
    		String str = sc.nextLine();
    		new SuccessiveString().successiveString(str);
    	}
    }
    

    上面就是用java书写的源代码,可以分析此代码的复杂度为n*T(n)=n*(n+n-1+n-2+...+1)=O(n*n*n),显然要优化不少。

    上面只是自己的拙见,希望大家多多批评指正。

    展开全文
  • 二维粗糙面的模拟

    千次阅读 2019-09-26 20:16:56
    同一维粗糙模拟一样,公式和基本理论神马的我就不敲了 有兴趣同学可以参考 http://files.cnblogs.com/xd-jinjian/%E7%AC%AC%E4%BA%8C%E7%AB%A0%EF%BC%88%E5%BB%BA%E6%A8%A1%EF%BC%89.pdf 二维粗糙面的效果图...

    同一维粗糙面模拟一样,公式和基本理论神马的我就不敲了 有兴趣的同学可以参考

    http://files.cnblogs.com/xd-jinjian/%E7%AC%AC%E4%BA%8C%E7%AB%A0%EF%BC%88%E5%BB%BA%E6%A8%A1%EF%BC%89.pdf

    二维粗糙面的效果图如下所示

    具体代码如下

    // 2D_GS_RS.cpp : 定义控制台应用程序的入口点。
    //*************本程序基于Monte Carlo方法生成二维高斯粗糙面**************
    //by changwei
    //**********************************************************************
    #include "stdafx.h"
    #include<iostream>
    #include<iomanip>                                           //格式化输出控制符必包含的头文件
    #include<fstream>
    #include<cmath>
    #include<stdlib.h>
    #include<complex>
    
    #define M 64                                                 //x方向采样点数
    #define N 64                                                 //y方向采样点数
    #define Mdx 8                                                //x方向单位波长内的采样点数
    #define Ndy 8                                                //y方向单位波长内的采样点数
    #define pi 3.141592627                                       //定义常数pi
    using namespace std;
    
    complex<double> unit_i(0.0,1.0);
    complex<double> unit_r(1.0,0.0);
    
    //产生随机数的子函数
    void random2(double start,double end,double seed,double *rand2)  //在用二维数组作为形参时,必须指明列数
    {
    	double s=65536.0;
    	double w=2053.0;
    	double v=13849.0;
    	double T=0.0;
    	int m;
    	for(int i=0;i<N*M;i++)
    	{
    		T=0.0;
    		for(int k=0;k<12;k++)
    		{
    			seed=w*seed+v;
    			m=seed/s;
    			seed=seed-m*s;
    			T=T+seed/s;
    		}
    		rand2[i]=start+end*(T-6.0);
    	}
    	return;
    }
    //2D傅里叶变换的子程序	
    void fft2D(double *data1,int *nn,int ndim,int isign)
    {
    	 int i1,i2,i2rev,i3,i3rev,ibit,idim,ifp1,ifp2,ip1,ip2,ip3,k1,k2,n,nprev,nrem,ntot;
    	 double tempi,tempr;
    	 double theta,wi,wpi,wpr,wr,wtemp;
         ntot=1;
         for(idim=0;idim<ndim;idim++)
    	 {
    		 ntot=ntot*nn[idim];
    	 }
         nprev=1;
         for(idim=0;idim<ndim;idim++)
    	 {
    		 n=nn[idim];
             nrem=ntot/(n*nprev);
             ip1=2*nprev;
             ip2=ip1*n;
             ip3=ip2*nrem;
             i2rev=1;
    		 for(i2=1;i2<=ip2;i2=i2+ip1)
    		 {
                if(i2<i2rev)
    			{
    				for(i1=i2;i1<=i2+ip1-2;i1=i1+2)
    				{
    					for(i3=i1;i3<=ip3;i3=i3+ip2)
    					{
    						i3rev=i2rev+i3-i2;
    						tempr=data1[i3-1];
    						tempi=data1[i3];
    						data1[i3-1]=data1[i3rev-1];
    						data1[i3]=data1[i3rev];
    						data1[i3rev-1]=tempr;
    						data1[i3rev]=tempi;
    
    					}
    				}
    			}
                ibit=ip2/2;
    			while((ibit>=ip1)&&(i2rev>ibit))
    			{
    				 i2rev=i2rev-ibit;
    				 ibit=ibit/2;
    			}
                i2rev=i2rev+ibit;
    		 }
             ifp1=ip1;
    		 while(ifp1<ip2)
    		 {
    			  ifp2=2*ifp1;
    			  theta=isign*2.0*pi/(ifp2/ip1);
    			  wpr=-2.0*sin(0.5*theta)*sin(0.5*theta);
    			  wpi=sin(theta);
    			  wr=1.0;
    			  wi=0.0;
    			  for(i3=1;i3<=ifp1;i3=i3+ip1)
    			  {
    				  for(i1=i3;i1<=i3+ip1-2;i1=i1+2)
    				  {
    					  for(i2=i1;i2<=ip3;i2=i2+ifp2)
    					  {
    						  k1=i2;
    						  k2=k1+ifp1;
    						  tempr=wr*data1[k2-1]-wi*data1[k2];
    						  tempi=wr*data1[k2]+wi*data1[k2-1];
    						  data1[k2-1]=data1[k1-1]-tempr;
    						  data1[k2]=data1[k1]-tempi;
    						  data1[k1-1]=data1[k1-1]+tempr;
    						  data1[k1]=data1[k1]+tempi;
    					  }
    				  }
    				  wtemp=wr;
    				  wr=wr*wpr-wi*wpi+wr;
    				  wi=wi*wpr+wtemp*wpi+wi;
    			  }
    			  ifp1=ifp2;
    		 }
    		 nprev=n*nprev;
    	 }   
          return;	
    }  
    void Gauss_roughsurface(double hrms,double lcor,double seed,double dx,double dy,double x[][N],double y[][N],double z[][N])
    {
    	double LX=M*dx;                                                 //粗糙面x方向的长度
    	double LY=N*dy;                                                 //粗糙面y方向的长度
    	double lx,ly;                                                   //x,y方向的相关长度
    	lx=lcor;
    	ly=lcor;
    	double kx,ky;                                                   //x,y方向的离散空间波数
    	double rand2[M*N];                                             //随机数
    	double s[M][N];                                                 //功率谱
    	double dataF[2*M*N],dataFR[2*M*N],dataFG[2*M*N];
    	double tr1,tr2,ti1,ti2;
    	int Nij;
    	int NN[2];
    	NN[0]=N;
    	NN[1]=M;
    	//相关长度的变换
    	lcor=lcor/sqrt(dx*dx+dy*dy);     
    	//计算坐标轴
    	for(int i=0;i<M;i++)
    	{
    		for(int j=0;j<N;j++)
    		{
    			x[i][j]=-LX/2.0+j*dx;                                           //x方向坐标
    			y[i][j]=-LY/2.0+i*dy;                                           //y方向坐标
    		}
    	}
    	//计算功率谱
    	/*for(int i=0;i<M;i++)
    	{
    		kx=2*pi*i/LX;                                               //求x方向的空间波数
    		for(int j=0;j<N;j++)
    		{
    			ky=2*pi*j/LY;                                           //求y方向的空间离散波数
    			s[i][j]=hrms*hrms*lx*ly/4.0/pi*exp(-kx*kx*lx*lx/4.0-ky*ky*ly*ly/4.0);         //求高斯功率谱
    			//s[i][j]=2.0/sqrt(pi)/lcor*exp(-2.0*(x[i][j]*x[i][j]+y[i][j]*y[i][j])/lcor/lcor);
    		}
    	}*/
    	
    	double tl1,tl2,temp1,temp2;
    	double xx,yy;
    	tl1=lcor*lcor/2.0;
    	tl2=sqrt(pi)*lcor/2.0;
    	for(int i=0;i<M;i++)
    	{
    		xx=-(M-1)/2+i-0.5;
    		for(int j=0;j<N;j++)
    		{
    			yy=-(N-1)/2+j-0.5;
    			temp1=xx*xx+yy*yy;
    			temp2=exp(-1.0*temp1/tl1);
    			s[i][j]=temp2/tl2;
    		}
    	}
    	//滤波函数的二维傅里叶变换
    	
    	for(int i=0;i<M;i++)
    	{
    		for(int j=0;j<N;j++)
    		{
    			Nij=i*M+j;
    			dataFG[2*Nij]=s[i][j];
    			dataFG[2*Nij+1]=0.0;
    		}
    	}
    	fft2D(dataFG,NN,2,1);
    	
    	//正态分布随机数并转换为傅里叶变换数组
    	random2(0.0,1.0,seed,rand2);
    	for(int i=0;i<M;i++)
    	{
    		for(int j=0;j<N;j++)
    		{
    			Nij=i*M+j;
    			dataFR[2*Nij]=rand2[Nij];
    			dataFR[2*Nij+1]=0.0;
    		}
    	}
    	fft2D(dataFR,NN,2,1);
    
    	//滤波函数与随机数的乘积及其二维逆傅里叶变换
    	for(int i=0;i<M*N;i++)
    	{
    		tr1=dataFR[2*i]*dataFG[2*i];
    		tr2=dataFR[2*i+1]*dataFG[2*i+1];
    		dataF[2*i]=tr1-tr2;
    		ti1=dataFR[2*i]*dataFG[2*i+1];
    		ti2=dataFR[2*i+1]*dataFG[2*i];
    		dataF[2*i+1]=ti1+ti2;
    	}
    	fft2D(dataF,NN,2,-1);
    	//高度函数的生成
    	for(int i=0;i<M;i++)
    	{
    		for(int j=0;j<N;j++)
    		{
    			Nij=i*M+j;
    			z[i][j]=hrms*dataF[2*Nij]/(M*N);
    		}
    	}
        return;
    }
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	double wavespeed=3.0*pow(10.0,8);                                 //波速
    	double frequence=1.0*pow(10.0,9);                                 //频率
    	double lamd=wavespeed/frequence;                                  //波长
    	double hrms=0.1*lamd;                                             //均方根高度
    	double lcor=0.5*lamd;                                             //相关长度
    	double seed=123.456;                                              //随机数种子
    	double dx=lamd/Mdx;                                               //x方向采样间距
    	double dy=lamd/Ndy;                                               //y方向采样间距
    	double x[M][N];                                                   //二维粗糙面x方向坐标
    	double y[M][N];                                                   //二维粗糙面y方向坐标
    	double z[M][N];                                                  //二维粗糙面高度起伏值
    
    	Gauss_roughsurface(hrms,lcor,seed,dx,dy,x,y,z);
    	ofstream foutrs("2DGRS.dat",ios::out);
    	for(int i=0;i<M;i++)
    		for(int j=0;j<N;j++)
    			foutrs<<setiosflags(ios::left)<<setw(8)<<x[i][j]<<setiosflags(ios::left)<<setw(8)<<y[i][j]<<setiosflags(ios::left)<<setw(8)<<z[i][j]<<endl;
    	foutrs.close();
    	return 0;
    }
    

      

    转载于:https://www.cnblogs.com/xd-jinjian/p/3674578.html

    展开全文
  • 一面 自我介绍 实习介绍 项目介绍 redis相关问题 springcloud常用组件有什么 ...mq除了幂等还应该注意什么 ...4、线程AB,让A在B前执行,有几种方法(说了一种,他还让说,就又说了一个) 5、线.

    一面

    自我介绍

    实习介绍

    项目介绍

    redis相关问题

    springcloud常用组件有什么

    mq除了幂等还应该注意什么

    q都可靠吗

    具体不记得了,主要围绕在项目

     

    二面

    自我介绍

    1、Object里面的方法

    hashcode和equals关系(为什么重写)

    2、数据库索引(主要问点在b+树)

    什么字段可以作为索引?

    3、锁(乐观悲观,分布式redis的)

    zk的分布式锁有了解吗?

    4、线程AB,让A在B前执行,有几种方法(我说了一种,他还让说,就又说了一个)

    5、线程池你自己实现,怎么实现

    6、JVM了解吗(只说堆栈)?

    7、SpringBean的声明周期?

    8、三次握手?

    9、十万个数,找最频繁的是个,不许用map

     

    hr面

    自我介绍

    谈了一下大学

    你的缺点

    期望薪资

    看待加班

    具体不记得了,就是唠嗑的感觉,并没有感觉有为难人的意思

     

    以上除了自我介绍,不分先后顺序

    展开全文
  • 看到一道阿里电面的题目,给定一个字符串,输出其所有连续子串,如:给定字符串为abcd,则要输出其全部连续子串为:a,b,c,d,ab,bc,cd,abc,bcd,abcd。  给出JAVA算法如下: public class Abc { ...
  • AB测试原理很简单,只用到了最简单统计假设检验,但表面简单通常都隐藏着陷阱,这一点没有经过实践摸爬滚打是不容易看到,今天就把前人已经踩过坑,一共15个,给大家分享一下。在分享之前,大家脑中...
  • 给定一个字符串,输出其所有连续子串,如:给定字符串为abcd,则要输出其全部连续子串为:a,b,c,d,ab,bc,cd,abc,bcd,abcd 第一感觉就是一个嵌套循环Java代码如下: public class Test { public static...
  • 百度电

    2011-04-02 22:41:00
    整个面试长达1个半... 5、设计一个算法,比较2个字符串大小,要求如果相同位置对应子字符串都是数字,要按数字来比较,例如"ab21c"和"ab120",其他情况都按字符比较; 6、一个令很无语问题,
  • 结果用到微乎其微……结果二面的问题比较综合(见后),还和一面有重复问题:如何测试一个XXX……感觉这次要悲剧了,简历上说熟悉SOCKET和SHELL编程竟然还是没复习到,不知道会不会怀疑简历水分……...
  • 创新工场面筋--2014校园招聘

    千次阅读 2013-09-17 19:06:20
    一面主要问算法,问了两个算法, 一、输入字符串:AB123abd32HDU, 输出:12233ABDHUabd 二、对归并排序实现非递归算法。 下面是其他面试官问算法: 1、一串数字每两个数之间差值是1或者-1,给定一个数N,求...
  • 看你用了redis,那你知道redis是共享内存还是进程内存 进程内存 二为什么? 三 那你说一下redis数据结构吧 MySQL 一 你用什么数据库。 二 那现在给你一个联合索引ab,有三个条件where a = ? 、 ...
  • 女友喜欢吃炒菜,喜欢吃面条,而且女友喜欢餐馆A只卖炒菜,喜欢餐馆B只卖面条,经过最近几天在AB两家餐厅买饭经历,对于如何“高效率”买饭,我有一些心得。  第一天,先去A餐馆点了炒菜,然后就...
  • 本人总结出来图= = 。 没什么逻辑思维,让大家好记一点。...第二步:B收到请求后,觉得A可以了解下,回复他可以啊(ACK),也想认识下你(SYN), 但是这种有牌面的服务器,你送岂不是很没有...
  • 前面两面很顺利,HR说工作在北京,以为有上海和成都岗位,应该是HR没谈和!不过北京确实去不了就不占名额了。面经分享一下! 1 40min ArrayList和LinkedList 线程安全List(讲了copyonwriteList) 不用...
  • 当A(x,y,z,w)和B(x,y,z,w),Aw为负值,Bw为正值,那么怎么计算直线AB和裁剪面的交点坐标?拜托各位大牛了~软渲染流水线卡到这一步完全没有思路,对于所有在视点之前图形渲染没有问题,一旦w出现负值就各种...
  • BZOJ 洛谷 题解 发现这种题总是做不动。。。 令\(A=\frac{b+\sqrt d}{2},B=\frac{b-\sqrt d}{2}\)。 发现\(A+B=b,AB=\frac{b^2-d}{4}\)。 要求东西是\(A^n\),我们变成\(A^n+B^n-B^n\)。 分开考虑,发现\(A...
  • 上海电信光猫经官方人员设置桥接后,原有IPTV因无法获取相应AB面IP,会导致无法使用。这是基于梅林7.9.1已调试好VLAN备份文件。是R8000加梅林7.9刷,目前使用一切正常。jffs备份个人理解应该不会区分版本。...
  • 这场总的来说打的还行吧,不过fst了一题很郁闷。。感觉从pkusc回来看CF的英文题就和看中文一样。。出AB的速度我觉得还是不错的。...我的做法是先找AB再找BA和先找BA再找AB各做一次。#include #include<iostream>
  • 我的基本思路是先排序后根据条件判断。 假设三个数a&gt;b&gt;c,如果这三个数能构成一个长方体,那么排序后这三个数所组成的六个以此应该是: ab ab ac ac bc bc 这样再根据构成长方体的条件(a,b,c所对应...
  • 题目要求原字符串可以分解成多少种(AB)iC(AB)^iC(AB)iC形式,该式子意义见题。 如果不考虑那个奇怪奇偶限制,那么应该怎么做? 首先有两种想法,肯定是先枚举一部分,然后通过一些奇怪优化来解决。 比较...
  • OPPO校招面试回忆,Java开发面试

    千次阅读 2019-03-10 20:01:16
    (一面是我和我的一个同学一块去的,幸运的是一面我俩都过了。设计大数据方面的,没问过我,我把他回忆起来的几个都顺便写了一下) 一面题: 了解过mysql优化和调优吗? mysql索引执行顺序,三个列构成索引,A/...
  • ``` </div> <div class="form-group"> ...想请问大神如何在我的点击事件里再删除p元素的同时,用删除当前选中input file的值,实现真正意义上的文件的多选,删除
  • 举个例子,假设只有一个冰淇淋,不用转骰子直接就会买这个,所以转骰子次数是0,如果我有4个冰淇淋,2个骰子可以先把冰淇淋abcd分成两部分,ab一组,cd一组,这是等概率先转一次骰子确定是选a...
  • 不过,还是想尝试实现波纹水面折射效果,因为只用考虑一个,所以光学模型还是比较容易构建。 将上图中光线原理转换为几何问题: 已知向量AB(-V)、向量AD(-N1)、角BAD(θ,根据V和N1计算出来)、...
  • AssetBundle管理与加载

    千次阅读 2018-01-21 23:32:54
    本系列文章由抗痘洁面泥 出品,转载请注明出处。  Assetbundle管理与加载 最近在做项目优化时候发现公司项目用还是老式WWW去加载assetbundle资源形式,...这样会加重Update里面逻辑负担,所以

空空如也

空空如也

1 2 3 4 5
收藏数 96
精华内容 38
关键字:

我的ab面