Java教程

2021-09-16

本文主要是介绍2021-09-16,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1、两数之和

题目: 给定一个整数数组 num 和一个整数目标值taeget ,请你在该数组中找出 和为目标值target 的两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。

思路1:双重暴力循环,O(n^2)的时间复杂度

class Solution {
    public int[] twoSum(int[] nums, int target) {
        int [] res=new int[2];
        for (int i =0; i<nums.length;i++){
            for (int j=i+1;j<nums.length;j++)
            {
                if (nums[i]+nums[j]==target){
                    res[0]=i;
                    res[1]=j;
                    break;
                }
            }
        }
        return res;
    }
}

思路二:利用哈希表

  1. 将所给的nums数组中的数据作为key

  2. 针对nums中的每一个值,依次判断在map中是否存在,

    • 若存在,则直接返回结果

    • 若不存在,则将target-num[i]存储在map

class Solution {
    public int[] twoSum(int[] nums, int target) {
        HashMap<Integer,Integer> map = new HashMap<>();
        for(int i = 0; i < nums.length; i++){
            if(map.containsKey(nums[i])){
                return new int[]{map.get(nums[i]), i};
            }
            map.put(target - nums[i], i);
        }
        return null;
    }
}

扩展: 假如给定的target是三个数之和呢?这种情况下基于哈希表又将如何进行操作呢?


2、三数之和

给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?

请你找出所有和为 0 且不重复的三元组。

相似之处:a+b=-c,转换位两数之和即 另target=-c即可

思路:好吧,我是想在每个map.put(a-nums[i])其中a是遍历nums数组的结果,但是呢好像运行结果好像不是很理想 毕竟在leetcode上也算是一个中级难度


3、关于全栈

使用vs的.xaml进行开发

  • MVVM架构的思想

    • M -----model

    • V -----view层

    • VM-----ViewModel(用于二者之间的连接)

  • 在实际的操作中,分别建立了如下的文件夹

    • Models 用来创建实体

    • Services 提供接口和服务

    • ViewModels

      • MainPageViewModel.cs 定义变量去调用service层的接口

      • ViewModelLocator.cs 反正就是起到了一个乱七八糟的连接的作用,在SimpleIoc中获得实例以及注册,俺目前还不太清楚原理,老师说先挖坑再填坑

  • 在之前的开发过程中,数据库需要开发人员自行下载存储,本次采用数据库内嵌操作

    • private string databasePath = Path.Combine(
                Environment.GetFolderPath(
                    Environment.SpecialFolder.LocalApplicationData),
                "poetry.db");

      上述代码将会产生一个当前数据库最安全的存储文件路径.


这篇关于2021-09-16的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!