zoukankan      html  css  js  c++  java
  • 在数组中查找元素的第一个和最后一个位置

    题目:

    给定一个的整数数组 nums,

    和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。

    题目解析:

        1.给定一个数组,确定的是一个数组, 数组是整数,那么我们可以知道,那么target的也是整数。

        2.要求target的在数组中开始位置和结束位置,我们可以先找出来target的在list里面的下标位置,把这些下标位置放到list里面,我们去取list里面的第一个元素和最后一个元素,就是对应的开始位置和结束位置。

      那么我们就可以上手去实现我们的代码了。

      从这期开始,我们的代码将用python 和java两个版本去实现,同时从两方面去提高我们的,同时 也面向了两门语言的学习者。

       首先,我们先看python篇:

         

    def find(nums:list,target:int):
        listone=[]
        for i in range(len(nums)):
            if nums[i]==target:
                listone.append(i)
        if len(listone)==0:
            return False
        return listone[0],listone[-1]
    

      

    测试:

        

    class Testcase(unittest.TestCase):
        def setUp(self) -> None:
            pass
        def tearDown(self) -> None:
            pass
        def testone(self):
            result=find([1,2,3,4],5)
            self.assertFalse(result)
        def testtwo(self):
            result=find([1,2,3,4],1)
            self.assertEqual(result,(0,0))
        def testthree(self):
            result=find([1,2,3,4,1],1)
            self.assertEqual(result, (0, 4))
        def testfour(self):
            result = find([1, 2, 3, 4, 1], "1")
            self.assertEqual(result, False)
        def testfive(self):
            result = find(["1", 2, 3, 4, 1], 1)
            self.assertEqual(result, (4, 4))
        def testsix(self):
            result = find([ 1], 1)
            self.assertEqual(result, (0, 0))
    if __name__=="__main__":
        unittest.main()
    

      

    测试结果:

    ​我们可以看到目前是没有发现问题的。这样,python版本实现完毕,

    接下来我们去看看,对应的java版本是怎么实现的。

     实现代码:

        

    public class Find {
        public Map<String,Integer> findby(List<Integer> list, Integer targert){
            List<Integer> integerList=new ArrayList<>();
    
            for (int i=0;i<list.size();i++){
                if(list.get(i).equals(targert)){
                    integerList.add(i);
                }
            }
            Map<String,Integer> map=new HashMap<>();
            if (integerList.size()==0){
                map.put("first",null);
                return map;
            }else {
                map.put("first",integerList.get(0));
                map.put("last",integerList.get(integerList.size()-1));
                return map;
            }
        }
    
    
    }
    

      

    测试代码:
    public class FindTest {
    
        @org.testng.annotations.Test
        public void testFindby() {
            List<Integer> integerList=new ArrayList<>();
            integerList.add(0);
            Find find=new Find();
            Map<String,Integer>map=find.findby(integerList,1);
            assertEquals(map.get("first"),null);
        }
        @org.testng.annotations.Test
        public void testFindby1() {
            List<Integer> integerList=new ArrayList<>();
            integerList.add(0);
            Find find=new Find();
            Map<String,Integer>map=find.findby(integerList,0);
            assertEquals(map.get("first"),new Integer(0));
            assertEquals(map.get("first"),new Integer(0));
        }
        @org.testng.annotations.Test
        public void testFindby2() {
            List<Integer> integerList=new ArrayList<>();
            integerList.add(0);
            integerList.add(0);
            Find find=new Find();
            Map<String,Integer>map=find.findby(integerList,0);
            assertEquals(map.get("last"),new Integer(1));
            assertEquals(map.get("first"),new Integer(0));
        }
        @org.testng.annotations.Test
        public void testFindby3() {
            List<Integer> integerList=new ArrayList<>();
            integerList.add(0);
            integerList.add(0);
            integerList.add(0);
            Find find=new Find();
            Map<String,Integer>map=find.findby(integerList,0);
            assertEquals(map.get("last"),new Integer(2));
            assertEquals(map.get("first"),new Integer(0));
        }
        @org.testng.annotations.Test
        public void testFindby4() {
            List<Integer> integerList=new ArrayList<>();
            integerList.add(0);
            integerList.add(1);
            integerList.add(0);
            Find find=new Find();
            Map<String,Integer>map=find.findby(integerList,0);
            assertEquals(map.get("last"),new Integer(2));
            assertEquals(map.get("first"),new Integer(0));
        }
    }
    

      

    测试结果:增加了代码覆盖率,

    覆盖率

    那么我们测试完毕,根据测试覆盖率来说,我们目前的测试是已经完成了覆盖了百分之百的路径和代码。

        

         后续会陆续给大家分享更多的题目,更多的代码,大家一起成长,一起刷题。雷子说测试,带给你不一样的体验。力争所有的代码都做到100%的覆盖率,​所有代码都进行单测。​

         所有文章优先在公众号推送。

        

  • 相关阅读:
    Vue的watch监听事件
    Vue路由-命名视图实现经典布局
    Vue中使用children实现路由的嵌套
    Vue中router两种传参方式
    mysql 压缩备份 压缩还原 命令
    【转】SVN branches trunk 合并 讲解
    svn 更新提交文件冲突
    mysql 导出表数据表结构
    利用jenkins打造通过自定义参数更新svn 指定文件任务
    centos 7 安装jira 破解
  • 原文地址:https://www.cnblogs.com/leiziv5/p/11751809.html
Copyright © 2011-2022 走看看