微软100题-第2题设计包含min函数的栈

38 篇文章 0 订阅
22 篇文章 0 订阅

发布一个k8s部署视频:https://edu.csdn.net/course/detail/26967

课程内容:各种k8s部署方式。包括minikube部署,kubeadm部署,kubeasz部署,rancher部署,k3s部署。包括开发测试环境部署k8s,和生产环境部署k8s。

腾讯课堂连接地址https://ke.qq.com/course/478827?taid=4373109931462251&tuin=ba64518

第二个视频发布  https://edu.csdn.net/course/detail/27109

腾讯课堂连接地址https://ke.qq.com/course/484107?tuin=ba64518

介绍主要的k8s资源的使用配置和命令。包括configmap,pod,service,replicaset,namespace,deployment,daemonset,ingress,pv,pvc,sc,role,rolebinding,clusterrole,clusterrolebinding,secret,serviceaccount,statefulset,job,cronjob,podDisruptionbudget,podSecurityPolicy,networkPolicy,resourceQuota,limitrange,endpoint,event,conponentstatus,node,apiservice,controllerRevision等。

第三个视频发布:https://edu.csdn.net/course/detail/27574

详细介绍helm命令,学习helm chart语法,编写helm chart。深入分析各项目源码,学习编写helm插件


————————————————------------------------------------------------------------------------------------------------------------------

scala版本

package ms

import scala.collection.mutable.ArrayBuffer
/**
 * 2.设计包含min函数的栈(栈)
定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。
要求函数min、push以及pop的时间复杂度都是O(1)。
 */
class CustomStack[T<%Ordered[T]]{
  var data:ArrayBuffer[T]=ArrayBuffer[T]();
  var mins:ArrayBuffer[T]=ArrayBuffer[T]();
  def push(value:T)={
    data.append(value)
    if(mins.isEmpty){
      mins.append(value)
    }else{
      if(mins(mins.length-1)>value){
        mins.append(value)
      }
    }
  }
  def pop():Option[T]={
    if(data.length==0){
      return None
    }
    val v=data.remove(data.length-1);
    if(v==mins(mins.length-1)){
      mins.remove(mins.length-1)
    }
    return Some(v)
  }
  
  def min():Option[T]={
    if(mins.length==0){
      return None 
    }
    Some(mins(mins.length-1))
  }
}

object MicroSoft002 extends App{
  val stack=new CustomStack[Int]();
  stack.push(5);
  stack.push(10);
  stack.push(3);
  println(stack.min)
  stack.pop()
  println(stack.min)
  stack.pop()
  println(stack.min)
  stack.pop()
  println(stack.min)
}

 

 

python版本

 

'''
Created on 2017-1-9
2.设计包含min函数的栈(栈)
定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。
要求函数min、push以及pop的时间复杂度都是O(1)。
@author: admin
'''
class MinStack:
    def __init__(self):
        self.mainAry=[]
        self.auxAry=[]
    def push(self,data):
        if len(self.mainAry)==0:
            self.auxAry.append(data)
        elif data<=self.auxAry[len(self.auxAry)-1]:
            self.auxAry.append(data)
        self.mainAry.append(data)
    def pop(self):
        if len(self.mainAry)==0:
            raise IndexError
        data=self.mainAry[len(self.mainAry)-1]
        del self.mainAry[len(self.mainAry)-1]
        if data==self.auxAry[len(self.auxAry)-1]:
            del self.auxAry[len(self.auxAry)-1]
        return data
    def min(self):
        if len(self.auxAry)==0:
            raise IndexError
        else:
            return self.auxAry[len(self.auxAry)-1]        
if __name__ == '__main__':
    stack=MinStack()
    stack.push(7)
    stack.push(5)
    stack.push(9)
    stack.push(2)
    stack.push(4)
    print(stack.pop())
    print(stack.min())
    print(stack.pop())
    print(stack.min())
    print(stack.pop())
    print(stack.min())
    print(stack.pop())
    print(stack.min())

 


java版本

 

地址1 http://blog.csdn.net/hxpjava1/article/details/22096809

 

c语言版本

 

/*
 * microsoft002.c
 *
 *  Created on: 2017年1月26日
 *      Author: admin
 *
2.设计包含min函数的栈(栈)
定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。
要求函数min、push以及pop的时间复杂度都是O(1)。

 */
#include <stdio.h>

#define ARRAY_MAX_LENGHT 100

void push(int data);
int min();
int pop();

//主数组
static int mainArray[ARRAY_MAX_LENGHT];
//辅助数组
static int auxArray[ARRAY_MAX_LENGHT];

static int mainIndex=0;
static int auxIndex=0;

int main2(){
	push(5);
	push(4);
	push(10);
	printf("%d\n",min());
	printf("%d\n",pop());
	printf("%d\n",min());
	printf("%d\n",pop());
	printf("%d\n",min());
	return 0;
}


void push(int data){
	mainArray[mainIndex++]=data;
	if(auxIndex==0){
		auxArray[auxIndex++]=data;
	}else{
		if(auxArray[auxIndex-1]>data){
			auxArray[auxIndex++]=data;
		}
	}
}
int min(){
	if(auxIndex==0){
		return -1;
	}
	return auxArray[auxIndex-1];
}
int pop(){
	if(mainIndex==0){
		return -1;
	}
	if(mainArray[mainIndex-1]==auxArray[auxIndex-1]){
		auxIndex--;
	}
	return mainArray[--mainIndex];
}

 

c++版本

 

 

/*
 * microsoft002.cpp
 *
 *  Created on: 2017年2月6日
 *      Author: admin
 2.设计包含min函数的栈(栈)
定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。
要求函数min、push以及pop的时间复杂度都是O(1)。
 */
#define MAX_LEN 100
#include "iostream"
using namespace std;

template <typename T>
class MinStack{
public:
	MinStack(){
		mainIndex=0;
		auxIndex=0;
	}
public:
	void push(T value){
		mainArray[mainIndex++]=value;
		if(auxIndex==0){
			auxArray[auxIndex++]=value;
		}else{
			if(value<=auxArray[auxIndex-1]){
				auxArray[auxIndex++]=value;
			}
		}
	}

	T pop(){
		T tmp=mainArray[mainIndex-1];
		if(auxArray[auxIndex-1]==mainArray[mainIndex-1]){
			mainIndex--;
			auxIndex--;
		}else{
			mainIndex--;
		}
		return tmp;
	}

	T min(){
		return auxArray[auxIndex-1];
	}
private:
	int mainIndex;
	int auxIndex;
	T mainArray[MAX_LEN];
	T auxArray[MAX_LEN];
};


int main002(){
	MinStack<int> stack;
	stack.push(10);
	stack.push(9);
	stack.push(12);
	stack.push(6);
	cout<<stack.min()<<endl;
	cout<<stack.pop()<<endl;
	cout<<stack.min()<<endl;
	stack.push(3);
	cout<<stack.min()<<endl;
	cout<<stack.pop()<<endl;
	cout<<stack.min()<<endl;
	return 0;
}

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hxpjava1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值