Hướng dẫn find smallest positive number in array javascript - tìm số dương nhỏ nhất trong mảng javascript

Có nhiều cách để có được số dương nhỏ nhất trong JavaScript.

  • Loại bỏ giá trị âm khỏi một mảng và sắp xếp giá trị dương theo thứ tự tăng dần và nhận giá trị đầu tiên từ mảng.
  • Hủy bỏ giá trị âm từ một mảng và sử dụng math.min () để có được số dương nhỏ nhất trong mảng.

Mã ví dụ HTML

Thứ tự tăng dần

Sử dụng nếu câu lệnh điều kiện và vòng lặp.





  


Output::

Hướng dẫn find smallest positive number in array javascript - tìm số dương nhỏ nhất trong mảng javascript

Ví dụ chỉ nhận được số dương từ mảng js math.min





  


Đầu ra: 3: 3

Mã bình luận

if (myAtrray[i] > 0 && myArray[i]< currentLowest ){
currentLowest = myArray[i]
}
[7, -2, 3, 4, 5, -1, 6].filter((x)=> x>0);
Result : [7, 3, 4, 5, 6]

Hãy bình luận nếu bạn có bất kỳ nghi ngờ hoặc đề xuất nào về mã JS này.

Lưu ý: & nbsp; The & nbsp; tất cả các ví dụ JS & nbsp; is & nbsp; được kiểm tra trên trình duyệt firefox và trình duyệt Chrome. The All JS Examples codes are tested on the Firefox browser and the Chrome browser.

Hệ điều hành: & nbsp; windows 10Windows 10

Mã: Phiên bản HTML 5

Hướng dẫn find smallest positive number in array javascript - tìm số dương nhỏ nhất trong mảng javascript

Bằng cấp về Khoa học máy tính và Kỹ sư: Nhà phát triển ứng dụng và có nhiều ngôn ngữ lập trình kinh nghiệm. Sự nhiệt tình cho công nghệ và thích học kỹ thuật.

Tôi đang cố gắng giải quyết một vấn đề loại LeetCode là một vấn đề thực hành đi kèm với một bài kiểm tra mã sắp tới mà tôi cần phải làm cho một công việc và tôi gặp rắc rối với nó. Bất cứ ai có thể giúp tôi hiểu những gì sẽ sai?

Tôi về cơ bản đang tìm kiếm tùy chọn vũ phu vì tôi không biết algos/ds.

                                                       PROBLEM:

Viết một chức năng:

giải pháp chức năng (a);

Điều đó, với một mảng A của N số nguyên, trả về số nguyên dương nhỏ nhất (lớn hơn 0) không xảy ra trong A.

Ví dụ: cho a = [1, 3, 6, 4, 1, 2], hàm sẽ trả về 5.

Cho a = [1, 2, 3], hàm sẽ trả về 4.

Cho a = [1, 3], hàm sẽ trả về 1.

Viết một thuật toán hiệu quả cho các giả định sau:

N là một số nguyên trong phạm vi [1..100.000]; Mỗi phần tử của Array A là một số nguyên trong phạm vi [−1.000.000..1.000.000].

                            HERE IS MY SOLUTION: 

function solution(A) {
    let newArray = A.sort(function(a, b){return a-b})
        let lowestNumber = 1
        for(i=0; i < newArray.length; i++) {
            if(lowestNumber > newArray[0]) {
                return lowestNumber
            }
            if(lowestNumber == newArray[i]) {
                lowestNumber = lowestNumber + 1
            }
            if(i = newArray.length - 1) {
                return lowestNumber
            }  
    }
}

Đoạn trích dưới đây không hoạt động như tôi mong đợi. Lowestnumber không được tăng lên và cũng là vòng lặp đang thoát ra ở đây.

if(lowestNumber == newArray[i]) {
                lowestNumber = lowestNumber + 1

Cảm ơn bạn đã giúp đỡ!

function solution(A) {
  for (i = 1; i < 1000000; i++) {
    if(!A.includes(i)) return i;
  }
}

Hãy phù hợp với khoảng cách của bạn. Bạn sử dụng một không gian sau





  


0 nhưng không phải cho




  


1. Không gian giúp các cấu trúc ngôn ngữ riêng biệt với các cuộc gọi chức năng.

Đối với các ngôn ngữ sử dụng niềng răng, luôn luôn chuẩn bị một lớp lót của bạn (thiết lập rõ ràng ranh giới vòng lặp) và thích có chúng trên một dòng riêng biệt để đọc, bảo trì và gỡ lỗi (điểm dừng!).

Điều gì xảy ra nếu





  


2? Sử dụng độ dài của mảng thay vì giá trị tùy ý. Xem bên dưới.


Bạn có thể đơn giản hóa vấn đề này bằng cách lọc/phân vùng bất kỳ giá trị không tích cực nào từ mảng. Khi bạn có một loạt các số nguyên dương được lọc, bạn có thể sử dụng độ dài được lọc để xác định giới hạn trên của số nguyên dương thấp nhất. Đối với một chuỗi riêng biệt của các số nguyên \ $ d = [1, 2, 3, ..., n] \ $, số nguyên dương thấp nhất được đảm bảo là \ $ ​​n+1 \ $. Nếu bạn loại bỏ bất kỳ giá trị nào khỏi \ $ d \ $ và thay thế nó bằng bất kỳ giá trị nào khác (hoặc đơn giản là loại bỏ nó), thì số nguyên dương thấp nhất của \ $ d \ $ nằm trong phạm vi \ $ [1, n] \ $. Để tìm thấy nó, chúng ta chỉ có thể theo dõi các số nguyên trong một bảng boolean, lên đến \ $ n \ $, đánh dấu những người được chứng kiến. Một tìm kiếm tuyến tính của mảng boolean cho mục nhập chưa được đánh dấu đầu tiên sẽ cho chúng ta một chỉ số dựa trên số không dựa trên số nguyên dương thấp nhất. Thêm một để làm cho nó một lần nữa dựa trên một lần nữa. Lọc, đánh dấu nhân chứng và tìm kiếm là tất cả các hoạt động tuyến tính.\$D = [1, 2, 3, ..., n]\$, the lowest positive integer is guaranteed to be \$n+1\$. If you remove any value from \$D\$ and replace it with any other value (or simply remove it), then the lowest positive integer of \$D\$ is in the range \$[1, n]\$. To find it, we can simply track integers in a boolean table, upto \$n\$, marking the ones witnessed. A linear search of the boolean array for the first unmarked entry will give us a zero-based index of the lowest positive integer missing. Add one to make it one-based once again. Filtering, marking witnesses, and searching are all linear operations.

Lưu ý - Vì bạn biết giới hạn trên, bạn có thể thu hẹp phạm vi của mình hơn nữa bằng cách thực hiện thẻ lọc thứ hai sẽ loại bỏ bất kỳ phần tử nào lớn hơn chiều dài mảng. Sẽ giúp với địa phương dữ liệu nếu bạn có các mảng nhỏ được tải với các giá trị lớn.

Mặc dù sử dụng một mảng boolean đáp ứng yêu cầu phức tạp không gian của bạn, một giải pháp không gian không đổi tồn tại. Hãy nhớ rằng mọi yếu tố trong mảng được lọc của bạn đều dương, vì vậy chúng tôi có thể tái sử dụng bit dấu của từng giá trị như một tín hiệu mà chúng tôi đã chứng kiến ​​một giá trị của chuỗi. Chúng ta có thể sử dụng các chỉ số của mảng được lọc giống như cách chúng ta đã thực hiện mảng boolean ở trên. Thay vì tìm kiếm phần tử đầu tiên được đánh dấu Sai (Unditnessed), chúng tôi tìm kiếm giá trị đầu tiên vẫn dương.

solution(A)
    Filter non-positive values from A
    Filter values larger than min(N-1, 999999) from A
    For each int in A that wasn't filtered out
        Let a zero-based index be the absolute value of the int - 1
    For each index upto min(N-1, 999999)
        if A[index] is positive, return the index + 1 (to one-based)
    otherwise return min(N, 100000)

Vì vậy, một mảng \ $ a = [1, 2, 3, 5, 6] \ $, sẽ có các phép biến đổi sau:\$A = [ 1, 2, 3, 5, 6]\$, would have the following transformations:

abs(A[0]) = 1, to_0idx = 0, A[0] = 1, make_negative(A[0]), A = [-1,  2,  3,  5,  6]
abs(A[1]) = 2, to_0idx = 1, A[1] = 2, make_negative(A[1]), A = [-1, -2,  3,  5,  6]
abs(A[2]) = 3, to_0idx = 2, A[2] = 3, make_negative(A[2]), A = [-1, -2, -3,  5,  6]
abs(A[3]) = 5, to_0idx = 4, A[4] = 6, make_negative(A[4]), A = [-1, -2, -3,  5, -6]

Một tìm kiếm tuyến tính cho giá trị dương đầu tiên trả về một chỉ mục là 3. Chuyển đổi trở lại kết quả chỉ mục một dựa trên \ $ Solution (a) = 3 + 1 = 4 \ $\$solution(A) = 3 + 1 = 4\$

Làm thế nào bạn có thể tìm thấy số lớn nhất hoặc nhỏ nhất trong một loạt các số nguyên trong JavaScript?

Để có được số cao nhất hoặc thấp nhất từ một mảng trong javascript, bạn có thể sử dụng các phương thức math.max () hoặc math.min () sau đó truyền các phần tử từ mảng sang các phương thức này bằng toán tử lây lan (...).use the Math. max() or the Math. min() methods then spread the elements from the array to these methods using the spread operator ( ... ).

Số dương nhỏ nhất là bao nhiêu?

Vì vậy, nếu chúng ta được hỏi số nguyên dương nhỏ nhất, thì câu trả lời là 1.1.