微软100题第7题(判断俩个链表是否相交)

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插件


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

1python版

 

'''
Created on 2017-1-17

@author: admin
第7题(链表)
微软亚院之编程判断俩个链表是否相交
给出俩个单向链表的头指针,比如h1,h2,判断这俩个链表是否相交。
为了简化问题,我们假设俩个链表均不带环。
问题扩展:
1.如果链表可能有环列?
2.如果需要求出俩个链表相交的第一个节点列?
'''
from _overlapped import NULL
class CrossList:
    def __init__(self):
        self.listA=Node()
        self.listB=Node()
        nodeA=self.listA
        nodeB=self.listB
        for i in range(0,10):
            nodeA.next=Node()
            nodeA=nodeA.next
            if i==9:
                nodeB.next=nodeA
            else:
                nodeB.next=Node()
                nodeB=nodeB.next
    def isCross(self):
        nodeA=self.listA
        nodeB=self.listB
        while nodeA!=NULL:
            while nodeB!=NULL:
                if nodeA==nodeB:
                    return True
                nodeB=nodeB.next
            nodeB=self.listB
            nodeA=nodeA.next
        return False
                
        
class Node:
    def __init__(self):
        self.next=NULL
if __name__ == '__main__':
    cl=CrossList()
    print(cl.isCross())

 

2java版

http://blog.csdn.net/hxpjava1/article/details/22210535

 

 

 

3scala版

 

package ms
/**
 * 第7题(链表) 
微软亚院之编程判断俩个链表是否相交 
给出俩个单向链表的头指针,比如h1,h2,判断这俩个链表是否相交。 
为了简化问题,我们假设俩个链表均不带环。 
问题扩展: 
1.如果链表可能有环列? 
2.如果需要求出俩个链表相交的第一个节点列?
 */
class CrossList{
  var listA:Node=Node()
  var listB:Node=Node()
  def init(){
    var tmpA=listA;
    var tmpB=listB
    for(i <-0 until 10){
      tmpA.next=Node()
      tmpA=tmpA.next
      if(i==9){
        tmpB.next=tmpA
      }else{
        tmpB.next=Node()
        tmpB=tmpB.next
      }
    }
  }
  
  def isCross():Boolean={
    var tmpA=listA;
    var tmpB=listB;
    while(tmpA!=null){
      while(tmpB!=null){
        if(tmpA==tmpB){
          return  true;
        }
        tmpB=tmpB.next
      }
      tmpB=listB
      tmpA=tmpA.next
    }
    return false;
  }
}

case class Node(var next:Node=null)

object MicroSoft007 {
  
  def main(args: Array[String]): Unit = {
    var list=new CrossList()
    list.init()
    println(list.isCross())
  }
}

 

c语言版本

 

 

/*
 * microsoft007.c
 *
 *  Created on: 2017年1月26日
 *      Author: admin
 第7题(链表)
微软亚院之编程判断俩个链表是否相交
给出俩个单向链表的头指针,比如h1,h2,判断这俩个链表是否相交。
为了简化问题,我们假设俩个链表均不带环。
问题扩展:
1.如果链表可能有环列?
2.如果需要求出俩个链表相交的第一个节点列?
 */
#include <stdio.h>
#include <stdlib.h>
#define true 1
#define false 0

typedef int bool;

typedef struct LinkNode{
	int val;
	struct LinkNode * next;
}node;

void initLinkedList(int  lnk1,int  lnk2);
bool isCrosss();
static node * makeNode(int value);

node * plnk1;
node * plnk2;

int main007(){
	initLinkedList(10,10);
	bool res= isCrosss();
	if(res==true){
		printf("相交\n");
	}else{
		printf("不相交\n");
	}
	return 0;
}

void initLinkedList(int  lnk1,int  lnk2){
	node * tmp;
	for(int i=1;i<=lnk1;i++){
		if(i==1){
			plnk1=makeNode(1);
			tmp=plnk1;
		}else{
			tmp->next=makeNode(1);
			tmp=tmp->next;
		}

	}

	tmp=NULL;
	for(int i=1;i<=lnk2;i++){
		if(i==1){
			plnk2=makeNode(1);
			tmp=plnk2;
		}else{
			tmp->next=makeNode(1);
			tmp=tmp->next;
		}

	}

	tmp->next=plnk1;
}

node * makeNode(int value){
	node* p=malloc(sizeof(node));
	p->val=value;
	p->next=NULL;
	return p;
}
bool isCrosss(){
	node * tmp1=plnk1;
	node * tmp2=plnk2;
	while(tmp1!=NULL){
		bool cross=false;
		while(tmp2!=NULL){
			if(tmp1==tmp2){
				cross=true;
				break;
			}
			tmp2=tmp2->next;
		}
		if(cross){
			return true;
		}
		tmp1=tmp1->next;
	}
	return false;
}


c++版本

 

/*
 * microsoft007.cpp
 *
 *  Created on: 2017年2月6日
 *      Author: admin
 第7题(链表)
微软亚院之编程判断俩个链表是否相交
给出俩个单向链表的头指针,比如h1,h2,判断这俩个链表是否相交。
为了简化问题,我们假设俩个链表均不带环。
问题扩展:
1.如果链表可能有环列?
2.如果需要求出俩个链表相交的第一个节点列?
 */
#include "iostream"
using namespace std;

class CrossLinkNode{
public:
	CrossLinkNode(int value,CrossLinkNode*next=NULL){
		this->value=value;
		this->next=next;
	}
public:
	CrossLinkNode*& getNext()  {
		return next;
	}

	void setNext( CrossLinkNode* next) {
		this->next = next;
	}

	int getValue() {
		return value;
	}

	void setValue(int value) {
		this->value = value;
	}

private:
	int value;
	CrossLinkNode * next;
};

class CrossLink{
public:
	CrossLink(){
		linkA=new CrossLinkNode(0);
		CrossLinkNode*tmp=linkA;
		for(int i=1;i<10;i++){
			tmp->setNext(new CrossLinkNode(i));
			tmp=tmp->getNext();
		}
		linkB=new CrossLinkNode(0);
		tmp=linkB;
		for(int i=1;i<10;i++){
			tmp->setNext(new CrossLinkNode(i));
			tmp=tmp->getNext();
		}
		tmp->setNext(linkA);
	}
public:
	bool isCross(){
		CrossLinkNode*tmp=linkA;
		while(tmp!=NULL){
			CrossLinkNode*tmpB=linkB;
			while(tmpB!=NULL){
				if(tmp==tmpB){
					return true;
				}
				tmpB=tmpB->getNext();
			}
			tmp=tmp->getNext();
		}
		return false;
	}
private:
	CrossLinkNode * linkA;
	CrossLinkNode * linkB;
};

int main(){
	CrossLink link;
	cout<<(link.isCross()?"相交":"不相交")<<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、付费专栏及课程。

余额充值