zoukankan      html  css  js  c++  java
  • 南京三星面试准备3--数组&基础数据结构

    1、用递归颠倒一个栈。

    void PushToBottom(stack<int> &mystack,int num)
    {
    	if(mystack.size()==0)
    	{
    		mystack.push(num);
    		return;
    	}
    	int temp=mystack.top();
    	mystack.pop();
    	PushToBottom(mystack,num);
    	mystack.push(temp);
    }
    
    void Reverse(stack<int> &mystack)
    {
    	if(mystack.size()==1)
    		return;
    	int temp=mystack.top();
    	mystack.pop();
    	Reverse(mystack);
    	PushToBottom(mystack,temp);
    }
    
    递归的关键点:

    1、必须定义一个终止条件;否则函数会永远递归下去,直到栈空间耗尽。所以,递归函数一般都用类似if语句来判断终止条件,如果条件成立则继续调用,否则函数结束调用,开始返回。

    2、找到本级函数和下一级函数的等价条件。


     

    2.在一个int数组里查找这样的数,它大于等于左侧所有数,小于等于右侧所有数。

    用两个数组a、b。a[i]、b[i]分别保存从前到i的最大的数和从后到i的最小的数,


    3.求随机数构成的数组中找到长度大于=3的最长的等差数列
    输出等差数列由小到大: 
    如果没有符合条件的就输出
    格式:
    输入[1,3,0,5,-1,6]
    输出[-1,1,3,5]
    要求时间复杂度,空间复杂度尽量小

    4.

    (1).对于一个整数矩阵,存在一种运算,对矩阵中任意元素加一时,需要其相邻(上下左右)
    某一个元素也加一,现给出一正数矩阵,判断其是否能够由一个全零矩阵经过上述运算得到。
    (2).一个整数数组,长度为n,将其分为m份,使各份的和相等,求m的最大值
      比如{3,2,4,3,6} 可以分成{3,2,4,3,6} m=1; 
      {3,6}{2,4,3} m=2
      {3,3}{2,4}{6} m=3 所以m的最大值为3

  • 相关阅读:
    年底送书活动:送出6本技术书籍,价值372元!
    (7)ASP.NET WEB服务器控件
    (6)DataTable 转换成 Json
    (9)C#连mysql
    (8)C#连sqlserver
    VM虚拟机
    (7)C#连DB2---oledb方式
    (48)C#网络4 web
    远程桌面
    (47)C#运行时序列化
  • 原文地址:https://www.cnblogs.com/keanuyaoo/p/3301845.html
Copyright © 2011-2022 走看看